我需要向Artifactory部署一个自定义jar以及从我的Java项目生成的jar。目前我能找到的唯一方法是使用命令行目标:
mvn deploy:deploy-file -DgroupId=<group-id> \
-DartifactId=<artifact-id> \
-Dversion=<version> \
-Dpackaging=<type-of-packaging> \
-Dfile=<path-to-file> \
-Durl=<url-of-the-repository-to-deploy>
有没有办法在pom文件中包含这个?作为插件还是什么?
答案 0 :(得分:12)
不确定。只需定义绑定到deploy
阶段的maven-deploy-plugin:deploy-file
目标的执行,并使用您的值进行配置。部署项目时,将调用此执行并部署JAR。
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
<executions>
<execution>
<id>deploy-file</id>
<phase>deploy</phase>
<goals>
<goal>deploy-file</goal>
</goals>
<configuration>
<file><!-- path-to-file --></file>
<url><!-- url-of-the-repository-to-deploy --></url>
<groupId><!-- group-id --></groupId>
<artifactId><!-- artifact-id --></artifactId>
<version><!-- version --></version>
<packaging><!-- type-of-packaging --></packaging>
</configuration>
</execution>
</executions>
</plugin>
请注意,您可能还需要添加repositoryId
。这是要在<id>
的{{1}}部分<server>
下映射的服务器ID。
答案 1 :(得分:0)
您可以将custom maven settings.xml上传到TeamCity,您必须在其中指定发布管理和服务器on this documentation page。在此之后,如果您更改maven构建步骤以使用上载的设置,则只需在此步骤中将deploy gial添加到已执行目标集即可完成部署。
答案 2 :(得分:0)
Artifactory手册中的Working with Maven部分详细介绍了此主题,特别是关于deploying artifacts的部分。
此外,您还可以观看有关setting Artifactory as a Maven repository的截屏视频。
要通过Artifactory部署构建工件,必须将distributionManagement元素添加到项目pom文件中,并使用要将工件部署到的目标本地存储库的URL。此外,您需要在settings.xml文件中configure使用Artifactory服务器凭据 Artifactory可以帮助生成distributionManagement片段和settings.xml(请参阅我上面提供的链接中的更多信息)。
答案 3 :(得分:0)
我个人认为在POM中声明它是一种很好的方法。
例如,如果您有一个多模块Maven项目,其中包含从父POM / super POM继承的子POM,并且要上载的自定义jar仅包含在子模块中的1个中,那么您必须在父模块中显式声明配置POM(因为mvn deploy
通常用于执行superpom)并声明每个其他子POM跳过配置的执行,这会使POM结构变得混乱。
更好的方法是编写脚本,并将其链接到deploy
目标的运行配置,因为deploy:deploy-file
目标是在构建生命周期结束时。