当与“分类器”标签一起使用时,Maven生成两个jar文件

时间:2012-10-25 03:39:12

标签: java maven build

我的项目要求我采用开源代码,对其进行调整并将其用作依赖项。当我构建它时,我想用它附加一个分类器(以便区分修改代码和原始代码)。以下是pom.xml的代码段。

<plugins>
    <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <executions>
            <execution>
                <id>gc-custom</id>
                <goals>
                    <goal>jar</goal>
                </goals>

                <configuration>
                    <classifier>gc</classifier>
                </configuration>
            </execution>
        </executions>
    </plugin>
</plugins>  

我的问题是,在我触发构建之后,maven生成两个jar文件(附加和不附加分类器),即输出包含2个名为“atlassian-pageobjects-api-2.1-m14.jar”的jar文件,“atlassian-pageobjects” -API-2.1-M14-gc.jar”。

我正在使用以下命令来构建:

mvn clean install

请帮忙,让我知道这里有什么问题。

1 个答案:

答案 0 :(得分:7)

查看文档时,似乎分类器用于生成其他jar。

请参阅here

  

通过添加/或/指定要包含或排除的文件集模式列表,并在pom.xml中添加分类器。

     

注意:必须在新的执行中定义jar-plugin,否则它将替换jar-plugin的默认使用,而不是添加第二个工件。分类器还需要创建多个工件。

因此,根据文档,听起来好像你没有提供<id>执行它会覆盖默认的jar机制并给你一个带有-gc.jar附录的jar。但它没有。你总是最终得到两个罐子。

我已经破解了一下,您可以使用默认插件ID 覆盖默认设置。所以,这就是给我一个名为-gc.jar的jar的内容。

<build>
  <plugins>
    ...
    <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <executions>
            <execution>
                <id>default-jar</id>
                <phase>package</phase>
                <goals>
                    <goal>jar</goal>
                </goals>
                <configuration>
                    <classifier>gc</classifier>
                </configuration>
            </execution>
        </executions>
    </plugin>
  </plugins>  
</build>