Maven - 替换Jar中的文件

时间:2011-06-10 13:43:49

标签: maven-2 maven maven-plugin

我想在执行Maven构建时替换现有jar / zip文件中的文件。实现这一目标的最简单方法是什么?

2 个答案:

答案 0 :(得分:9)

我最喜欢这类任务的是maven-antrun-plugin,它为你带来了完整的蚂蚁功能。

你可以像这样使用它:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.6</version>
    <executions>
      <execution>
        <id>repack</id>
        <phase>compile</phase>
        <goals>
          <goal>run</goal>
        </goals>
        <configuration>
          <target>
            <!-- note that here we reference previously declared dependency -->
            <unzip src="${org.apache:common-util:jar}" dest="${project.build.directory}/tmp"/>
            <!-- now do what you need to any of unpacked files under target/tmp/ -->
            <zip basedir="${project.build.directory}/tmp" destfile="${project.build.directory}/common-util-modified.jar"/>
            <!-- now the modified jar is available  -->
          </target>
        </configuration>
      </execution>
    </executions>
  </plugin>

但请记住 - 从不修改本地存储库中的任何文件 - 在${org.apache:common-util:jar}指向的示例中。这样做会影响您在同一台计算机上的所有项目的进一步构建(=针对相同的本地仓库)。

此类构建在其他计算机上也是不可复制的(或难以复制)。

答案 1 :(得分:3)

我认为没有专门的插件可以执行此操作,但我认为您可以使用exec plugin和来自Updating .class file in jar的信息来完成此操作。