Maven mvn部署:将文件部署到不同的存储库以获取快照和发布版本

Maven mvn部署:将文件部署到不同的存储库以获取快照和发布版本,maven,maven-plugin,maven-deploy-plugin,Maven,Maven Plugin,Maven Deploy Plugin,根据项目的版本是否为快照/发布版本,是否可以以某种方式告诉maven deploy:file目标将部署到两个独立的工件 我希望有一个属性可以指示版本已经预先设置了快照,或者可能是要部署到的默认工件(已经根据版本号计算出来) 我考虑过使用两个不同的概要文件,并通过解析pom.xml文件来确定它是否是ant中的快照,但如果可能的话,我宁愿使用更干净的解决方案 目前,我的部署插件如下所示,但不管版本如何,它只部署到发布工件 <plugin> <groupId>org.ap

根据项目的版本是否为快照/发布版本,是否可以以某种方式告诉maven deploy:file目标将部署到两个独立的工件

我希望有一个属性可以指示版本已经预先设置了快照,或者可能是要部署到的默认工件(已经根据版本号计算出来)

我考虑过使用两个不同的概要文件,并通过解析pom.xml文件来确定它是否是ant中的快照,但如果可能的话,我宁愿使用更干净的解决方案

目前,我的部署插件如下所示,但不管版本如何,它只部署到发布工件

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-deploy-plugin</artifactId>
   <version>2.5</version>
   <executions>
      <execution>
        <id>deploy-zip-created-by-ant-to-artifactory</id>
    <phase>deploy</phase>
    <goals>
       <goal>deploy-file</goal>
    </goals>
    <configuration>
       <repositoryId>${project.distributionManagement.repository.id}</repositoryId>
       <url>${project.distributionManagement.repository.url}</url>
       <file>${project.basedir}/Build/deploy/MyArtifact.zip</file>
       <pomFile>${project.basedir}/MyArtifact-pom.xml</pomFile>
    </configuration>
      </execution>
   </executions>
</plugin>

org.apache.maven.plugins
maven部署插件
2.5
将ant创建的zip部署到artifactory
部署
部署文件
${project.distributionManagement.repository.id}
${project.distributionManagement.repository.url}
${project.basedir}/Build/deploy/MyArtifact.zip
${project.basedir}/MyArtifact-pom.xml

非常感谢

如果您在settings.xml中定义了存储库,您可以使用

mvn deploy:deploy-file -DrepositoryId=releases -DartifactId=... -Durl=

这大概是Maven的方式:

  <distributionManagement>
    <repository>
      <id>release</id>
      <url>http://my-releases</url>
    </repository>
    <snapshotRepository>
      <id>snapshots</id>
      <url>http://my-snapshots</url>
    </snapshotRepository>
  </distributionManagement>

释放
http://my-releases
快照
http://my-snapshots
在部署快照版本时,它将进入快照存储库。对于非快照版本,将使用常规存储库

只要运行deploy,它就会工作。:-)

最后,我使用GMaven插件从POM的
distributionManagement
部分选择存储库,并将其存储在属性中


然后部署插件可以使用该属性。

也许您想使用来部署额外的工件

为什么要对deploy:file执行此操作?您不是在使用mvn release:prepare和release:perform吗?我还不完全理解maven,但我们正在尝试迁移一个复杂的ant构建,以便它使用maven来管理依赖项并发布ant生成的工件。maven target deploy:file似乎是指定我们想要部署的文件的最简单的方法。maven for release的思想是将工件部署到发布存储库(由distributionManagement区域定义),并带有可能的补充工件(如javadoc、sources等)。在发布过程中,像1.2.3-SNAPSHOT这样的版本将更改为1.2.3,pom的etc将自动更新,下一个开发步骤将增加到(1.2.4-SNAPSHOT),而1.2.3工件将被编译、测试等,并部署到发布存储库中。这是真的。但我们在这里试图实现的是将ant生成的工件部署到maven存储库中。我们维护两个独立的存储库,一个用于快照,一个用于发布。这个想法是基于作为系统属性传递给maven的外部环境属性将ant生成的工件部署到适当的工件上。我不明白的是,当可以使用id从settings.xml配置文件中查找url时,为什么除了id之外还必须指定存储库的url。谢谢谢谢你的回复。那就行了。:-)不幸的是,
deploy:deploy file
并不关心
distributionManagement
中的设置,而是希望您指定要部署到的URL。