[英]Maven Assembly Plugin And Resources
當使用Maven程序集插件(版本2.2-beta-5)時,如果它們具有相同的路徑,則看起來組裝的jar將包含來自依賴項的資源,而不是正在組裝的項目。 具體來說,我試圖弄清楚如何使用項目的log4j配置文件,而不是依賴項目。
PROJECT1
-src
- 主要
---資源
----的log4j.xml
如果Project1有依賴項 - 稱之為Project2 - 在src / main / resources中也有一個log4j.xml文件,那么在運行程序集插件后,組裝的jar包含Project2的log4j.xml文件而不是Project1。 我相信這是因為所有的依賴項首先被解壓縮,因此當它嘗試解壓縮頂層項目時,log4j.xml文件已經存在,因此它不會被覆蓋。
是否有一個make程序集插件使用項目的文件而不是依賴項?
這樣的事情應該有效:
<assembly>
<id>without-log4j-config</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<unpack>true</unpack>
<scope>runtime</scope>
<unpackOptions>
<excludes>
<exclude>**/log4j.xml</exclude>
<exclude>**/log4j.properties</exclude>
</excludes>
</unpackOptions>
</dependencySet>
</dependencySets>
<files>
<file>
<source>pom.xml</source>
<outputDirectory>/</outputDirectory>
</file>
</files>
<fileSets>
<fileSet>
<useDefaultExcludes>false</useDefaultExcludes>
<outputDirectory>/</outputDirectory>
</fileSet>
<fileSet>
<directory>src/main/java</directory>
<outputDirectory>/</outputDirectory>
</fileSet>
<fileSet>
<directory>src/main/resources</directory>
<outputDirectory>/</outputDirectory>
</fileSet>
</fileSets>
<moduleSets>
<moduleSet>
<includeSubModules>false</includeSubModules>
<sources>
<outputDirectoryMapping>/</outputDirectoryMapping>
<excludeSubModuleDirectories>false</excludeSubModuleDirectories>
<fileSets>
<fileSet>
<directory>src/main/java</directory>
<outputDirectory>/</outputDirectory>
</fileSet>
<fileSet>
<directory>src/main/resources</directory>
<outputDirectory>/</outputDirectory>
</fileSet>
</fileSets>
</sources>
<binaries>
<dependencySets>
<dependencySet>
<unpack>true</unpack>
</dependencySet>
</dependencySets>
</binaries>
</moduleSet>
</moduleSets>
</assembly>
你需要在你的pom中使用它:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<appendAssemblyId>true</appendAssemblyId>
<descriptors>
<descriptor>src/main/resources/whatever-you-name-the-snippet-above.xml</descriptor>
</descriptors>
</configuration>
</plugin>
這是一個重要的部分:
<appendAssemblyId>true</appendAssemblyId>
沒有它,如果你運行mvn assembly:assembly
你的自定義程序集將被覆蓋。
一種可能性是從程序集創建中明確排除相關文件。
<dependencySet>
<outputDirectory>/</outputDirectory>
<includes>
<include>${project.groupId}:Project2</include>
</includes>
<unpack>true</unpack>
<unpackOptions>
<excludes>
<exclude>**/log4j.xml</exclude>
</excludes>
</unpackOptions>
</dependencySet>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.