Maven - заменить файл в банке - PullRequest
4 голосов
/ 10 июня 2011

Я хочу заменить файл в существующем файле jar / zip во время сборки Maven.Какой самый простой способ добиться этого?

Ответы [ 2 ]

9 голосов
/ 17 августа 2011

Мой фаворит для такого рода задач - 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}. Это может повлиять на ваши дальнейшие сборки всех ваших проектов на одном компьютере (= против того же локального репо).

Такие сборки также невоспроизводимы (или их трудно воспроизвести) на других машинах.

3 голосов
/ 10 июня 2011

Я не думаю, что для этого есть специальный плагин, но я думаю, что вы можете использовать exec плагин и информацию из Обновление .class файла в jar для этого.

...