当pom.xml打包为ejb时出现Maven错误,但打包为jar时会消失

时间:2014-03-12 18:54:51

标签: java maven java-ee ejb pom.xml

当我将pom.xml打包为EJB时,我得到一个我不理解的错误。如果我以任何方式触摸包,包含Ctrl + S和Maven更新,则会显示此错误。如果我将包装更换回jar,错误就会消失。

代码:

    <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>
    <groupId>com.myorg.buildparent</groupId>
    <artifactId>BuildParent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <groupId>com.myorg.myEjbPackage</groupId>
  <artifactId>MyEjbPackage</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>ejb</packaging>
</project>

通过更改

<packaging>ejb</packaging>

<packaging>jar</packaging>

错误将消失。

错误字符串供参考:

'Building workspace' has encountered a problem.
Errors occurred during the build.
Errors running builder 'Maven Project Builder' on project 'MyEjbPackage'.
org.codehaus.plexus.archiver.ArchiverException

即使我可以删除错误,我仍然觉得它应该打包为ejb。这对任何人都有意义吗?我的EJB包是否需要在pom中打包为EJB?我应该承认,我对Maven的技能大约是新手/低级中级的。

1 个答案:

答案 0 :(得分:1)

尝试在POM中添加此配置。 EJB插件(在选择ejb打包类型时默认绑定到生命周期)不使用与jar / war / ear插件相同的归档版本。

有一个JIRA issue用于更新依赖版本,但它还没有工作。

<pluginManagement>
  <plugins>
     <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-ejb-plugin</artifactId>
        <version>${maven.ejb.plugin.version}</version>
        <dependencies>
          <!-- Use the same archiver as the other [j/w/e]-ar plugins -->
          <!-- See http://jira.codehaus.org/browse/MEJB-52 -->
          <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-archiver</artifactId>
            <version>2.5</version>
          </dependency>
          <dependency>
            <groupId>org.codehaus.plexus</groupId>
            <artifactId>plexus-archiver</artifactId>
            <version>2.3</version>
          </dependency>
        </dependencies>
      </plugin>
    </plugins>
  </pluginManagement>

更新

MEJB-52已在maven-ejb-plugin版本2.4及更高版本中修复。在添加此配置之前,请考虑将插件版本更新为最新版本。