При выполнении mvn install
, Я получаю следующую ошибку:
Ошибка, собирающая ВОЙНУ: атрибут webxml требуется (или существующий ранее WEB-INF/web.xml при выполнении в режиме обновления)
Мое дерево структуры веб-приложения похоже на это:
my-app
|-- pom.xml
|-- src
|-- ...
|-- WebContent
|-- ...
|-- META-INF
|-- WEB-INF
|-- classes
|-- ...
|-- lib
|-- **web.xml**
Мой файл АНГЛИЧАНИНА похож на это:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>masters.traffic</groupId>
<artifactId>traffic_web</artifactId>
<packaging>war</packaging>
<name>traffic_web</name>
<version>0.1.0</version>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
...
</project>
Как правильно устранить ту проблему?
С уважением
Я настоятельно рекомендую использовать стандартный макет Maven :
src / main / java
(и удалите элемент sourceDirectory
) src / main / webapp
classes
и lib
в WEB-INF
Конечно, вы можете настроить макет, но это, ИМО, больше проблем и бесполезных усилий, чем преимуществ. Просто соблюдайте условности.
Я предполагаю, что maven-war-plugin
ищет src / main / webapp / WEB-INF / web.xml
, но может не нашел и хочет, чтобы вы явно указали (не стандартное для maven) местоположение. Если вы не можете переименовать WebContent
в webapp
и переместить его в src / main /
(рекомендуется), вы можете попробовать добавить что-то подобное в свой <сборка>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webXml>${basedir}/src/WebContent/WEB-INF/web.xml</webXml>
<warSourceDirectory>${basedir}/src/WebContent</warSourceDirectory>
</configuration>
</plugin>
Взгляните на этот комментарий:
Maven: включение папки META-INF в папку классов
Я считаю, что Maven ожидает папку с именем «webapp», а не «WebContent» .