ここに課題があります:なぜこのビルドが失敗するのですか?
存在しないweb.xmlファイルで失敗しないようにMavenのmaven-war-pluginを構成しました。
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<executions>
<execution>
<id>prepare-war</id>
<phase>prepare-package</phase>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
<archiveClasses>false</archiveClasses>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix />
</manifest>
<manifestEntries>
<Implementation-Build>${build.number}</Implementation-Build>
<Implementation-Title>${project.name}</Implementation-Title>
<Built-By>${user.name}</Built-By>
<Built-OS>${os.name}</Built-OS>
<Build-Date>${build.date}</Build-Date>
</manifestEntries>
</archive>
<webResources>
<resource>
<!-- this is relative to the pom.xml directory -->
<directory>./target/dist</directory>
</resource>
</webResources>
</configuration>
</execution>
</executions>
</plugin>
しかし、この構成にもかかわらず、次のように失敗し続けます。
[ERROR] Failed to execute goal org.Apache.maven.plugins:maven-war-plugin:2.4:war (default-war) on project com.specktro.orchid.operations.portal.frontend: Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode) -> [Help 1]
私は実際にはweb.xmlを持っていないので、それなしで戦争を組み立てるためにそれが必要です。
偽物を追加してみました<webXml>none</webXml>
構成に追加しましたが、何も変更されませんでした...
何が足りないのですか?
POMの実行IDはprepare-war
です。 Mavenは、パッキングタイプwar
のプロジェクトに対して、独自のwarプラグインのデフォルト実行を実行します。デフォルトの実行のIDはdefault-war
です。 POMが現在構成されているため、war
ゴールは2回実行されています。
エラーメッセージを見ると:
[ERROR] Failed to execute goal org.Apache.maven.plugins:maven-war-plugin:2.4:war (default-war) on project com.specktro.orchid.operations.portal.frontend: Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode) -> [Help 1]
括弧(default-war)
で失敗する実行IDが表示される場合があります。実行IDをdefault-war
に変更すると、問題は解決し、戦争目標の2回の実行が実行されなくなります。
これは機能するはずです:
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
<executions>
<execution>
<id>prepare-war</id>
<phase>prepare-package</phase>
<configuration>
<archiveClasses>false</archiveClasses>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix />
</manifest>
<manifestEntries>
<Implementation-Build>${build.number}</Implementation-Build>
<Implementation-Title>${project.name}</Implementation-Title>
<Built-By>${user.name}</Built-By>
<Built-OS>${os.name}</Built-OS>
<Build-Date>${build.date}</Build-Date>
</manifestEntries>
</archive>
<webResources>
<resource>
<!-- this is relative to the pom.xml directory -->
<directory>./target/dist</directory>
</resource>
</webResources>
</configuration>
</execution>
</executions>
</plugin>
<failOnMissingWebXml>false</failOnMissingWebXml>
セクションは、実行ではなくプラグイン構成に移動されていることに注意してください。
この問題は、現在使用しているバージョンに関連しています。ローカルリポジトリを確認し、ダウンロード済みのバージョンを確認する必要があります。 .m2
フォルダーに移動して、
.m2\repository\org\Apache\maven\plugins\maven-compiler-plugin
そのフォルダでは、利用可能なバージョンを確認できます。
フォルダにあるバージョンのバージョンを変更すると、機能します。