5

我首先使用 CXF教程遵循 合同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),但我也明白,这个插件暗示了这一点,因为即使官方使用页面也展示了这一点:

<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 的?

有没有办法强迫它产生战争?

4

2 回答 2

14

包装应如下所示。

<packaging>war</packaging>

如果没有帮助,请尝试将您的插件配置与生命周期阶段绑定。

于 2013-08-01T23:48:59.733 回答
7

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

   <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

于 2013-08-02T06:43:31.653 回答