我在使用maven和Jboss 7的web应用程序上工作3个模块ejb ear和war所以战争将ejb作为依赖,而ejb将同时成为耳朵的模块,所以当我这样做时我在这棵树上得到了两次相同的ejb
ear
...Mywar
........Myejb
...Myejb
这个结构是正确的还是我应该改变另一个
战争的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>tn.war.ep</groupId>
<artifactId>businessModule</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
.....
<dependency>
<groupId>tn.linckia.epgp</groupId>
<artifactId>ejbModule</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>ejb</type>
</dependency>
</dependencies>
</project>
耳朵的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>tn.war.ep</groupId>
<artifactId>earModule</artifactId>
<version>0.0.1</version>
<packaging>ear</packaging>
<build>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.4</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.6</version>
<configuration>
<modules>
<webModule>
<groupId>tn.war.ep</groupId>
<artifactId>businessModule</artifactId>
<bundleFileName>businessModule.war</bundleFileName>
<contextRoot>/businessModule</contextRoot>
</webModule>
<ejbModule>
<groupId>tn.war.ep</groupId>
<artifactId>ejbModule</artifactId>
<bundleFileName>ejbModule.jar</bundleFileName>
</ejbModule>
</modules>
<displayName>Security</displayName>
</configuration>
</plugin>
</plugins>
<finalName>AuthModule</finalName>
</build>
<dependencies>
<dependency>
<groupId>tn.war.ep</groupId>
<artifactId>businessModule</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>war</type>
</dependency>
<dependency>
<groupId>tn.war.ep</groupId>
<artifactId>ejbModule</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>ejb</type>
</dependency>
</dependencies>
</project>
答案 0 :(得分:3)
配置EAR模块的正确方法是将EJB jar依赖于&#34;提供&#34; WAR模块中的范围,并且直接在EAR下使用EJB jar,如下所示:
EAR
|
|-lib/someutil.jar
|-EJB.jar
|-my-web.war
| |-WEB_INF/lib
| |-coolutil.jar
|-EJB2.jar
但是my-web.war可以依赖于任何EJB.jar,但它在运行时由容器解析。因此,请将ejb依赖关系标记为&#34;提供&#34; (通过容器)在WAR的pom.xml中。
答案 1 :(得分:1)
选项:#1
Yon甚至不需要耳朵。 您可以将所有EJB作为jar放入战争中。 只需将EJB项目作为依赖项添加到War项目中。
选项:#2
如果你还想要EAR。所有EJB项目输出都应该是jar。并且Web项目输出应该是战争。最后,这些EJB jar和web war将放在一个EAR中。这是一种古老的时尚方式,为了保持简单,您可以按照我在上面的选项#1中解释的方法。
答案 2 :(得分:0)
我有这个问题,并在ejb模块pom.xml中将ejb包装标签从ejb更改为jar修复了该问题。不知道为什么!