gpt4 book ai didi

maven - 如何控制 Maven Artifact 的组/Artifact/版本坐标?

转载 作者:行者123 更新时间:2023-12-05 08:24:17 25 4
gpt4 key购买 nike

在我的 Maven 构建结束时,一个用于此明确目的的模块从各种其他模块收集 Artifact ,并使用 Assembly 插件将它们压缩到一个存档中。完成后,它会使用 Deploy 插件将它们部署到 Nexus。

由于历史原因,这个打包模块被称为bundle,所以 Artifact 最终被称为mygroup:bundle,因此被归类在Nexus中。

我宁愿让它们显示在 mygroup:myprojectname 下,但我不知道如何将它们部署到那个位置。我尝试配置 Deploy 插件的 deploy-file 目标来更改坐标,但没有成功。作为一个额外的并发症,项目的主要代码模块已经被称为 myprojectname,因此该组在部署时不是空的。不过,多亏了分类器和类型,无需覆盖任何内容。

如果不重命名模块,我能以某种方式做到这一点吗?

最佳答案

部署插件具有所有必要的功能:
您可以在其配置中设置 G/A/V 坐标,并将任意数量的附加 Artifact 部署到您想要的任何坐标。但是,它不会自动部署到您的 distributionManagement 部分中给定的存储库 URL。

为了避免重复,我最终求助于 GMaven 插件,用它来检查项目版本(是否以 -SNAPSHOT 结尾)并使用直接从相应的 URL 获取的 URL 设置一个新属性distributionManagement 部分。

这是两个插件的配置:

          <plugin>
<groupId>org.codehaus.groovy.maven</groupId>
<artifactId>gmaven-plugin</artifactId>
<executions>
<execution>
<id>choose-target-repository</id>
<phase>initialize</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<source>
if (project.version.endsWith("-SNAPSHOT")){
project.properties.targetrepository = project.distributionManagement.snapshotRepository.url;
}
else {
project.properties.targetrepository = project.distributionManagement.repository.url;
}
</source>
</configuration>
</execution>
</executions>

           <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.7</version>
<configuration>
<skip>true</skip>
</configuration>
<executions>
<execution>
<id>deploy-myclassifier</id>
<phase>deploy</phase>
<goals>
<goal>deploy-file</goal>
</goals>
<configuration>
<file>
${project.build.directory}/${project.artifactId}-${project.version}-myclassifier.zip
</file>
<groupId>${project.groupId}</groupId>
<artifactId>myprojectname</artifactId>
<version>${project.version}</version>
<classifier>myclassifier</classifier>
<repositoryId>nexus</repositoryId>
<url>http://url-to-nexus</url>
</configuration>
</execution>
</executions>
</plugin>

关于maven - 如何控制 Maven Artifact 的组/Artifact/版本坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13621415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com