是否有办法仅在调用mvn deploy
时排除文件,但在我致电mvn install
时包含文件?
修改
当我在本地运行jar时,我想要logback.xml
中的src/main/resources
但是当我部署它时它是一个库,logback.xml
不应该包含在内。
答案 0 :(得分:0)
不是" Maven Way"具有不同内容的工件,具体取决于其存储位置。 Maven希望artifact-1.0.jar
在远程存储库和任何本地存储库中完全相同。
你可以让项目在真正的罐子旁边创建一个分类罐子。分类的jar将包含logback.xml。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<!-- default-jar is the ID assigned to the jar:jar execution included automatically by
Maven. -->
<execution>
<id>default-jar</id>
<configuration>
<!-- not exactly sure of the exact syntax for excludes in the jar plugin -->
<excludes>
<exclude>logback.xml</exclude>
</excludes>
</configuration>
</execution>
<execution>
<id>jar-with-logging</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>logging</classifier> <!-- or whatever -->
</configuration>
</execution>
</executions>
这将创建两个工件,artifact-1.0.jar和artifact-1.0-logging.jar。两个工件都将在两个存储库中结束。如果您不希望附加日志版本(Maven术语已发布到repos),请使用maven-assembly-plugin
进行调查,{{1}}可以创建各种格式的包,而无需附加它们。
您还可以将logback.xml移动到单独的项目中,单独打包,并仅在从本地脚本运行jar时将其添加到类路径中。