22

私はGoogleCodeで小さなオープンソースプロジェクトをホストしていますが、公的にアクセス可能なMavenリポジトリにjarファイルを送信するように依頼されました。私はMavenの実用的な知識をほとんど持っていません。これを行うための最良の方法は何でしょうか?

送信できる中央リポジトリはありますか、それとも自分でホストできますか?新しいバージョンのjarをリリースしたい場合はどうすればよいですか?

私はグーグルをしていて、これは素晴らしくシンプルに見えますが、少し... Mavenの精神に反して、jarファイルをSVNにコミットすることを見つけまし:)。

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

編集

私はいくつかの答えを得てきました、そのいくつかは私のに何を追加するかについてのヒントを含んでいpom.xmlます。みんなありがとう!しかし、明らかに私は1つの重要なことを言及するのを忘れました:私のビルドスクリプトはANTにあり、率直に言って、私はそれをそのように保つつもりです:)。Mavenユーザーが自分のjarをプロジェクトに簡単に含めることができるようにしたいだけです。


私が最後に行った解決策

結局、私は以前に参照したソリューションを使用しました。そこでは、MavenリポジトリをSVNにコミットするだけです。ANTスクリプトでMavenを呼び出してローカルリポジトリを設定し、次にSVNを呼び出してGoogleCodeにコミットします。興味のある方は、ターゲットのビルドスクリプトをご覧ください。publish-maven

4

4 に答える 4

24

プロジェクトのアップロードに関するセクションが役立つ中央リポジトリへのガイドがあります。他に何もなければ、プロジェクトに対する命名規則と最小限の情報要件を確認できます。

Sonatype は OSS リポジトリのホスティングも行っています。詳細については、Sonatypeのガイドを参照してください。

更新: ビルド プロセスを変更する必要があると言っているわけではありません。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 ブックおよび上記のリンクを参照してください)。


オプション 2

jar を作成するビルド プロセスがあり、POM を定義したと仮定すると、最善の策は、上記のようにそれを Sonatype OSS リポジトリに公開することです。

既存の jar を標準の Maven リポジトリにデプロイするのは、Maven デプロイ プラグインの deploy-file ゴールを使用すると簡単です。

  1. リポジトリをセットアップします (たとえば、Jira リクエストを発行して Sonatype サーバーで)
  2. Ant で jar をビルドします。
  3. POM を定義した場合は、jar と同じディレクトリに配置します。
  4. deploy-file ゴールを実行します。

    mvn deploy:deploy-file -Durl= http://path/to/your/repository \ -DrepositoryId=some.id \ -Dfile=path-to-your-artifact-jar \ -DpomFile=path-to-your- pom.xml

Maven deploy ゴールは、pom.xml を [project-name]-[version].pom に自動的に変換することに注意してください。他の 2 つの方法のいずれかを実行している場合は、最終的な名前、つまり [プロジェクト名]-[バージョン].pom で POM をコミットする必要があります。また、Maven 規則に従ってアーティファクトの相対パスを作成する必要があります。

たとえば、groupId=com.foo.bar、artifactId=my-project version=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 ライブラリを使用できます(これは自分で試したことがないことに注意してください)。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 を完全に回避し、Ant を使用して SVN ベースのリポジトリにデプロイする場合は、 SvnAnt Subversion ライブラリを使用できます。アーティファクトをリモート Subversion リポジトリに追加するには、 Svn インポートタスクを構成するだけです。

<import path ="/dir/containing/the/jar/and/pom" 
    url="svn://your/svn/repository"
    message="release"/>
于 2009-08-15T07:16:48.897 に答える
7

wagon-svn を確認します。これにより、Subversion リポジトリに「デプロイ」できます。少し複雑ですが、何もないよりはましです。java.net でこれを使用しているプロジェクトをいくつか知っています。また、code.google.com でそれを使用しているプロジェクトにも出会いました。

使用する場合は、最初に wagon-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>
于 2009-08-15T07:24:52.157 に答える
1

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

ほとんどのリポジトリは、トランスポートとして ssh を使用します。詳しくはこちらをご覧ください。

セットアップが完了したら、次のことを行う必要があります。

  mvn deploy:deploy
于 2009-08-14T22:43:50.850 に答える
0

jar をhttps://clojars.org/に送信できます。

あなたのpom.xml

<repositories>
  <repository>
    <id>clojars.org</id>
    <url>http://clojars.org/repo</url>
  </repository>
</repositories>
于 2012-07-07T23:36:20.123 に答える