Maven 在何处指定Artifactory发行版的存储库元素?

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

我正试图在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 –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