@ yegor256の答えを少し発展させたい... 8年、4ヶ月後!
私はここで、粗雑でいっぱいだったいくつかのレガシー Maven 構成の雑草に巻き込まれていることに気づきました。Maven の考え方から来て、今からアクティブなハッキングまで数年はかかりましたが、Maven のライフサイクルに再び慣れてきました。
TLDR...mvn help:effective-pom
はあなたの友達です。IDE のツールを使用して有効な POM を頻繁に表示します (NetBeans を使用すると簡単に表示できます。IntelliJ にキーボード ショートカットを追加しました)。
私が検討していた構成では、以前の開発者は 2 つの実行deploy-file
を作成していました。war
jar
<build>
...
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
<executions>
<execution>
<id>deploy-war</id>
<phase>deploy</phase>
<goals>
<goal>deploy-file</goal>
</goals>
<configuration>
... omitted ...
</configuration>
</execution>
<execution>
<id>deploy-jar</id>
<phase>deploy</phase>
<goals>
<goal>deploy-file</goal>
</goals>
<configuration>
... omitted ...
</configuration>
</execution>
</executions>
</plugin>
...
</plugins>
...
</build>
これらの実行がフェーズへのdefault-deploy
バインドに追加されることを認識してdeploy
おり、ログでこの動作を観察しました。default-deploy
が実行され、空の war ファイルがアップロードされます。次に、がdeploy-war
実行され、最初の war ファイルがアップロードされ、上書きされます。
いくつかのオプションがあります。
skip
そしてcombine.self="override"
(私の好み)
提示されて<skip>
いるように、<configuration>
オプションとして使用することは実行可能です。を に設定するよりも安全でポータブル<phase>
ですnone
。
ただし、それは他の実行によって継承されます (確かに提示されているとおり)。これを防ぐには、追加の構成で継承しないように明示的に指示する必要があります<execution>
。
...
...
<executions>
<execution>
<id>deploy-war</id>
<phase>deploy</phase>
<goals>
<goal>deploy-file</goal>
</goals>
<configuration combine.self="override">
... omitted ...
</configuration>
</execution>
...
...
オーバーライドdefault-deploy
別のオプションは、プラグインの実行combine.self="override"
をオーバーライドすることdefault-deploy
よりも、おそらくより冗長で難解ではありません。<id>
...
<execution>
<id>default-deploy</id>
<configuration>
<skip>true</skip>
</configuration>
</execution>
...
これは追加では継承されません<executions>
。
別のオプション
@ yegor256が指摘しているように、追加の構成では、プラグインから<skip>false</skip>
継承されたものを「リセット」するように明示的に述べています。<skip>
HTH。