经常问的问题

  1. WAR 插件中的过滤是如何完成的?
  2. 依赖工件的分类器如何影响我的 WAR 项目?
  3. 如何从我的项目中排除传递依赖?
  4. 使用dependentWarExclude 和提供范围有什么区别?
  5. 如何在我的网络资源中排除文件?
  6. 进行叠加时如何排除文件?
  7. 我在哪里可以找到插件配置的文档?
  8. 如何在我的 webapp 中创建包含类的 JAR?
WAR 插件中的过滤是如何完成的?

要启用过滤,web.xml您必须像这样配置 WAR 插件:

      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.3.2</version>
        <configuration>
          <filteringDeploymentDescriptors>true</filteringDeploymentDescriptors>
        </configuration>
      </plugin>

可以在此处找到示例。

[最佳]


依赖工件的分类器如何影响我的 WAR 项目?

使用时,项目中的依赖项工件的副本会将分类器附加到其文件名中。这可用于区分重复的工件。

[最佳]


如何从我的项目中排除传递依赖?

给它一个“提供的”范围。

[最佳]


使用dependentWarExclude 和提供范围有什么区别?

dependentWarExclude覆盖中用于从组装的 webapp 中排除依赖的 WAR 文件。

[最佳]


如何在我的网络资源中排除文件?

使用<webResources>/<exclude>参数来标识要排除的标记。

有关详细信息,请参阅添加和过滤外部 Web 资源

[最佳]


进行叠加时如何排除文件?

使用dependentWarExcludes参数来标识要排除的标记。

[最佳]


我在哪里可以找到插件配置的文档?

对于每个目标,您可以使用插件站点中的文档。

如果您需要特定版本,请使用mvn site:site或使用以下方式生成它:

mvn help:describe -Dplugin=war -Dfull=true -Dversion=<your-plugin-version-here>

[最佳]


如何在我的 webapp 中创建包含类的 JAR?

如果您只想将类和资源打包为 JAR,WEB-INF/lib 而不是松散的文件WEB-INF/classes,请使用以下配置:

      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.3.2</version>
        <configuration>
          <archiveClasses>true</archiveClasses>
        </configuration>
      </plugin>

如果您需要在另一个项目中重用此 JAR,推荐的方法是将类移动到构建 JAR 的单独模块中,然后从您的 web 应用程序以及任何其他需要的项目中声明对该 JAR 的依赖关系它。

如果您无法将类移动到另一个项目,则可以使用以下配置将 webapp 中包含的类和资源部署为带有分类器的“附加”工件:

<project>
  ...
  <artifactId>mywebapp</artifactId>
  <version>1.0-SNAPSHOT</version>
  ...
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.3.2</version>
        <configuration>
          <attachClasses>true</attachClasses>
        </configuration>
      </plugin>
    </plugins>
  </build>
  ...
</project>

这将导致部署两个工件:mywebapp-1.0-SNAPSHOT.warmywebapp-1.0-SNAPSHOT-classes.jar.

[最佳]