這是一個maven解決方案,用於動態解包現有的依賴關係,將資源添加(複製)到解壓後的文件夾中,重新打包(jar)這個洞,然後獲得初始jar的修改副本。
<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
文件將出現在Maven項目的target
文件夾。
上述插件的配置順序是重要的尊重步驟的流程作爲相同相中的一部分。
然後,你有一個額外的文件添加到您的脂肪罐子,這的確是改進的瓶你可能尋找。
如果你並不需要一個動態的方法,更好的辦法是做一次,有一個機密版本的依賴在this other SO post解釋。
或者,將其移動到Maven profile,以便至少它不是默認構建的一部分。
澄清:你需要添加一個文件到一個外部庫,一個maven的依賴jar? –
是的。該文件將被插入到jar文件中,該文件文件在pom.xml中作爲maven依賴項添加 –
您需要的文件被列爲依賴項,並且它不在tar生成的文件中?這很奇怪...... –