5

私の知る限り、Mavenを使用したサードパーティのバイナリアーティファクトのデプロイは次のように行われます。

mvn deploy:deploy-file -DgroupId=<group-id> \
  -DartifactId=<artifact-id> \
  -Dversion=<version> \
  -Dpackaging=<type-of-packaging> \
  -Dfile=<path-to-file> \
  -DrepositoryId=<id-to-map-on-server-section-of-settings.xml> \
  -Durl=<url-of-the-repository-to-deploy>

私のリポジトリがscpを使用してアクセス可能であると仮定します。たとえば、上記のコマンドで

-Durl=scpexe://example.org//users/mvnrepo/maven

Maven 3を使用すると、このデプロイメントコマンドはエラーメッセージで失敗します。

私が使用した回避策は、2つのjarファイルをコピーすることでした: wagon-ssh-common-2.2.jarそしてwagon-ssh-external1.0.jar私の$M2_HOME/libディレクトリに。

したがって、私の質問:Mavenが適切なワゴンを単独で取得できないのはなぜですか?

(そして、可能であればそれをどのように行うのですか?)

4

2 に答える 2

7

ワゴンはMaven拡張機能です。次のように追加できます。

<project>
    <build>
        <extensions>
            <extension>
                <groupId>org.apache.maven.wagon</groupId>
                <artifactId>wagon-ssh</artifactId>
                <version>1.0</version>
            </extension>
        </extensions>
    </build>
</project>

詳細については、Mavenワゴンのページを確認してください。

于 2012-07-10T08:24:11.467 に答える
4

率直で短い答えとして:サードパーティを追加するには、次のものが必要です。

  • Mavenリポジトリ(NexusやArtifactory with GUIなどのアプリ)
  • またはpom.xml(コマンドライン内)

さらなる考慮事項

自分のライブラリを公開するだけでなく、サードパーティのライブラリを使用したいと思います。

  1. サードパーティのライブラリを使用する場合は、実際にそれをホストしている既存のリポジトリを探す必要があります。あなたはすでに検索していると確信していますが、それはそれを行うためのより良い方法です。見つかった場合は、Mavenリポジトリキャッシュに追加するだけです。

  2. 次に、見つからない場合は、自分のリポジトリに追加できます。よくご存知かと思いますが、当たり前のように聞こえるかもしれませんので、ご容赦ください。しかし、リポジトリはファイルサーバーだけではありません。Carlspring kinldyは、例を示すためにNexusについて話しました。Artifactoryや他にもたくさんあります。それらは真のアプリサーバーです。だから、あなたはあなた自身のものを持っている必要があります。アーティファクトを追加できるインターフェイスがあり、アーティファクトに関する情報(少なくともグループ、ID、バージョン)を提供します。

  3. 最後に、Mavenは依存関係のパラダイムを扱います。これは正式なものではありませんが、考慮事項にすぎません。

    • 誰が開発したのですか?
    • それが何に依存するか(他のライブラリ)?
    • 誰がそれを提供しますか?
    • 信頼できますか?
    • ..。

これらの情報はすべてpom.xmlに配置する必要があり、実際には作成者によって配置されるか(1を参照)、少なくともMavenで使用するときに提供されます(2を参照)。いずれの場合も、それらはpom.xmlから取得されます...自動生成されるかどうか...したがって、pom.xmlが必要になります:)。


実際、ライブラリを公開または使用すると、同じ問題が発生します。より自動化された信頼できる方法で使用するには、開発したものに関する情報を提供する必要があります。それは時々かなり醜いです、しかしこれはそれをするためのより良い方法です。

もう一度、それが明白に聞こえるなら、私を許してください。しかし、経験上、Mavenで何かを行うことができなかった場合、それを行うのは良い方法ではないため、多くの場合、プロセスは「最大の開発プロセス」よりも非常に小さいため、すべての人を動かす必要があります:)

于 2012-07-10T12:22:58.700 に答える