【问题标题】:Maven plugin - edit files in target (war)Maven 插件 - 编辑目标中的文件(战争)
【发布时间】:2015-02-18 05:14:58
【问题描述】:

我正在开发一些小型 maven 插件,我需要从目标(而不是来自 src!)编辑一些 css 和 js 文件。而且我不明白我可以在哪个阶段做到这一点。

要访问 src,我使用 phases:generate-resources 和以下代码:

MavenProject project = (MavenProject) getPluginContext().get("project");
String projectDir=project.getBasedir().toString();

当所有 js、css 文件都复制到那里但没有生成 war 文件以便从目标编辑一些文件并通过对 js 和 css 文件的一些修改获得最终战争时,我如何获得目标?

编辑
我需要它干什么。我的项目中有 js 文件:a.js、b.js。我想通过 Maven 混淆它们。我的意思是,在我构建项目时混淆。当然,最终战争中的所有文件都必须经过混淆处理,但 src 中的相同文件必须不经过混淆处理。 另外,我需要将一些混淆文件合并到一个文件中。

【问题讨论】:

  • 这样做的目的是什么,你为什么喜欢这样做?
  • @khmarbaise 我需要用 js 做一些操作(混淆它们并形成其中一些的捆绑)
  • @khmarbaise 我解决此类问题的方法错了吗?
  • 为什么不在产生战争之前混淆?
  • 您能否向您展示完整的源代码和插件中的相应 pom 文件,否则很难猜出问题所在..

标签: java maven jakarta-ee


【解决方案1】:

我找到了答案。问题是我们必须在“准备包”和“打包”阶段之间添加一些逻辑。当我们使用 maven-war-plugin 时,我们可以使用exploded 目标来实现。来自官方文档:

在指定目录中创建一个展开的 webapp。

这里有必要记住一件重要的事情,maven 在 2.0.1 之后复制资源两次,所以如果我们想使用 maven 2.5,我们必须使用<useCache>true</useCache>。所以最终的解决方案:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-war-plugin</artifactId>
  <version>2.5</version>
  <executions>
    <execution>
      <id>prepare-war</id>
      <phase>prepare-package</phase>
        <goals>
          <goal>exploded</goal>
        </goals>
    </execution>
  </executions>
  <configuration>
    <useCache>true</useCache>    
 </configuration>
</plugin>

<plugin>
    <groupId>my plugin</groupId>
    <artifactId>...</artifactId>
    <version>....</version>
    <executions>
    <execution>
        <phase>prepare-package</phase>
        <goals>
            <goal>...</goal>
        </goals>
        </execution>
    </executions>
</plugin>

【讨论】:

    猜你喜欢
    • 2012-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 2018-03-12
    • 1970-01-01
    相关资源
    最近更新 更多