Вот решение maven для динамической распаковки существующего зависимость, добавить (копию) ресурс в распакованную папку, упакуйте (банка) в отверстие и, таким образом получить модифицированную копию исходной баночки
файл образца POM делать точно, что для junit
зависимости:.
<build>
<plugins>
<!-- unpack step -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<executions>
<execution>
<id>unpack</id>
<phase>prepare-package</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<type>jar</type>
<outputDirectory>${project.build.directory}/unpack-tmp</outputDirectory>
<includes>**/*.class,**/*.xml</includes>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
<!-- add the additional resource step -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/unpack-tmp</outputDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
<include>test.properties</include>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<!-- repack step -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>repack</id>
<phase>prepare-package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classesDirectory>${basedir}/target/unpack-tmp</classesDirectory>
<finalName>junit-modified</finalName>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Что это на самом деле делает:
Запуск образца выше, файл junit-modified.jar
появится в target
папке проекта Maven.
Порядок конфигураций плагинов, приведенный выше, важен для того, чтобы учитывать поток шагов как часть одной и той же фазы.
Затем у вас есть один дополнительный файл для добавления в вашу жирную банку, которая действительно является модифицированной банкой, которую вы, вероятно, искали.
Если вам не нужен динамичный подход, лучший подход должен был бы сделать это один раз и имеют секретную версию этой зависимости, как описано в this other SO post.
В качестве альтернативы переместите его на Maven profile так, чтобы он, по крайней мере, не являлся частью сборки по умолчанию.
, чтобы уточнить: вам нужно добавить файл в банку, которая является внешней библиотекой, зависимостью от maven? –
Да. файл должен быть вставлен в банку, которая добавляется как зависимость maven в pom.xml –
Файл, который вы хотите, указан как зависимость, и он не находится в файле сгенерированного tar? Thats odd ... –