13

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

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

Hudson 有两份工作,一份用于 qa 配置文件 (-P qa),另一份用于客户。

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

我使用(在谷歌搜索后)以下看起来在 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>

有人有什么想法吗?

4

1 回答 1

15

您实际上需要在构建正在部署的包的插件上设置“分类器”配置选项: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
  • 战争插件
    • 战争名称
  • Ear|Jar|Rar|Shade 插件
    • 最终名称
  • EJB 插件
    • 罐子名称

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

于 2010-11-30T01:24:09.997 回答