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

Posted

技术标签:

【中文标题】根据配置文件更改部署的工件名称【英文标题】:change deployed artifact name based on profile 【发布时间】:2011-05-10 22:35:10 【问题描述】:

我在 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】:

您实际上需要在构建正在部署的包的插件上设置“分类器”配置选项: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”属性实现的。

【讨论】:

以上是关于根据配置文件更改部署的工件名称的主要内容,如果未能解决你的问题,请参考以下文章

使用 jgitflow 将工件部署到非默认的 nexus 服务器

使用 Gradle 的“仅工件表示法”和自定义工件名称

nginx 部署 多个vue项目 端口代理配置问题

十一openGaussXML配置文件

Maven 发布插件失败:源工件被部署两次

控制台应用程序在部署后未从其配置文件中获取配置值