在Maven中将ejb客户端指定为依赖项

4
我有两个EJB,A和B(在不同的jar文件中),EJB A调用EJB B的一个方法。
从以下Maven文档中,我使用generateClient创建ejb-client并使用ejb-client依赖项获取jar。 http://maven.apache.org/plugins/maven-ejb-plugin/examples/generating-ejb-client.html http://people.apache.org/~aramirez/maven-ejb-plugin/examples/ejb-client-dependency.html
使用Maven构建、部署和运行都没问题。问题是,尽管项目A只需要EJB B的接口类,但Maven会将所有EJB B的依赖库包含到EJB A的依赖项中。结果是EJB A将拥有大量不必要的jar文件。是否有任何解决方案来解决这个问题?
2个回答

2

我找到了另一个解决方案,Maven的依赖关系具有排除功能,我使用它来删除一些jar文件。

<dependencies>
   <dependency>
       <groupId>com.example</groupId>
       <artifactId>ejb-project</artifactId>
       <version>1.0-SNAPSHOT</version>
       <type>ejb-client</type>      
       <exclusions>
         <exclusion>
           <groupId>sample.ProjectD</groupId>
           <artifactId>Project-D</artifactId>
         </exclusion>
       </exclusions>          
   </dependency>       
</dependencies>

4
请注意,在Maven 3中,您可以使用'*'的groupId和artifactId来排除所有依赖项。这在您的情况下可能很有用。 - Haakon
@Haakon 在我的 Eclipse 和 NetBeans 嵌入式 Maven 中,它显示一个警告,说使用 '*' 是错误的,虽然现在可以容忍,但在将来会被弃用。 - ArturoTena

0
唯一的方法是将 EJB B 的接口移动到一个单独的 jar 包中。然后在 EJB A 和 B 项目/模块中使用它作为依赖项。

是的,ejb-client会为其他项目生成一个单独的jar包以便依赖。 - Dennys

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接