执行mvn install
时,我遇到以下错误:
汇编WAR:webxml属性时出错 是必需的(或预先存在的 如果在更新中执行,则为WEB-INF / web.xml 模式)
我的Web应用程序结构树是这样的:
my-app
|-- pom.xml
|-- src
|-- ...
|-- WebContent
|-- ...
|-- META-INF
|-- WEB-INF
|-- classes
|-- ...
|-- lib
|-- **web.xml**
我的POM文件如下:
<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>
如何正确解决该问题?
此致
答案 0 :(得分:19)
我强烈建议使用Maven's standard layout:
src/main/java
(并删除sourceDirectory
元素)src/main/webapp
classes
lib
和WEB-INF
目录
当然,你可以自定义布局,但这比IMO更有麻烦和无用的努力而不是好处。请遵循惯例。
答案 1 :(得分:13)
我的猜测是maven-war-plugin
正在寻找src/main/webapp/WEB-INF/web.xml
,但无法找到它,并希望您明确指定(非maven标准)位置。如果您无法将WebContent
重命名为webapp
并将其移至src/main/
(推荐)下,则可以尝试向<build>
<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>
答案 2 :(得分:1)
看看这条评论:
Maven: Including a META-INF folder in the classes folder
我相信Maven需要一个名为“webapp”的文件夹,而不是“WebContent”。
答案 3 :(得分:0)
我最近遇到了这个问题,问题是我的资源类没有在类的顶部指定初始路径。每个方法都指定了一个路径,但没有指定初始路径。
示例:
@Path("/")
public class MyResource {
@GET
@Produces("text/html")
public String foo() {
return "foo";
}
@GET
@Path("pt")
@Produces("text/html")
public String bar() {
return "bar";
}
工作得很好。但是,
public class MyResource {
@GET
@Produces("text/html")
public String foo() {
return "foo";
}
@GET
@Path("pt")
@Produces("text/html")
public String bar() {
return "bar";
}
不会
答案 4 :(得分:0)
如果您正在使用eclispe,请务必右键单击该项目并创建一个Maven&#34;项目。&#34;您可以使用mvn generate:archetype -B -cpu从命令行编译批处理,但您可能需要手动构建一些内容。有了它,它将作为Web应用程序或客户端应用程序运行。将此代码添加到pom.xml。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>