21

使用 Maven 战争插件,我生成 WAR,其中包括以下目录:

元信息
-- 行家
   -- com.abc.def
      -- myServlet
         -- pom.xml
         -- pom.properties

在发布时,我想排除这个 Maven 目录。我怎样才能做到这一点?

我尝试了最新的 maven-war-plugin (2.1-beta-1),它具有配置“packagingExcludes”,但它不能按我的意愿工作。

有什么建议么?

4

4 回答 4

43

我不确定,但我认为可以配置Maven Archiver(主要由插件用于处理打包)来实现这一点。

关于<addMavenDescriptor>元素,Maven Archiver Reference说:

生成的存档是否会包含这两个 Maven 文件:

  • pom 文件,位于存档中META-INF/maven/${groupId}/${artifactId}/pom.xml
  • 一个pom.properties文件,位于存档中META-INF/maven/${groupId}/${artifactId}/pom.properties

默认值是true。

所以像这样配置的 pom 应该可以解决问题:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.0</version>
        <configuration>
          <archive>
            <addMavenDescriptor>false</addMavenDescriptor>
          </archive>
        </configuration>
      </plugin>
      ...
    </plugins>
  </build>
  ...
</project>
于 2009-10-02T17:14:34.000 回答
14

据我所知,使用标准的 Maven 包装,您不能省略该文件。然而,可以使用maven-assembly-plugin来构建战争,在这种情况下,您可以更精细地控制工件的内容,并且可以省略 pom.xml。

但是,我个人发现保留 pom.xml 用于诊断目的很有用。在试图找出您的应用程序出了什么问题时,了解用于构建和组装战争的东西会很方便。

更新:与 Pascal 的回答有点奇怪的同步性,我刚刚阅读了Archiver 参考资料,看来这可以通过将addMavenDescriptor属性设置为 false 来完成。出于上述原因,我个人仍然会避免这样做。但是您可能希望将您的接受更改为 Pascal 的答案。

于 2009-09-25T14:39:12.680 回答
0

将 META-INF 文件夹放在资源目录或源目录的根目录中会破坏 Maven 创建的 META-INF 内容。对于 WAR 文件,将 META-INF 放在您的 Web 内容目录中也可以。

向该自定义 META-INF 添加其他内容将覆盖 Maven 将创建的内容。

于 2009-09-25T15:39:00.000 回答
0
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.1</version>
    <configuration>
        <warSourceExcludes>pom.xml</warSourceExcludes>
    </configuration>
</plugin>

或者

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.1</version>
    <configuration>
        <warSourceExcludes>here/there/everywhere/a/pom.xml</warSourceExcludes>
    </configuration>
</plugin>
于 2014-06-11T22:04:13.923 回答