web-dev-qa-db-ja.com

Nexusにアーティファクトをデプロイする際のエラー

Nexusサーバーの自分のリポジトリにアーティファクトをデプロイすると、「アーティファクトをデプロイできませんでした:アーティファクトを転送できませんでした」「http:/// my_artifactファイルを転送できませんでした。戻りコード:400」

次のMavenローカル構成で1つのカスタムリポジトリmy_repoでNexusを実行しています:

settings.xml

<server>
    <id>my_repo</id>
    <username>user</username>
    <password>pass</password>
 </server>
 ...
 <mirror>
    <id>my_repo</id>
    <name>Repo Mirror</name>
    <url><my_url_to_my_repo></url>
    <mirrorOf>*</mirrorOf>
  </mirror>
  • ユーザーはmy_repoを作成/読み取り/書き込みする権限を持っています-

pom.xml

<distributionManagement>
        <repository>
            <id>my_repo</id>
            <name>my_repo</name>
            <url><my_url_to_my_repo></url>
            <layout>default</layout>
        </repository>
        <snapshotRepository>
            <id>snapshots</id>
            <name>Snapshots</name>
            <url><my_url_to_my_snapshot_repo></url>
        </snapshotRepository>
    </distributionManagement>

そして、私は実行します

mvn deploy

エラーを取得します。何か案が?

79
acimutal

私が考えることができるいくつかのこと:

  • ユーザー資格情報が間違っています
  • サーバーへのURLが間違っています
  • ユーザーは展開リポジトリにアクセスできません
  • ユーザーは特定のリポジトリターゲットにアクセスできません
  • アーティファクトは、リリース(-SNAPSHOTバージョンではない)の場合、そのバージョンで既にデプロイされています
  • リポジトリは、それぞれのアーティファクトのデプロイには適していません(例:スナップショットバージョンのリリースリポジトリ、ホストされたリポジトリの代わりにプロキシリポジトリまたはグループ)

それらを確認し、まだ問題が発生した場合は、ここで詳細を提供してください。

130
Manfred Moser

別の答えを作成するだけです。回答は、実際には受け入れられた回答のコメントにあります。

アーティファクトのバージョンを変更して、-SNAPSHOTで終わるようにしてください。

29
bhagyas

私の問題の原因は、受け入れられた答えの原因の1つとして述べられているように、-source.jarsが2回アップロードされていた(maven-source-pluginで)ことでした。私が言及した回答にリダイレクト: Mavenリリースプラグインが失敗します:ソースアーティファクトが2回展開されます

9
ankitkpd

今日私はこの正確な問題を抱えていましたが、問題は、リリースしようとしていたバージョンがすでにNexusレポジトリにあったことでした。

私の場合、これはおそらくrelease:performの以前の呼び出し中のネットワーク切断が原因でした。接続が失われたとしても、リリースは成功したようです。

7
eidolon1138

まれに、同じ安定したアーティファクトをNexusに再デプロイする必要がある場合、デフォルトでは失敗します。再度デプロイする目的でアーティファクトをNexusから(Webインターフェースを介して)削除しても、デプロイは失敗します。 jarまたはpomは、ディレクトリに残っている他のファイルをクリアしません。ボックスにログオンし、ディレクトリ全体を削除する必要があります。

6
bosvos

以下を試みると、400 Bad Requestが返されます。

  1. -SNAPSHOTで終わるsnapshotアーティファクト(またはバージョン)をreleaseリポジトリにデプロイします
  2. リリースアーティファクト(バージョンではないで終わる-SNAPSHOT)をスナップショットリポジトリ
  3. 同じバージョンのリリースアーティファクトをリリースリポジトリに複数回デプロイする
4
roj
  • 親pom application ==>バージョンで、タグを次のように配置します:x.x.x-SNAPSHOT

例:0.0.1-SNAPSHOT

  • 「-SNAPSHOT」:非常に重要です
3
Fadid

(リリースとして)nexusにまだ存在していないこと(アーティファクトとバージョン)を確認します。その場合、不良リクエストを返します。

2
danipenaperez

今日、「リターンコードは400、ReasonPhrase:Bad Request」という追加で同じ問題が発生しました。上記の回答から「アーティファクトはリリースであればそのバージョンで既にデプロイされている」問題であることが判明しました リンクの説明をここに入力してください

まだ言及されていないソリューションの1つは、リリースリポジトリへの再展開を許可するようにNexusを設定することです。これは何らかの理由で設定されているため、ベストプラクティスではない可能性がありますが、Nexusリポジトリの[設定]タブで[アクセス設定]に移動し、[展開ポリシー]を[再展開を許可]に設定できます。

2
jonashackt

上記の回答のいずれかがうまくいった場合は、管理者側から直接新しいアーティファクトを作成できます(以下に添付されているNEXUSスクリーンショット)。

  1. Login to nexus UI http:// YOUR_URL:8081/nexus (username:adminデフォルトのパスワード:admin123
  2. 左側のClick repositoriesをクリックし、レポをクリックします。例:リリースをクリックします。
  3. artifact Upload(最後のタブ)を選択します。
  4. GAV definitionGAV Paramとして選択してから、groupid、artifact id、およびversionを入力します。
  5. Jarファイルを選択します。
  6. [成果物のアップロード]をクリックします。それでおしまい !

これで、対応するプロジェクトをプロジェクトに追加できるようになります(下のスクリーンショット)。

enter image description here

1
vipin cp

これは、バージョンに関する命名ポリシーがあり、展開しようとしているバージョン番号を禁止している場合にも発生する可能性があります。私の場合、私はバージョンをアップロードしようとしました(リポジトリをリリースするために)2.0.1が、後でネクサス設定がリリースに整数以外を許可しないことがわかりました。

後でバージョン2で試し、正常にデプロイしました。

エラーメッセージは間違いなく役に立ちません:

Return code is: 400, ReasonPhrase: Repository does not allow updating assets: maven-releases-xxx. -> [Help 1]

より良いメッセージはversion 2.0.1 violates naming policyだったかもしれません

0
old-monk

400エラーの場合、リポジトリの「展開ポリシー」、通常は「再展開を無効にする」を確認してください。ほとんどの場合、ライブラリバージョンは既に存在しているため、「CUT NOT PUT put ' https://yoururl/some.jar '。サーバーからステータスコード400を受信しました。リポジトリはアセットの更新を許可しない:「リポジトリ名」

したがって、これを解決するにはいくつかのオプションがあります。 1-再デプロイを許可する2-アップロードしようとしているリポジトリからバージョンを削除する3-バージョン番号を変更する

0
Furqan