43

ノート:

jarがリポジトリに配置されたことに気付きましたが、pom.xmlは配置されませんでした。ここで、pom.xmlのプロモートに失敗する別のプロジェクトがありますが、jarはリポジトリに配置されています。

ただし、別のプロジェクト、pom.xmlとjarの両方がリポジトリに配置されます。


Jenkinsにプロジェクトがあり、プロモーションプラグインを使用して、deploy:deploy-file目標を介してMavenにアーティファクトをデプロイしています。

これは、Mavenにある他のいくつかのプロジェクトでは機能しますが、このプロジェクトでは失敗します。面白いことに、ファイル(pom.xmlではない)がとにかくアップロードされます。Mavenリポジトリからアーティファクトを削除し、プロモーションを実行することで、これを確認しました。アーティファクトは、プロモーション後にリポジトリにあります。

これが私が取得しているログです。余分な長い行を可能な限り分割しました。

[workspace] $ /bin/bash -xe /opt/tomcat/apache-tomcat-7.0.27/temp/hudson7357923598740079329.sh
+ FILE_LOC=/mnt/jenkins/builds/metricsdb-trunk/21/archive/target/archive
+ mvn deploy:deploy-file
    -Dversion=0.8.0
    -Dfile=/mnt/jenkins/builds/metricsdb-trunk/21/archive/target/archive/metricsdb-etl.jar
    -DpomFile=/mnt/jenkins/builds/metricsdb-trunk/21/archive/target/archive/pom.xml
    -Durl=http://repo.vegicorp.com/artifactory/ext-release-local -DrepositoryId=VegiCorp
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building Command Line Spring Batch Module 0.8.0.CI-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-deploy-plugin:2.7:deploy-file (default-cli) @ metricsdb-etl ---
Uploading: http://repo.vegicorp.com/artifactory/ext-release-local/com/vegicorp/batch/metricsdb/metricsdb-etl/0.8.0/metricsdb-etl-0.8.0.jar
2/38 KB   
4/38 KB   
[...]

Uploaded: http://repo.vegicorp.com/artifactory/ext-release-local/com/vegicorp/batch/metricsdb/metricsdb-etl/0.8.0/metricsdb-etl-0.8.0.jar (38 KB at 202.2 KB/sec)
Uploading: http://repo.vegicorp.com/artifactory/ext-release-local/com/vegicorp/batch/metricsdb/metricsdb-etl/0.8.0/metricsdb-etl-0.8.0.pom
2/7 KB     
4/7 KB   
[...]

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.243s
[INFO] Finished at: Thu Oct 04 14:38:52 CDT 2012
[INFO] Final Memory: 4M/119M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy-file
    (default-cli) on project metricsdb-etl: Failed to deploy artifacts:
    Could not transfer artifact com.vegicorp.batch.metricsdb:metricsdb-etl:pom:0.8.0 from/to
    VegiCorp (http://repo.vegicorp.com/artifactory/ext-release-local):
    Failed to transfer file: http://repo.vegicorp.com/artifactory/ext-release-local/com/vegicorp/batch/metricsdb/metricsdb-etl/0.8.0/metricsdb-etl-0.8.0.pom.
    Return code is: 409, ReasonPhrase:Conflict. -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
failed build hudson.tasks.Shell@24a6e7f9 SUCCESS
Finished: FAILURE

デバッグフラグ(-X)付きの出力はPastebinにあります。

4

9 に答える 9

43

問題を見つけました。実際には2つの問題:

  • リリースリポジトリを設定しただけで、スナップショットリリースをリリースリポジトリに保存しようとしていました。Artifactoryは、リリースリポジトリ内のリリースのみを許可するように設定されました。これはArtifactory設定で変更できますが、私はこれに反対することにしました。

  • 保存pom.xmlしようとしていたバージョンとは異なるバージョンが含まれています。たとえば、pom.xmlはバージョン2.0と言っていて、リリースを2.0.2として保存しようとしていました。Artifactoryは、この理由でpom(jarではなく)を拒否しました。

「POM整合性チェックを抑制する」かどうかを尋ねるArtifactory設定(リポジトリごと)を見つけました。このチェックボックスをオンにすると、バージョンを1に設定できますが、pomに別のバージョンを言わせます。

また、リリースリポジトリとスナップショットリポジトリの両方を使用できるように、Mavenの「settings.xml」ファイルを変更する必要がありました。また、スナップショットリポジトリへのURLを変更する必要があります。

Ivyをしばらく使用していたので(スナップショットの概念はありません)、リリースリポジトリにデータを入れていました。これはMavenプロジェクトであり、開発者はPOMのバージョンをSNAPSHOTとしてマークしました。

残念ながら、Mavenのドキュメントはかなり貧弱であり、Mavenに関する優れた本はまだありません。さらに悪いことに、エラーメッセージは単純に貧弱です。「409、ReasonPhrase:Conflict。-> [ヘルプ1]」とはどういう意味ですか?

Ivyのドキュメントがそれほど優れているわけではありませんが、AntinActionはIvyの使用に関する優れたセクションがいくつかあります。

于 2012-10-05T19:49:32.810 に答える
31

リポジトリ-SNAPSHOTに公開する場合は、バージョンの一部として含めるようにしてください。snapshot

-SNAPSHOTまた、スナップショット以外のリポジトリに公開する場合は削除してください。

于 2015-04-22T01:57:25.997 に答える
4

私もこの問題に直面していますが、その理由は、親プロジェクトがスナップショットリポジトリにデプロイされなかったためです。親フォルダーでmvndeployを実行すると、問題は解決しました。

于 2013-12-11T09:48:24.270 に答える
4

ええ....同じエラーの複数の理由。多分それは誰かを助けるでしょう

1. Login as Admin to Artifactory
2. Configuration -> Repositories
3. Edit the Local Repository ---> Suppress POM Consistency Checks

これで私の問題は解決します。正しいアプローチかどうか?

于 2014-10-30T11:53:28.667 に答える
4

そのエラーメッセージもありました。私にとっての問題は、サーバーのセットアップがSNAPSHOTではなくリリースのみを受け入れることでした。SNAPSHOTをpomから取り外した後、正常に機能しました。

于 2018-10-22T08:28:44.153 に答える
1

私の場合、jarファイル(外部、同じディレクトリ内)に関連付けられたPOMファイルはそれ自体に依存関係がありました。これは、アーティファクトにロードする必要のあるサードパーティからのオフラインのzipリポジトリでした。

POMファイルを変更し、自己依存関係を削除して、パッケージ情報が正しいことを確認しました。その後、アーティファクトは問題なく展開されました。ベンダーがビルドで修正できるように、ベンダーに電子メールを送信しました。

于 2017-02-28T19:47:44.287 に答える
1

この問題も発生しましたが、デプロイ先のリポジトリに包含/除外ルールが設定されていて、デプロイがそれらのルールと一致しなかったことが判明しました。

私の解決策は、インクルードルールとして** / *を持っている新しいリポジトリ(およびそれらを分離しておくための除外ルールとして他のリポジトリからのパターン)でデプロイメントをポイントすることでした。

于 2019-04-11T19:39:52.530 に答える
0

私は同じ問題を経験しています。(TL; DR:ソリューションは最後の行を参照)

jenkinsからArtifactoryへのデプロイ中に、(魔法のように)409-競合エラーがArtifactoryログに次のエラーメッセージとともに表示されることがありました。

[警告](oaeUploadServiceImpl:239)-HTTPエラーコード409を送信しています:チェックサムポリシー'LocalRepoChecksumPolicy:CLIENT'はアーティファクト'gradle-integration:com.redacted.java/fooProject/123/foo-123.jar'を拒否しました。チェックサム情報:ChecksumsInfo {checksums = {SHA-1 = ChecksumInfo {type = SHA-1、original ='da39a3ee5e6b4b0d3255bfef95601890afd80709'、actual = '1459689f0be058f4ecef7e6fe3576f1550a8afda'}、MD5 = ChecksumInfo {type 14c7a498de028d6eb5882b3c698bc456'}}}。

訓練を受けた目が気付くかもしれませんが、MD5#d41d8cd98f00b204e9800998ecf8427eは、空のファイルまたは文字列のチェックサムです。

つまり、次のことが発生している必要があります。発行フォルダー内のアーティファクトを準備するコピージョブが完了していないため、チェックサムが計算されたときにファイルが空でした。

ただし、デプロイが発生したときにファイルがそこにあった場合、Artifactoryはチェックサムを受け取りますが、これは正しくなく、エラーコード409でファイルを正しく拒否します。

解決策(簡単):デプロイジョブを開始する前に、ファイルが確実に存在することを100%確認します(一時停止または適切なロジックを追加します)。

于 2014-11-20T10:45:56.280 に答える
0

リモートリポジトリのスペースがいっぱいになっている可能性があります。すべての技術的で時間を無駄にする前に、それを確認してください。論理的な問題だと思って2〜3時間を無駄にしました。

于 2019-03-29T15:57:33.693 に答える