2

Mavenマルチモジュールプロジェクトを使用しています。Mavenを実行し、モジュールの1つが失敗すると、エラーメッセージが表示され、次の行が表示されます。

After correcting the problems, you can resume the build with the command
    mvn <goals> -rf :my.module.name

Mavenは何らかの状態を保持していますか?実行することは可能ですか

  mvn <goal> `start from where we left off`

私が尋ねる理由は、私のモジュール名のいくつかがかなり長いからです。cmdプロンプトからコピーできますが、より速く/より短いコマンドが必要です。多くの場合、数秒節約することはそれほど多くないように思われるかもしれませんが、私のMavenの使用の過程で、それは私を大いに節約することができます。

質問は

  • Mavenは状態を保持しますか?
  • もしそうなら、中断したところからすぐに再実行できますか?

ありがとう

4

3 に答える 3

1

Maven Shellを使用して、プリロードされたシェル環境でMavenの目標/フェーズを実行し、ビルド時間を大幅に短縮できます。

于 2012-10-01T16:18:58.643 に答える
1

いいえ。ただし、個々のモジュールにアクセスしてビルドすることはできます。これは本質的にMavenが行うことであり、正しい順序でそれらを実行する必要があります。そうしないと、混乱を招く結果が生じる可能性があります(つまり、古い依存モジュールビルドなど)。リアクタービルドの概要には、Mavenが実行するモジュールのビルド順序が表示され、ビルドの開始時に表示されます。

最終的には、最終的なアーティファクトをビルドするために、常に親モジュールから完全なビルドを実行する必要があります。そして、とにかく上から実行するのが最も簡単なことがよくあります。

于 2012-10-01T15:48:23.283 に答える
0

いいえ-少なくとも私の経験では、Mavenはその状態を保持していません。を実行している場合、これは特に重要ですmvn package。マルチモジュールプロジェクトでの実行mvn packageは正常に機能しますが(すべてのモジュールは前のモジュールの生成されたアーティファクトを使用できます)、ビルドが中断された場合、ビルドの途中で再開すると、参照時にアーティファクトが見つからないというエラーが発生します以前に正常にビルドされたモジュール。

これを回避する2つの方法。すべてを再構築するかmvn install、ローカルリポジトリにインストールするためにMavenを要求するために使用します(デプロイする準備ができていない場合)。このような場合、ローカルリポジトリで以前にビルドされたモジュールが見つかるため、ビルドを再開しても失敗しません。

個人的なペットピーブと同じように、-rfフラグを使用するときはモジュールアーティファクト名を知っている必要があります。Mavenは表示名を表示しますが、これはアーティファクト名である場合とそうでない場合があります。 -rfアーティファクト名が必要です。

于 2012-10-01T18:07:20.240 に答える