我有一个多模块maven项目: 有三个模块jar,war和ejb
我需要在我的战争中添加ejb依赖来访问ejb bean所以我创建了一个耳朵并将其添加到其中但仍然无法找到ejb bean类。这是耳朵的pom文件。任何人都可以帮助我。并告诉我,我可以直接在战争或父母pom中添加我的ejb依赖关系,因为我已经在某处读到了直接添加ejb依赖关系的不良做法。
http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 ecommunicate.trutheq.ussdproject pom.parent 1.0 Ussd.Project.EAR 耳
<dependencies>
<dependency>
<groupId>ecommunicate.trutheq.ussdproject</groupId>
<artifactId>Ussd.Project.Login</artifactId>
<version>1.0</version>
<type>war</type>
</dependency>
<dependency>
<groupId>ecommunicate.trutheq.ussdproject</groupId>
<artifactId>Ussd.Project.Ejb</artifactId>
<version>1.0</version>
<type>ejb</type>
</dependency>
<dependency>
<groupId>ecommunicate.trutheq.ussdproject</groupId>
<artifactId>Common.Utilities</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-ear-plugin</artifactId>
<version>2.8</version>
<configuration>
<earSourceDirectory>EarContent</earSourceDirectory>
<version>6</version>
<defaultLibBundleDir>lib</defaultLibBundleDir>
<modules>
<webModule>
<groupId>ecommunicate.trutheq.ussdproject</groupId>
<artifactId>Ussd.Project.Login</artifactId>
</webModule>
<ejbModule>
<groupId>ecommunicate.trutheq.ussdproject</groupId>
<artifactId>Ussd.Project.Ejb</artifactId>
<bundleFileName>Ussd.Project.Ejb-1.0-jar-with-dependencies.jar</bundleFileName>
</ejbModule>
</modules>
</configuration>
</plugin>
</plugins>
</build>
答案 0 :(得分:1)
.war模块中的依赖关系可能如下所示。我不确定为什么它可以被视为一种不好的做法,我想不出另一种方法可以在你的war模块中访问你的ejb模块。可能作者的想法是直接在war的lib文件夹中添加ejb .jar而不是将它保存在.ear的lib文件夹中。您阅读它的资源的链接可以帮助澄清这个想法
<dependency>
<groupId>ecommunicate.trutheq.ussdproject</groupId>
<artifactId>Ussd.Project.Ejb</artifactId>
<version>1.0</version>
<type>ejb-client</type>
<scope>provided</scope>
</dependency>
答案 1 :(得分:0)
您可以在war模块中使用任意数量的ejb jar依赖项,并确保不 不良做法。
但是你应该在pom.xml的范围部分中将该依赖关系标记为“提供”,因为它已经在该EAR的顶层可用。
EAR
|
|-lib/someutil.jar
|-EJB.jar
|-my-web.war
| |-WEB_INF/lib
| |-coolutil.jar
|-EJB2.jar
在这里,my-web.war可以依赖于EJB.jar(提供范围)。