23

私はプロジェクトを構築しています。このプロジェクトは、いくつかの(場合によっては無関係な)モジュールといくつかの非標準のJavaモジュール(ANTで構築されたもの)で構成されています。

各Mavenモジュールは、完了時にリリースリポジトリにデプロイされます。

ビルドが途中で失敗した場合、いくつかのモジュールがすでにデプロイされている可能性があります。したがって、再構築しようとすると、アーティファクトがすでにデプロイされているため、新しいデプロイの試みは失敗します。

デプロイを強制することはできますか、または代わりに、再度デプロイする前にデプロイされたアーティファクトを削除することはできますか?

4

3 に答える 3

15

ミドルウェア管理者がリモートリポジトリインスタンス(NexusまたはArtifactoryなど)をアーティファクトの再デプロイを許可しないように構成しているようです。@ khmarbaiseが言うように、それには十分な理由があります。Nexusは、特定の役割のユーザーまたはアーティファクト削除権限を持つユーザーによるアーティファクトの削除を許可するように構成できます。管理者がそのように設定している場合は、削除権限をリクエストして、問題のあるアーティファクトを削除できます。または、Nexus管理者があなたに代わってそれを行うことに同意するかもしれません。

これらのいずれも不可能な場合は、これが将来発生しないようにするためのいくつかの試みがあります。

  1. releaseプラグインを使用している場合は、-DdryRun=true最初に(release:prepareコマンドラインで)ドライランを実行します。Mavenは、SCMにコミットせずにエラーを報告する必要があります。
  2. mvn install最初にプロジェクトのグループで実行してみてください。これにより、アーティファクトがリモートではなくローカルリポジトリにインストールされます。問題がある場合は、ローカルリポジトリからアーティファクトを削除して最初からやり直し、完全なビルドが得られるまで繰り返します。
  3. マルチモジュールビルドを実行している場合は、特定のプロジェクトからMavenビルドを再開できるコマンドラインオプションがあります。
  4. -Dmaven.deploy.skip=trueMavenコマンドラインで定義します。これは提案#2に似ていますが、Mavenが実際にデプロイプラグインをロードして構成し、リモートリポジトリへの実際のデプロイを行わない点が異なります。すべてが機能したら、skipプロパティを削除します。
于 2012-07-04T04:04:11.720 に答える
14

遅れるかもしれませんが、Nexusにはアーティファクトの再デプロイを許可するオプションがあります。

ここに画像の説明を入力してください

左側のリポジトリを選択し、ポリシーを変更するリポジトリを選択してから、[再デプロイを許可]に設定します。

于 2016-10-28T12:49:02.420 に答える
4

可能なオプションが増えました;)

パラメータdeployAtEndを使用します(詳細:こちら)。このパラメーターを使用すると、すべてのアーティファクトが正常にビルドされた場合にのみ、アーティファクトがデプロイされます。

于 2014-11-10T15:07:22.630 に答える