Maven在部署时仅排除某些文件

时间:2014-12-10 02:38:29

标签: maven

是否有办法仅在调用mvn deploy时排除文件,但在我致电mvn install时包含文件?

修改 当我在本地运行jar时,我想要logback.xml中的src/main/resources但是当我部署它时它是一个库,logback.xml不应该包含在内。

1 个答案:

答案 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时将其添加到类路径中。