2009-08-14 190 views
22

我在谷歌代碼上託管了一個小型的開源項目,並且我被要求將這個jar提交給一個可公開訪問的Maven倉庫。我幾乎沒有Maven的實踐知識。什麼是最好的方法來做到這一點?谷歌代碼項目的Maven倉庫

是否有一些中央存儲庫可以提交給我,還是我可以託管自己的?當我想發佈一個新版本的jar時,我需要做什麼?

我一直在谷歌搜索,發現this,看起來不錯,簡單,但它似乎有點......違背Maven的精神,提交jar文件到SVN :)。

另外,是否還有一種方法可以跟蹤Google代碼的下載計數?

編輯

我已經得到了一些答案,其中包含有關如何添加到我的pom.xml提示一些。多謝你們!但顯然我忘了提到一件重要的事情:我的構建腳本在ANT中,並且直截了當地說,我打算保持這種方式:)。我只是想讓Maven用戶更容易將我的jar包含在他們的項目中。


我到底

到底去解決方案,我沒有使用的解決方案,我referenced之前,在這裏我只是犯了Maven的回購協議SVN。我有ANT腳本調用Maven來設置本地回購,然後調用SVN將其提交給Google代碼。對於那些感興趣的人:看看我的構建腳本here,在publish-maven目標。

+0

哪個開源項目是由道路? – 2009-08-25 15:16:41

+0

@Bno請參閱http://code.google.com/p/equalsverifier/ – jqno 2010-07-23 20:37:08

+0

thx,看起來非常酷! – 2010-07-26 07:50:01

回答

24

有一個guide to the central repository,其對上傳的項目,可以幫助的部分。如果沒有其他的東西,你可以檢查你的項目的命名約定和最低限度的信息要求。

Sonatype也可以執行OSS存儲庫託管,詳情請參閱their guide

更新:我不是說你應該改變你的構建過程 - 如果Ant爲你工作,堅持下去。無論您的構建方法如何,值得在POM中遵循Maven約定。因爲將你的jar放到Maven倉庫中的目的是爲了讓Maven用戶可以訪問它,所以你需要爲你發佈的工件定義一個POM。遵循命名約定將有助於您的用戶,所以您不妨做到這一點。例如,將SCM細節添加到pom中(除其他外)將允許用戶使用Maven的IDE集成將項目導入到其工作空間中。

基本上,你有4個選項:

  1. 執行標準Maven構建針對Maven倉庫(已排除)
  2. 設置Maven倉庫,做您的構建與Ant和使用Maven部署jar和POM。
  3. 設置Maven倉庫,廣告使用Ant HTTP任務發佈文物
  4. 使用Subversion「資源庫」,並使用SvnAnt任務發佈的文物

選項1

使用Maven構建和部署工件(有關詳細信息,請參閱Maven book和上述鏈接)。


選項2

假設你有一個創建你的罐子構建過程中,你已經定義了POM,最好的辦法是把它當作上面發佈到Sonatype的OSS庫。

部署現有的JAR標準Maven倉庫是簡單的使用Maven部署插件的部署文件的目標:

  1. (通過提高Jira request例如Sonatype的服務器上)
  2. 構建設置你的資料庫你的jar與螞蟻。
  3. 如果你已經定義了一個POM,把它放在與jar相同的目錄中。
  4. 運行部署文件的目標:

    MVN部署:部署文件-Durl = http://path/to/your/repository \ -DrepositoryId = some.id \ -Dfile =路徑到您的僞影罐子\ - DpomFile =路徑到您的-的pom.xml

需要注意的是Maven的部署目標將自動翻譯的pom.xml到[項目名稱] - [版本] .pom。如果您正在執行其他兩種選擇之一,則需要確保您提交最終名稱的POM,即[項目名稱] - [版本] .pom。您還需要確保遵循Maven約定來編寫工件的相對路徑。

E.g.爲的groupId = com.foo.bar,artifactId的=我的項目版本1.0.0 =,路徑的文件將是:

/com/foo/bar/my-project/my-project-1.0.0.jar 
/com/foo/bar/my-project/my-project-1.0.0.pom 

選項3

如果你想使用Ant部署到一個Maven倉庫,你可以使用一個Ant HTTP library(注意我沒有嘗試過這個)。你會編寫兩個HTTP put任務,一個用於jar,一個用於POM。

<httpput url="http://path/to/your/repository" putFile="/path/to/yourproject.pom"> 
    <userCredentials username="user" password="password"/> 
</httpput> 
<httpput url="http://path/to/your/repository" putFile="/path/to/yourproject.jar"> 
    <userCredentials username="user" password="password"/> 
</httpput> 

選項4

如果你想完全避免Maven和使用Ant部署到SVN支持庫,你可以使用SvnAnt Subversion library。您只需配置Svn import任務即可將工件添加到Remote Subversion存儲庫。

<import path ="/dir/containing/the/jar/and/pom" 
    url="svn://your/svn/repository" 
    message="release"/> 
+0

謝謝,這篇文章相當有幫助。 – javamonkey79 2011-11-04 01:26:10

1

檢查Maven存儲庫是否支持maven deploy plugin。這將是最簡單的方法。

大多數存儲庫使用ssh作爲傳輸。有關詳細信息,請參閱this

一旦它的設置中,所有你需要做的是:

mvn deploy:deploy 
+0

謝謝!看起來很有趣。不幸的是,我的構建腳本在ANT中。我不認爲有一個ANT類似的插件:)? – jqno 2009-08-15 08:49:53

7

Check wagon-svn。它將允許你'部署'到一個Subversion版本庫。這有點複雜,但總比沒有好。我知道一些在java.net上使用它的項目,我也遇到了一些在code.google.com上使用它的項目。

如果你想使用它,那麼你首先需要裝載貨車 - svn的作爲擴展:

<build> 
    ... 
    <extensions> 
     <extension> 
     <groupId>org.jvnet.wagon-svn</groupId> 
     <artifactId>wagon-svn</artifactId> 
     <version>...</version> 
     </extension> 
    </extensions> 

接下來,你需要使用svn設置您的部署目標:協議標識符。這是我從互聯網複製的一個例子。

<distributionManagement> 
    <repository> 
     <id>maven-config-processor-plugin-repo-releases</id> 
     <name>Maven Repository for Config Processor Plugin (releases)</name> 
     <url>svn:https://maven-config-processor-plugin.googlecode.com/svn/maven-repo/releases</url> 
     <uniqueVersion>false</uniqueVersion> 
    </repository> 
    <snapshotRepository> 
     <id>maven-config-processor-plugin-repo-releases</id> 
     <name>Maven Repository for Config Processor Plugin (snapshots)</name> 
     <url>svn:https://maven-config-processor-plugin.googlecode.com/svn/maven-repo/snapshots</url> 
     <uniqueVersion>false</uniqueVersion> 
    </snapshotRepository> 
</distributionManagement> 
+0

這樣就可以將部署過程自動化到SVN上,在我的問題中提到的博客文章之後,對吧?我不認爲ANT也有這樣的東西:)? – jqno 2009-08-15 08:53:02

+0

你可以使用Maven與wagon-svn。您不必創建一個完整的Maven項目,只需創建一個Maven POM進行部署即可。所以你不使用Maven構建系統。使用Ant構建JAR,然後使用'mvn deploy:deploy-file'和適當的POM來配置wagon-svn和「svn maven倉庫」。 – 2010-03-21 20:24:08

+0

上面的wagon-svn配置不完整,您還需要添加java.net存儲庫。欲瞭解更多信息,請訪問:https://wagon-svn.dev.java.net/ – 2010-03-21 20:25:50

0

您可以提交罐子https://clojars.org/

在你pom.xml

<repositories> 
    <repository> 
    <id>clojars.org</id> 
    <url>http://clojars.org/repo</url> 
    </repository> 
</repositories>