Maven 在何处指定Artifactory发行版的存储库元素?
我正试图在Artifactory存储库中发布一个项目。这是一个依赖于我的主项目的项目,所以我想把pom、.jar和sources.jar放在artifactory存储库中 settings.xml文件存储在maven目录中:Maven 在何处指定Artifactory发行版的存储库元素?,maven,pom.xml,artifactory,maven-release-plugin,Maven,Pom.xml,Artifactory,Maven Release Plugin,我正试图在Artifactory存储库中发布一个项目。这是一个依赖于我的主项目的项目,所以我想把pom、.jar和sources.jar放在artifactory存储库中 settings.xml文件存储在maven目录中: D:\...\...\maven\apache-maven-3.3.1\conf 我已经使用以下maven命令标记了该版本: mvn clean release:prepare 那么,如果我尝试: mvn clean release:perform –Parti
D:\...\...\maven\apache-maven-3.3.1\conf
我已经使用以下maven命令标记了该版本:
mvn clean release:prepare
那么,如果我尝试:
mvn clean release:perform –Partifactory
,我得到一个错误:
[INFO][ERROR]未能在项目上执行目标org.apache.maven.plugins:maven部署插件:2.7:deploy(默认部署)…:部署失败:未在POM inside distributionManagement元素或-DaltDeploymentRepository=id::layout::url参数中指定repository元素
我应该如何使用artifactory概要文件?是否可以不更改pom?
我尝试在本地maven存储库中复制settings.xml,但没有成功
如果我必须更改pom,我可以在mvn发布后获得的状态之前首先返回:prepare命令吗?在下面的链接中,我不知道是否必须手动执行某些操作(从SCM中删除标记):
settings.xml文件:
D:\…\…\maven\repository
假的
中心的
libs发布
http://x/artifactory/libs-release
快照
libs快照
http://x/artifactory/libs-snapshot
假的
中心的
插件发布
http://x/artifactory/plugins-release
快照
插件快照
http://x/artifactory/plugins-snapshot
人工制品
人工制品
pom:
....
我的父母
1.0.6
4.0.0
....
我的项目
罐子
1.9.6-快照
我的项目
${wiki.url}
scm:svn:http://x/svn/main/y/Development/Components/trunk/myproject
http://x/svn/main/y/Development/Components/trunk/myproject
${ciManagement.system}
${ciManagement.url}/${project.artifactId}
假的
org.apache.maven.plugins
maven发布插件
2.4.1
http://x/svn/main/y/Development/Components/tags
父pom:
4.0.0
....
我的父母
聚甲醛
1.0.6
我的父母
${wiki.url}
scm:svn:http://x/svn/main/y/Development/Components/tags/my-parent-1.0.6
http://x/svn/main/y/Development/Components/tags/my-parent-1.0.6
${ciManagement.system}
${ciManagement.url}/${project.artifactId}
org.apache.maven.plugins
maven编译器插件
3.1
1.6
1.6
真的
org.apache.maven.plugins
maven源插件
2.2.1
附加来源
罐子
org.apache.maven.plugins
maven站点插件
3.3
两件事。您应该在POM中声明
部分:
<project>
...
<distributionManagement>
<repository>
<id>my-artifactory</id>
<name>Artifactory Release Repo</name>
<url>http://x/artifactory/libs-release</url>
</repository>
<snapshotRepository>
<id>my-artifactory</id>
<name>Artifactory Release Repo</name>
<url>http://x/artifactory/libs-snapshot</url>
</snapshotRepository>
</distributionManagement>
</project>
现在,也就是说,既然mvn release:prepare
已经在您的VCS中标记了该版本,您不需要剪切新版本,但我建议您将
部分添加到POM中。部署工件的一种方法是简单地从VCS获取标记,然后执行mvn部署
,如下所示:
svn co <the url to your tag>
mvn -DaltDeploymentRepository=my-artifactory::default::http://x/artifactory/libs-release deploy
svn公司
mvn-DaltDeploymentRepository=my artifactory::default::http://x/artifactory/libs-release 部署
谢谢您的回答。实际上,我不理解mvn部署和mvn发布之间的区别:执行。他们是否都将项目复制到远程存储库?他们中有人做得更多吗?第二个问题:如果settings.xml中的存储库信息已经存在于pom中,那么它们有什么用呢?嗯,mvn deploy
只做了这样的事情:部署工件<代码>发布:执行拾取发布:准备
停止的位置。通过使用release:prepare
阶段的release.properties
文件中的信息,release:perform
实际上将根据您的设置,从release:prepare
和deploy
期间创建的标记执行签出。因此,这两个命令都部署所有工件(pom、sources.jar、jar、javadoc.jar、war)它们是否在pom中定义?是的,但是发布版插件将转换pom、标记、提交、推送(用于git)等。此外,两者都需要
部分来部署。我尝试了您推荐的更改:未能执行goal org.apache.maven。插件:maven部署插件:2.7:deploy项目myproject上的(默认部署):检索远程元数据失败…:myproject:1.9.6-SNAPSHOT/maven-metadata.xml:无法将元数据传输…:myproject:1.9.6-SNAPSHOT/maven-metadata.xml从/传输到我的工件():无法传输文件:…/myproject/1.9.6-SNAPSHOT/maven-metadata.xml。返回代码为:502,原因短语:代理错误。您认为这是artifactory的用户/密码问题吗?
svn co <the url to your tag>
mvn -DaltDeploymentRepository=my-artifactory::default::http://x/artifactory/libs-release deploy