Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何配置依赖于ejbjar的war并结合创建ear文件_Java_Maven - Fatal编程技术网

Java 如何配置依赖于ejbjar的war并结合创建ear文件

Java 如何配置依赖于ejbjar的war并结合创建ear文件,java,maven,Java,Maven,我是马文的新手,也在学习它。我在eclipse中有两个项目,一个是包含UI内容的retailproducts,另一个是ejb项目retailservice。我为这两个项目分别编写了pom文件,并且能够生成war和jar文件。我要做的是 a) 我必须在war文件中配置jar文件,因为jar文件包含webappliction所需的ejb内容 b) 创建war文件后,我必须创建ear文件,该文件将依次包含war文件和jar文件 我怎样才能做到这一点 我在这里提供两个pom.xml 4.0.0 零售产

我是马文的新手,也在学习它。我在eclipse中有两个项目,一个是包含UI内容的retailproducts,另一个是ejb项目retailservice。我为这两个项目分别编写了pom文件,并且能够生成war和jar文件。我要做的是

a) 我必须在war文件中配置jar文件,因为jar文件包含webappliction所需的ejb内容
b) 创建war文件后,我必须创建ear文件,该文件将依次包含war文件和jar文件

我怎样才能做到这一点

我在这里提供两个pom.xml


4.0.0
零售产品
零售产品
0.0.1-快照
战争
零售产品
com.sun.faces
JSFAPI
2.1.7
com.sun.faces
jsf impl
2.1.7
javax.servlet
jstl
1.2
javax.servlet
servlet api
2.5
javax.servlet.jsp
jsp api
2.1
com.sun.el
埃尔里
1
JavaServerFaces
org.apache.maven.plugins
maven编译器插件
2.3.1
1.6
1.6
org.apache.maven.plugins
maven战争插件
2.1.1
网络内容


4.0.0
零售服务
零售服务
0.0.1-快照
零售服务
log4j
log4j
1.2.15
javax.mail
邮件
javax.jms
jms
com.sun.jdmk
jmxtools
com.sun.jmx
jmxri
org.hibernate
冬眠核心
3.6.10.最终版本
org.hibernate
休眠注释
3.5.6-最终版本
org.hibernate
hibernate commons注释
3.3.0.ga
org.hibernate
休眠实体管理器
3.6.10.最终版本
org.hibernate.javax.persistence
hibernate-jpa-2.0-api
1.0.1.最终版本
org.slf4j
slf4j-log4j12
1.5.8
javax.ejb
EJBAPI
3
假如
EJB模块
EJB模块
**/*.爪哇
maven编译器插件
3
1.7
1.7

构建同时包含WAR和EJB模块的Java EE 5.0应用程序时,通常有3个Maven模块定义:

  • Web应用程序
  • EJB
  • 耳朵
  • 您有前两个,但没有EAR模块。它应该是这样的:

    <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/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>Retail</groupId>
        <artifactId>RetailEAR</artifactId>
        <packaging>ear</packaging>
        <version>0.0.1-SNAPSHOT</version>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-ear-plugin</artifactId>
                    <version>2.8</version>
                    <configuration>
                        <defaultLibBundleDir>lib</defaultLibBundleDir>
                        <skinnyWars>true</skinnyWars>
                        <version>5</version>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    
        <dependencies>
            <dependency>
                <groupId>RetailService</groupId>
                <artifactId>RetailService</artifactId>
                <type>ejb</type>
                <version>0.0.1-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>RetailProducts</groupId>
                <artifactId>RetailProducts</artifactId>
                <type>war</type>
                <version>0.0.1-SNAPSHOT</version>
            </dependency>
        </dependencies>
    
    </project>
    
    
    4.0.0
    零售业
    零售业
    耳朵
    0.0.1-快照
    org.apache.maven.plugins
    maven耳朵插件
    2.8
    解放党
    真的
    5.
    零售服务
    零售服务
    ejb
    0.0.1-快照
    零售产品
    零售产品
    战争
    0.0.1-快照
    

    然后,当您打包EAR模块时,它会处理web应用程序的依赖项。参数
    skinnyWars
    控制是否应在WAR中复制依赖项。通常,您不希望在WAR中使用它们,因为web应用程序可以从EAR本身访问它们。

    您想要的是将一个项目构建的JAR添加到另一个项目中?@该JAR包含会话bean和jpa数据持久性文件,iam使用JSF,其中托管bean将依赖于ejb层,从Managed Beans开始,我正在调用远程ejb。好的,您能否将依赖项
    RetailServiceRetailService0.0.1-SNAPSHOT
    添加到
    RetailProducts
    项目中?是的,这是唯一的解决方案您的答案在这里:谢谢!我没有将
    EJB
    依赖项包含在EAR项目的
    pom.xml
    中,因为我将其作为依赖项包含在WAR项目的
    pom.xml
    中。这导致
    EJB
    无法启动。将
    EJB
    依赖项添加回EAR项目的pom.xml后,一切都恢复正常。另外,
    skinnyWars
    是一种很好的配置。@fnt您是否必须在每个模块上执行“mvn安装”?@user311525执行它是为了什么?@fnt如果我在RetailProducts模块上更改了某些内容,我是否必须在本地存储库中安装它,然后才能打包ear?@user311525我不知道您的交付过程。这是一个关于Maven的一般性问题,我不认为这与我对原始问题的回答有任何关系。Maven构建生命周期的详细描述见