Maven EAR插件 - 两个具有相同ArtifactId

时间:2017-04-26 07:40:23

标签: maven ear

当EAR模块具有两个(或更多)具有相同artifactId的依赖项时,Maven将这些依赖项复制到/lib目录中,一个重写另一个。{1}}目录。最后,EAR中只有一个图书馆。

<dependency>
    <groupId>com.group1</groupId>
    <artifactId>same-artifact</artifactId>
</dependency>
<dependency>
    <groupId>com.group2</groupId>
    <artifactId>same-artifact</artifactId>
</dependency>

是否有可能手动重命名依赖项(别名?)或使用全名(com.group1.same-artifact.jar而不是same-artifact.jar)复制JAR?

编辑: 它只是关于传递依赖的,最终的EAR 应该看起来像这样:

/lib
    /com.group1.same-artifact.jar
    /com.group2.same-artifact.jar
/myModule.ejb

1 个答案:

答案 0 :(得分:0)

此问题有两种解决方案。一种是改变fileNameMapping via配置,如下所示:

<project>
  [...]
  <build>
    [...]
    <pluginManagement>
    <plugins>
      [...]
      <plugin>
        <artifactId>maven-ear-plugin</artifactId>
        <version>2.10.1</version>
        <configuration>
          <fileNameMapping>full</fileNameMapping>
        </configuration>
      </plugin>
   [...]
</project>

将为所有这些工件使用groupId+artifactId+version个工件。

或者您只能对artifacts where a clash exsits这样的人进行此更改:

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-ear-plugin</artifactId>
        <version>2.10.1</version>
        <configuration>
           [...]
           <modules>
             <ejbModule>
               <groupId>artifactGroupId</groupId>
               <artifactId>artifactId</artifactId>
               <bundleFileName>anotherName-1.2.3.jar</bundleFileName>
             </ejbModule>
          </modules>
        </configuration>
      </plugin>
    </plugins>
  </build>