为什么maven-war-plugin会生成JAR而不是WAR?

时间:2013-08-01 23:34:34

标签: maven maven-3 maven-plugin maven-war-plugin

我首先使用CXF 教程关注this 合同,当生成的pom.xml生成源代码,甚至成功完成构建时,它无法创建一个WAR文件。

相反,它会创建一个JAR文件。

我的理解是pom.xml中负责创建WAR的部分是:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-war-plugin</artifactId>
  <version>2.1.1</version>
  <configuration>
    <outputDirectory>D:/path/to/profile/autodeploy</outputDirectory>
  </configuration>
 </plugin>

我在那里看不到任何<goal><execution>元素(与build-helper-maven-plugin中的元素不同),但我也明白,使用此插件时,这甚至可以隐含{{{ 3}}演示:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.4</version>
        <configuration>
          <webappDirectory>/sample/servlet/container/deploy/directory</webappDirectory>
        </configuration>
      </plugin>
    </plugins>
  </build>
  ...
</project>

那么......我错过了什么?

什么可能解释maven-war-plugin以这种意外的方式表现并默认生成JAR而不是WAR?

有没有办法强制它产生WAR?

2 个答案:

答案 0 :(得分:13)

包装应如下所示。

<packaging>war</packaging>

如果无效,请尝试将插件配置与生命周期阶段绑定。

答案 1 :(得分:6)

在您的项目定义中,请检查包装是否缺失,应该是这样的。

   <groupId>some.groupid</groupId>
   <artifactId>My Web Application</artifactId>
   <version>0.0.1</version>
   <packaging>war</packaging>
   <description>My First Web Application</description>

默认情况下,maven war插件绑定到package phase of the lifecycle,因此重要的是我们应该在构建完成后提及我们想要的打包类型。

我建议您查看Maven specs for war plugin