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

Ete*_*ner 5 maven-plugin maven-3 maven maven-war-plugin

首先使用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>
Run Code Online (Sandbox Code Playgroud)

我没有看到任何<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>
Run Code Online (Sandbox Code Playgroud)

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

什么可以解释一个maven-war-plugin像这样的意外行为,并默认生成一个JAR而不是一个WAR?

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

Jaf*_*may 14

包装应如下.

<packaging>war</packaging>
Run Code Online (Sandbox Code Playgroud)

如果它没有用,那么尝试将插件配置与生命周期阶段绑定.


sau*_*rav 6

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

   <groupId>some.groupid</groupId>
   <artifactId>My Web Application</artifactId>
   <version>0.0.1</version>
   <packaging>war</packaging>
   <description>My First Web Application</description>
Run Code Online (Sandbox Code Playgroud)

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

我想建议看一下Maven的战争插件规格.