2016-06-23 14 views
1

mavenを使用してソースからビルドした後で、サードパーティのライブラリセットをnexusに配備したいと考えています。サードパーティのlibセットをNexusに配備する方法

私は単にmvn deployを使用することができるだろうと思ったが、私は、次のメッセージが表示されます:

[INFO] --- maven-deploy-plugin:2.7:deploy (default-deploy) @ dcm4che-parent --- 
Uploading: scp://www.dcm4che.org:443/home/maven2/org/dcm4che/dcm4che-parent/3.3.7/dcm4che-parent-3.3.7.pom 
The authenticity of host 'www.dcm4che.org' can't be established. 
RSA key fingerprint is 41:7f:10:be:8d:15:30:f1:91:59:95:c7:5d:63:f7:31. 
Are you sure you want to continue connecting? (yes/no): yes 
Password: : 

www.dcm4che.orgではなく、私のネクサスレポに展開しようとしているようにこれは私には見えます。

このようにmvn deployを使用できませんか?

私は自分のlibsをこの方法でネクサスに問題なく展開できます。

私は間違っていますか?

UPDATE

this answerにアドバイスに従った後、私は、次のコマンドを実行:私は内のエントリを追加した

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project dcm4che-parent: Failed to deploy artifacts: Could not transfer artifact org.dcm4che:dcm4che-parent:pom:3.3.7 from/to nexus (http://192.168.50.200:8081/nexus/content/repositories/thirdparty): Failed to transfer file: http://192.168.50.200:8081/nexus/content/repositories/thirdparty/org/dcm4che/dcm4che-parent/3.3.7/dcm4che-parent-3.3.7.pom. Return code is: 401, ReasonPhrase: Unauthorized. -> [Help 1] 

mvn deploy -DaltDeploymentRepository=nexus::default::http://192.168.50.200:8081/nexus/content/repositories/thirdparty 

を、私は次のエラーを取得します私のsettings.xmlは次のようになります。

<servers> 
    <server> 
     <id>thirdparty</id> 
     <username>deployment</username> 
     <password>password</password> 
     <configuration></configuration> 
    </server> 
</servers> 

第二UPDATE

私は、次のコマンドラインのバリエーションを試してみましたが、まだそれを動作させることはできません。 Mavenのドキュメントは役に立ちません。

mvn deploy -DaltDeploymentRepository=thirdparty::default::http://192.168.50.200:8081 

はエラーを生成します

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project dcm4che-parent: Failed to deploy artifacts: Could not find artifact org.dcm4che:dcm4che-parent:pom:3.3.7 in thirdparty (http://192.168.50.200:8081) -> [Help 1] 

mvn deploy -DaltDeploymentRepository=thirdparty::default::http://192.168.50.200:8081/nexus/ 

はエラーを生成します

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project dcm4che-parent: Failed to deploy artifacts: Could not transfer artifact org.dcm4che:dcm4che-parent:pom:3.3.7 from/to thirdparty (http://192.168.50.200:8081/nexus/): Failed to transfer file: http://192.168.50.200:8081/nexus/org/dcm4che/dcm4che-parent/3.3.7/dcm4che-parent-3.3.7.pom. Return code is: 405, ReasonPhrase: HTTP method PUT is not supported by this URL. -> [Help 1] 

mvn deploy -DaltDeploymentRepository=nexus::default::http://192.168.50.200:8081/nexus/content/repositories/ 

がエラー生成:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project dcm4che-parent: Failed to deploy artifacts: Could not find artifact org.dcm4che:dcm4che-parent:pom:3.3.7 in nexus (http://192.168.50.200:8081/nexus/content/repositories/) -> [Help 1] 

決勝UPDATE

この出くわすかもしれない他の誰のためには、次のコマンドは、働いていました。彼の助けを借りてA_Di-Matteoに感謝します。

mvn deploy -DaltDeploymentRepository=thirdparty::default::http://192.168.50.200:8081/nexus/content/repositories/thirdparty 
+0

まず、プロトコルとして 'scp'を使うのはよいアイデアではなく、通常はNexusでも使われているのか疑問があります。 (http/https)が使用されます。さらに、pom.xmlのどこかでdistributionManagementを変更する必要があります.... – khmarbaise

+0

'scp'がどこにどのように配置されるのかわかりません。故意に私が指定したものではありません。 – ksl

+0

@kslあなたの設定スニペットのidは 'thirdparty'ですが、' nexus'を渡したコマンドラインから、それは不一致です –

答えて

1

おそらくdcm4che-parent-3.3.7.pomアーティファクトを参照のうえされ、そこから:あなたが見ることができるように、そのdistributionManagementがデフォルトとして使用されるビルドエラーに言及したホストに参照のうえれる

<distributionManagement> 
    <repository> 
     <id>www.dcm4che.org</id> 
     <name>dcm4che Repository</name> 
     <url>scp://www.dcm4che.org:443/home/maven2</url> 
    </repository> 
</distributionManagement> 

1。

あなたの内部ネクサスに展開する場合は、その後、altDeploymentRepositoryオプションを使用する必要があります。

Specifies an alternative repository to which the project artifacts should be deployed (other than those specified in <distributionManagement>). Format: id::layout::url .

そのユーザーのプロパティがaltDeploymentRepositoryです。

したがって、次のようにMavenを呼び出すことができます。

あなたのMaven settings.xmlで指定されたリポジトリと一致している必要があり
mvn clean deploy -DaltDeploymentRepository=yourId::layout::URL 


一般的なルールとして、あなたはこのように公共のアーティファクトをネクサスにアップロードべきではない:ネクサスはあなたのためにそれらを取得することができますし、他のリモートリポジトリのための更なる集中型のキャッシュ/ガバナンス・ポイントとして使用します。

パブリックアーティファクトを変更して内部Nexusにパブリッシュする場合、Maven coordinatesを変更することを少なくともお勧めします。classifierにパッチ/会社名/有用な詳細を指定してください。

+0

だから私はdcm4cheレポを私のネクサスの設定に加えてください。そして、私がdcm4cheに依存するアプリケーションをビルドするとき、mavenはそれが必要とするものを引き込んでビルドしますか? – ksl

+0

@kslはい、これは推奨されるアプローチであり、必要な外部依存関係をすべてアップロードする必要はありません。 Nexusはあなたを引き出し、キャッシュに保存します。 –

関連する問題