2009-08-14 10 views
22

私はGoogle Codeで小さなオープンソースプロジェクトをホストしています。公開されているMavenリポジトリにjarファイルを提出するように求められました。私はMavenの知識がほとんどありません。これを行う最善の方法は何でしょうか?Google CodeプロジェクトのMavenリポジトリ

私が提出できるセントラルリポジトリはありますか、または私自身でホストすることはできますか? jarファイルの新しいバージョンをリリースするには、私は何をする必要がありますか?

私はグーグルで見つかっており、素敵でシンプルに見えるthisを見つけましたが、それは少し... Mavenの精神に反して、SVNにjarファイルをコミットする:) :)

Google Codeのように、ダウンロード数を把握する方法はありますか?

EDIT

私は私のpom.xmlに追加するかについてのヒントを含むそのうちのいくつかは、いくつかの回答を得てきました。みんなありがとう!しかし、明らかに私は重要なことを一つ言及することを忘れていました:私のビルドスクリプトはANTであり、それを鈍く置くために、私はそれをそのまま保つつもりです:)。私は、Mavenユーザーが私のjarファイルを自分のプロジェクトに含めるのを簡単にしたいだけです。私は最終的には最後にして

を行ってきました


ソリューションは、私は単にSVNにMavenのレポをコミットする場合は、前に私はreferencedソリューションを使用しました。私はANTスクリプトを使ってMavenにローカルリポジトリを設定し、SVNを呼び出してGoogle Codeにコミットします。興味のある人は:publish-mavenターゲットのビルドスクリプトhereを見てください。

+0

オープンソースプロジェクトは、その方法によってはどれ? –

+0

@Bno http://code.google.com/p/equalsverifier/ – jqno

+0

thxを参照してください、本当にクールだ! –

答えて

24

役立つ可能性がプロジェクトのアップロードに関するセクションがありguide to the central repositoryがあります。他に何もない場合は、プロジェクトに対する命名規則と最小限の情報要件を確認できます。

ソートタイプOSSリポジトリホスティングについては、their guideを参照してください。

更新:ビルドプロセスを変更する必要はありません。もしあなたのためにAntがそれに固執すれば、ビルド方法にかかわらず、POMのMaven規約に従うことは価値があります。 jarファイルをMavenリポジトリに格納することは、Mavenユーザがjarファイルにアクセスできるようにするため、公開されたアーティファクトのPOMを定義する必要があります。命名規則に従うことで、ユーザーはあなたもそうするかもしれません。たとえば、pomにSCMの詳細を追加すると、ユーザーはMavenのIDE統合を使用してプロジェクトをワークスペースにインポートできます。

基本的に、あなたは4つのオプションがあります:Mavenのリポジトリを設定

  1. を標準のMavenは、Mavenのリポジトリに対して構築し実行します(すでに除外)
  2. は、あなたのAntでビルドしない、とにMavenを使いますjarとPOMをデプロイします。 Mavenのリポジトリを設定
  3. は、広告がアーティファクト
  4. 使用Subversionの「リポジトリ」を公開するAntのHTTPタスクを使用して、成果物を公開するSvnAntタスクを使用

オプション1

アーティファクトをビルドしてデプロイするには、Mavenを使用します(詳細については、Maven bookおよび上記のリンクを参照してください)。


オプション2

あなたのjarファイルを作成し、ビルドプロセスを持っていると仮定すると、あなたはPOMを定義した、あなたの最善の策は、上記のようにSonatype OSSリポジトリに公開することです。標準のMavenリポジトリへの既存のjarファイルを展開

のMavenプラグインのデプロイ・ファイルの目標展開とシンプルされています(Jira requestを上げることによってSonatypeサーバー上など)リポジトリを設定

  1. ビルドアリとあなたの瓶。
  2. POMを定義した場合は、JARと同じディレクトリに配置します。
  3. ランデプロイ・ファイルの目標:

    MVNの配備:配備ファイル-Durl = http://path/to/your/repository \ -DrepositoryId = some.id \ -Dfile =パス・ツー・ご-アーティファクトジャー \ - DpomFile = Mavenのゴールを展開することへのパスご-のpom.xml

ノートは自動的に[プロジェクト名]にのpom.xmlを翻訳します - [バージョン] .pom。他の2つの選択肢のいずれかを行っている場合は、[project-name] - [version] .pomという最終的な名前でPOMをコミットする必要があります。また、Mavenの規則に従って、成果物の相対パスを作成する必要があります。

など。 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を使用できます(これは自分で試したことはありません)。 jarファイル用とPOM用の2つのHTTP putタスクを作成します。

<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を避け、SVNリポジトリ担保に展開するのAntを使用する場合は、SvnAnt Subversion libraryを使用することができます。タスクを構成して、アーティファクトをRemote Subversionリポジトリーに追加するだけで済みます。

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

ありがとう、このポストはかなり役に立ちました。 – javamonkey79

1

Mavenリポジトリがmaven deploy pluginをサポートしているかどうかを確認してください。これは最も簡単な方法です。

ほとんどのリポジトリは、sshをトランスポートとして使用します。詳細は、thisを参照してください。

それはセットアップだ後は、あなたがしなければならないすべては、次のとおりです。

mvn deploy:deploy 
+0

ありがとう!興味深いですね。残念ながら、私のビルドスクリプトはANTです。私はANTのための同様のプラグインがあるとは思わない:)? – jqno

7

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

+0

Mavenとwagon-svnを併用できます。本格的なMavenプロジェクトを作成する必要はなく、配備するためのMaven POMを作成するだけです。したがって、Mavenをビルドシステムに使用しないでください。 Antを使用してJARをビルドし、次に 'mvn deploy:deploy-file'とwagon-svnと「svn maven repository」を設定する適切なPOMを使用してデプロイします。上記の –

+0

wagon-svnの設定が完了していない場合は、java.netリポジトリも追加する必要があります。詳細はhttps://wagon-svn.dev.java.net/を参照してください。 –

0

あなたのpom.xmlhttps://clojars.org/

にあなたのjarファイルを提出することができます:

<repositories> 
    <repository> 
    <id>clojars.org</id> 
    <url>http://clojars.org/repo</url> 
    </repository> 
</repositories> 
関連する問題