【发布时间】:2011-11-24 10:06:49
【问题描述】:
我在使用 Maven 构建时遇到了问题。我有几个 ejb 项目。在 maven 构建之后,jar 文件在 META-INF/maven 中包含两次 maven 描述符,即如果我将文件提取到磁盘 7zip 会要求覆盖文件,尽管提取到新文件夹。如果在 ejb 插件的归档标签中指定 <addMavenDescriptor>false</addMavenDescriptor>,则仍然会生成 maven 描述符,但只会生成一次。是否有其他地方可以禁用 Maven 描述符生成,或者有人知道重复生成的原因吗?
Maven 版本为:3.0.3
项目结构如下:
-pom
-ejb
这里是 EJB 模块的 pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>TestMavenDescriptors</artifactId>
<groupId>de.test</groupId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>..</relativePath>
</parent>
<artifactId>TestEJB</artifactId>
<packaging>ejb</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ejb-plugin</artifactId>
<version>2.3</version>
<configuration>
<ejbVersion>3.1</ejbVersion>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
这里是父项目的pom.xml。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>de.test</groupId>
<artifactId>TestMavenDescriptors</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>TestEJB</module>
</modules>
</project>
【问题讨论】:
-
我会按照maven.apache.org/plugins/maven-ejb-plugin 中的说明将此作为插件开发人员的问题发布,或者先将其发布到他们的邮件列表中,询问您的 pom.xml 文件中是否存在错误配置(其中我不认为是这种情况)。我在使用 maven-war-plugin 时遇到了类似的问题,它在 WAR 文件中两次生成了一个 web.xml 文件。我们最后只是忽略了它,因为您的 JEE 服务器几乎肯定也会忽略它。