2011-07-29 69 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插件可以使用該屬性。

相關問題