使用Maven插件的战争,我产生WAR其中包括以下目录:如何从Maven生成的war中排除pom.xml?
META-INF -- maven -- com.abc.def -- myServlet -- pom.xml -- pom.properties
在释放,我想这个Maven的目录中排除。我怎样才能做到这一点?
我试过最新的maven-war-plugin(2.1-beta-1),它有配置“packagingExcludes”,但它不起作用,因为我希望。
有什么建议吗?
使用Maven插件的战争,我产生WAR其中包括以下目录:如何从Maven生成的war中排除pom.xml?
META-INF -- maven -- com.abc.def -- myServlet -- pom.xml -- pom.properties
在释放,我想这个Maven的目录中排除。我怎样才能做到这一点?
我试过最新的maven-war-plugin(2.1-beta-1),它有配置“packagingExcludes”,但它不起作用,因为我希望。
有什么建议吗?
使用标准的Maven包装,你不能忽略我所知的文件。但是可以使用maven-assembly-plugin来构建战争,在这种情况下,您可以更好地控制工件的内容,并可以省略pom.xml。
但是我个人发现保留pom.xml用于诊断目的非常有用。在试图找出你的应用程序出了什么问题时,了解构建和组装战争时使用的是什么是非常方便的。
更新:在与帕斯卡答案同步的奇怪位上,我刚刚读到Archiver reference,看来这可以通过将addMavenDescriptor
属性设置为false来完成。就我个人而言,由于上述原因,我仍然会避免这样做。但是你可能想要改变你对帕斯卡答案的接受程度。
将META-INF文件夹放入资源目录或源目录的根目录将会破坏由Maven创建的META-INF内容。对于WAR文件,将META-INF放入您的Web内容目录中将会执行相同的操作。
向该定制META-INF添加其他内容将覆盖maven创建的内容。
我在资源目录中放置了一个META-INF文件夹,不仅maven /目录被插入,而且我的MANIFEST.MF文件被覆盖。我正在使用maven-war-plugin 2.0版。我试过版本2.1.beta-1,仍然是一样的。 – user179080 2009-09-25 20:46:22
我不确定,但我认为Maven Archiver(主要用于插件处理包装)可以配置为实现此目的。
关于<addMavenDescriptor>
元素,Maven的归档Reference说:
是否生成的存档将包含这两个Maven的文件:在
META-INF/maven/${groupId}/${artifactId}/pom.xml
- 的POM文件,位于存档
- A
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,巧合的是,我只是在编辑我的答案的方式上阅读了一下这个问题的存档:http://stackoverflow.com/questions/1510071/ – 2009-10-02 17:23:43
嗯,我只是在挖掘时发现了这一点清单问题的存档者:)如果您想更新您的答案,请告诉我。 – 2009-10-02 17:38:44
我更新了我的答案,并建议OP接受你的答案,然后一些讨厌的人低估了我。迷人的 – 2009-10-02 17:43:14
<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>
+1感谢丰富的对所有的Maven相关的问题你有见地的意见! :-)我学会了你所有的答案。在这一点上,我对第二段特别感兴趣,更多与最佳实践和经验教训有关。 – KLE 2009-09-25 15:05:28
我同意诊断目的。但是,我们在pom.xml中有一些特殊的定制,它揭示了构建机器上的文件结构。当然,我们不想将这些信息暴露给客户或任何用户。我会尝试maven-assembly-plugin。谢谢! – user179080 2009-09-25 15:27:08
我倾向于同意Rich(我发现保留这些文件也很方便),但我认为Maven Archiver提供了一个允许避免打包这些文件的配置选项。请参阅下面的答案。 – 2009-10-02 17:17:21