Vaadin WARをコンパイルしようとすると、次のエラーが表示されます。
Failed to execute goal org.Apache.maven.plugins:maven-war-plugin:2.1.1:war (default-war) on project testvaadin-web: Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode) -> [Help 1]
このエラーは、Mavenがweb.xmlを見つけられないことを意味しますが、 "Book of Vaadin"ではweb.xmlは必要ないサーブレットAPI 3.0と注釈@WebServlet
あなたのUIクラス。
ウィジェットセットを別のプロファイルでコンパイルしています( this ガイドに従って)。このプロファイルをrnuすると正常にコンパイルされます。ただし、Webプロジェクトのみをコンパイルすると、上記のエラーが発生します。
何が得られますか?
どうにかしてMavenの動作をオーバーライドできますか? VaadinはWEB-INFディレクトリも作成しませんでした。 WEB-INFフォルダーを作成し、そこに「ゴースト」web.xmlを保持してMavenを幸せにできると思いますが、それは正しくないようです。
何か不足していますか?
誰かがこれに対する良い解決策を知っていますか?
デフォルトでは、web.xmlが見つからない場合、maven-war-pluginは失敗します。 here を参照してください。最新のアーキタイプを使用してMavenプロジェクトを作成している場合、このパラメーターはfalseに設定されます。
<build>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
注釈の代わりにweb.xmlを使用する場合は、WEB-INF/web.xmlを作成して、そこにサーブレットを定義するだけです。詳細な手順については、Book of Vaadinを参照してください。
同様のエラーでここに着陸しましたが、Maven 3.0でEclise Luna(4.4)を使用しました
私はこれをやった:
WebContent\WEB-INF\web.xmlをsrc\main\webapp\WEB-INF\webに移動します.xml
使用 <webXml>
はweb.xmlの場所を指定します
<build> <plugins> <plugin> <groupId>org.Apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.0</version> <configuration> <webXml>src\main\webapp\WEB-INF\web.xml</webXml> </configuration> </plugin> </plugins> <!-- we dont want the version to be part of the generated war file name --> <finalName>${project.artifactId}</finalName> </build>
この前に、web.xmlファイルの元のパスを使用してみました
<webXml>WebContent\WEB-INF\web.xml</webXml>
しかし、Mavenは取り上げなかったため、Mavenフォルダー構造に従うのが最善です
http://maven.Apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html
バージョン3.0.0以降、 maven-war-plugin
は、web.xml
なしでそのまま動作します。
少なくともMavenバージョン3.3.9までは、パッケージングwar
は古いバージョンのmaven-war-plugin
にバインドされるため、明示的に設定する必要があります。 pom.xml
のバージョン:
<project>
<build>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
</plugin>
</plugins>
</build>
</project>
maven-war-plugin
の以前のバージョンでは、パラメーター failOnMissingWebXml
がデフォルトでtrue
に設定されていました。これが問題の原因です。プラグインの古いバージョンを使用する必要がある場合、パラメータを手動でfalse
に設定する方法については、 Sergey Makarovsの回答 を参照してください。
ここで説明されている標準のMavenディレクトリレイアウトに従っていない可能性があります Mavenディレクトリレイアウト