2011-07-29 41 views
18

是否有可能在某种程度上告诉maven部署:文件目标根据项目的版本是快照/发布部署到两个独立的工件?mvn部署:文件到不同的存储库的快照和发布版本

我希望可能有一个属性,指示版本具有-SNAPSHOT前置的事实,或者可能需要部署的默认工件(已根据版本号计算出)。

我想过使用两个不同的配置文件,并通过解析pom.xml文件来了解它在ant中的快照,但是如果可能的话我宁愿使用更清晰的解决方案。

目前,我的部署插件看起来如下,但这只是部署到发布artifactory,无论版本;

<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> 

非常感谢

+0

你为什么喜欢为部署做:文件?你不使用mvn发布:准备和发布:执行? – khmarbaise

+0

我完全不了解maven,但我们正在尝试迁移复杂的ant构建,以便它使用maven来管理依赖关系并发布ant生成的构件。 Maven目标部署:文件似乎是指定我们想要部署的文件的最简单方式。 – extorn

+0

Maven发布的想法是将工件部署到版本库(由distributionManagement区域定义)与可能的补充工件(如javadoc,源代码等)。在发布过程中,像1.2.3-SNAPSHOT这样的版本将更改为1.2.3,并且pom的等会自动更新,下一个开发步骤将增加到(1.2.4-SNAPSHOT),而1.2.3的文物将会编译,测试等,并部署到发布版本库。 – khmarbaise

回答

8

如果你的settings.xml中定义的版本库,你可以使用

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

感谢您的回复。那会做。 :-) – extorn

-2

这大概是Maven的方式:

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

做当一个快照版本的部署,它将进入快照库。对于非快照版本,将使用常规存储库。

只运行部署,它会工作。 :-)

+4

不幸的是''deploy:deploy-file''不关心''distributionManagement''中的设置,而是希望你指定你想要部署的URL。 –

3

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

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

相关问题