带有 ejb 和 war 模块的 Maven Ear 项目

elp*_*zio 6 java jboss maven jakarta-ee

我正在使用maven和Jboss 7开发一个Web应用程序,其中包含3个模块ejb Ear和war,因此war将把ejb作为依赖项,而ejb将同时成为ear的一个模块,所以当我这样做时,我得到了这棵树上有两次相同的 ejb

ear
...Mywar
........Myejb
...Myejb
Run Code Online (Sandbox Code Playgroud)

这个结构是正确的还是我应该改变另一个

战争的 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>
Run Code Online (Sandbox Code Playgroud)

耳朵的 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>
Run Code Online (Sandbox Code Playgroud)

Jay*_*Jay 1

选项1

你甚至不需要耳朵。您可以将所有 EJB 作为 jar 放入战争中。只需将 EJB 项目添加为 War 项目中的依赖项即可。

选项:#2

如果你还想要 EAR。所有 EJB 项目输出都应该是 jar。而web项目的输出应该是war。最后,这些 EJB jar 和网络战争将被放置在一个 EAR 中。这是一种老式的方法,为了简单起见,您可以遵循我在选项 #1 中解释的方法。