26

注:この質問は、もともとLahiru Gunathilakeが別の質問への回答として投稿したものです。明確にするために、別の質問としてここに移動します。

リリースを行うときは、ローカル マシンでビルドして QA を行い、それをリポジトリにホストします。実行するmvn deployと、新しいアーティファクトが作成されます。これにより、ローカル リポジトリからバイナリ ディストリビューションを作成しているため、リポジトリとバイナリ ディストリビューションに異なるアーティファクトが作成されます。しかし、誰かがソース コードを入手してビルドすると、別のコードが得られます。ただし、mvn deployビルドせずにデプロイするだけであれば問題ありません。

4

1 に答える 1

32

Build Lifecycle Basicsで説明されているように:

ビルド ライフサイクルはフェーズで構成されています

これらのビルド ライフサイクルのそれぞれは、ビルド フェーズの異なるリストによって定義されます。ビルド フェーズは、ライフサイクルのステージを表します。

たとえば、デフォルトのライフサイクルには次のビルド フェーズがあります (ビルド フェーズの完全なリストについては、ライフサイクル リファレンスを参照してください)。

  • validate- プロジェクトが正しく、必要なすべての情報が利用可能であることを検証します
  • compile- プロジェクトのソース コードをコンパイルします。
  • test- 適切な単体テスト フレームワークを使用して、コンパイルされたソース コードをテストします。これらのテストでは、コードをパッケージ化またはデプロイする必要はありません
  • package- コンパイルされたコードを取得し、JAR などの配布可能な形式でパッケージ化します。
  • integration-test- 必要に応じてパッケージを処理し、統合テストを実行できる環境にデプロイします
  • verify- チェックを実行して、パッケージが有効であり、品質基準を満たしていることを確認します
  • install- パッケージをローカル リポジトリにインストールして、他のプロジェクトの依存関係としてローカルで使用する
  • deploy- 統合またはリリース環境で行われ、他の開発者やプロジェクトと共有するために最終パッケージをリモート リポジトリにコピーします。

これらのビルド フェーズ (およびここに表示されていない他のビルド フェーズ) は、デフォルトのライフサイクルを完了するために順次実行されます。上記のビルド フェーズを考えると、デフォルトのライフサイクルが使用される場合、Maven は最初にプロジェクトを検証し、次にソースをコンパイルしてテストに対して実行し、バイナリ (jar など) をパッケージ化し、それに対して統合テストを実行することを意味します。パッケージを検証し、検証済みのパッケージをローカル リポジトリにインストールしてから、インストールされたパッケージを指定された環境にデプロイします。

これらすべてを行うには、実行する最後のビルド フェーズ (この場合はデプロイ) を呼び出すだけです。

mvn deploy

これは、ビルド フェーズを呼び出すと、そのビルド フェーズだけでなく、呼び出されたビルド フェーズより前のすべてのビルド フェーズも実行されるためです。

したがって、答えはイエス です。プロジェクトのアーティファクトmvn deployを実行installしてビルドします。しかし、何も変更しないと、まったく同じアーティファクトが生成されます。

于 2009-10-09T15:50:41.820 に答える