如何从Maven生成的战争中排除pom.xml?

时间:2009-09-25 14:22:37

标签: maven-2 pom.xml

使用Maven war插件,我生成包含以下目录的WAR:

META-INF
-- maven
   -- com.abc.def
      -- myServlet
         -- pom.xml
         -- pom.properties

在发布中,我想要排除这个maven目录。我怎么能这样做?

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

有什么建议吗?

4 个答案:

答案 0 :(得分:40)

我不确定,但我认为可以配置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>

答案 1 :(得分:14)

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

但是我个人发现保留pom.xml用于诊断目的很有用。在试图弄清楚你的应用程序出了什么问题时,了解用于构建和组装战争的内容非常方便。

更新:与Pascal的回答奇怪的同步,我刚刚阅读了Archiver reference,看来这可以通过将addMavenDescriptor属性设置为false来完成。就个人而言,由于上述原因,我仍然会避免这样做。但是你可能想要改变你对Pascal答案的接受度。

答案 2 :(得分:0)

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

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

答案 3 :(得分: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>