我有一个
的src /主/资源/的log4j.xml
文件,当我执行mvn assembly:assembly
时,我希望将其包含在jar中,但在执行mvn package
时将其排除在外。我怎么能这样做?
我已经在这里阅读了几个maven文档和问题,但到目前为止我还是无法做到这一点。我尝试了很多方法,但都失败了。
基本上,我在我的pom的<build><plugins>
部分:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
然后在<build>
部分
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>src/main/resources/log4j.xml</exclude>
</excludes>
</resource>
</resources>
但我随处可见log4j.xml。
答案 0 :(得分:2)
您放置在<exclude>
或<include>
元素中的任何内容都被视为相对于指定的<directory>
。所以,他们现在就拥有它,Maven将尝试排除可能不存在的资源${basedir}/src/main/resources/src/main/resources/log4j.xml
。尝试像这样设置资源元素:
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>**/log4j.xml</exclude>
</excludes>
</resource>
作为旁注,assembly:assembly
目标已弃用。根据{{3}},请改为使用single
目标。
答案 1 :(得分:0)
org.apache.maven.plugins
可以在打包阶段对包含或排除文件进行很好的简单控制!
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<excludes>
<exclude>**/password.properties</exclude>
</excludes>
</configuration>
</plugin>