【问题标题】:Why would a maven-war-plugin generate a JAR instead of a WAR?为什么 maven-war-plugin 会生成 JAR 而不是 WAR?
【发布时间】:2013-08-01 23:34:33
【问题描述】:

我正在关注this Contract first using 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>

我在那里看不到任何 &lt;goal&gt;&lt;execution&gt; 元素(与 build-helper-maven-plugin 中的元素不同),但我也明白,使用此插件,即使 official usage page 也表明了这一点:

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

【问题讨论】:

  • 在 POM 中的某处是否应该有 &lt;packaging&gt;war&lt;/packaging&gt;

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


【解决方案1】:

包装应如下所示。

<packaging>war</packaging>

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

【讨论】:

    【解决方案2】:

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

       <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

    【讨论】:

      猜你喜欢
      • 2012-06-07
      • 1970-01-01
      • 1970-01-01
      • 2014-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多