根据配置文件更改已部署的工件名称

时间:2010-11-16 16:43:29

标签: maven profile nexus classification maven-deploy-plugin

我有一个Web应用程序的pom文件,一个构建配置文件,它为qa测试做了一些必要的事情(在我的代码中)。

我在svn上有这个代码,这个代码是在Hudson中编译的,它在nexus中部署了工件。

Hudson有两个职位,一个用于qa个人资料(-P qa),另一个用于客户。

我需要的是我在部署阶段更改我的qa配置文件中的工件名称,以便nexus有两个不同的war文件,一个用于qa,另一个用于客户。

我使用(在Google搜索之后)以下内容,看起来它在hudshon中什么也没做!

    <profile>
        <id>qa</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>2.5</version>
                    <configuration>
                        <classifier>qa</classifier>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>

任何人的想法?

1 个答案:

答案 0 :(得分:13)

您实际上需要在构建正在部署的软件包的插件上设置“分类器”配置选项:maven-(ear | ejb | jar | rar | war | shade)-plugin:

例如,要使用qa分类器构建WAR,您可以执行以下操作:

<profile>
    <id>qa</id>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.1.1</version>
                <configuration>
                    <classifier>qa</classifier>
                </configuration>
            </plugin>
        </plugins>
    </build>
</profile>

此外,您可以设置以下任何一种分类器,而不是设置分类器(大多数默认为project.build.finalName,因此设置该属性会更新其中的许多内容):

  • 一般
    • project.build.finalName
  • 战争插件
    • warName
  • Ear | Jar | Rar | Shade Plugin
    • finalName
  • EJB插件
    • 的JARname

最后一点说明:我之前从未意识到这一点,但查看文档,看起来RAR插件不支持“分类”选项。 Shade确实支持分类器概念,但是通过“shadedClassifierName”属性来实现。