0

我是在战争和罐子之间创造耳朵和交流的新手......

我有两场具有完全独立功能的战争。现在我要创建一个 Ear,其中两个应用程序必须使用相同的功能,它包含在一个 jar 中。但要求是我不能在两者的 Pom.xml 中包含该 jar,而是使用该 jar,其中所有3只在单耳下。这可能吗?我已经用 2 次独立战争测试了 Ear,现在它工作正常,如何实现上述目标我没有得到这个。
我将 Maven 与 Jboss7.1.1 一起使用。
我浏览了 JAR/WAR/EAR 中的 MessageHandler之类的链接,https://stackoverflow.com/questions/1796255/tell-me-a-clear-difference-between-ear-war-and-jar但对上述内容一无所知问题。

4

2 回答 2

0

您可以将多个战争和罐子放入耳朵中,它们可以共享同一个类加载器。这意味着所有的类都可以从所有的 jars/wars 中访问。即,就好像所有的类/资源都在一个档案中,没有子包装。

我假设这就是你所说的“战争和罐子之间的交流”。

编辑:检查使用 Maven 制作 EAR 以获取用于构建耳朵的 pom.xml 示例。在示例中,有一个罐子和一场战争,但您可以有任意数量的战争/罐子。

于 2013-02-16T11:01:23.317 回答
0
Hi got the solution >> here it is.. this is a pom.xml of ear project


<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>Test</groupId>
  <artifactId>Test</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>ear</packaging> 

<dependencies>
    <!--Dependency for jar-->
    <dependency>
        <groupId>com.jar</groupId>
        <artifactId>com.jar</artifactId>
        <version>1.0</version>
        <type>war</type>
    </dependency>
    <!--Dependency for war1-->
    <dependency>
        <groupId>com.war2</groupId>
        <artifactId>com.war2</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <type>war</type>
    </dependency>       
    <!--Dependency for war2-->  
    <dependency>
        <groupId>com.war1</groupId>
        <artifactId>com.war1</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <type>war</type>
    </dependency>
</dependencies>

<build>
    <finalName>Project</finalName>
    <plugins>
        <plugin>
            <artifactId>maven-ear-plugin</artifactId>
            <version>2.8</version>
            <configuration>
                <finalName>MyEarFile</finalName>
                <version>5</version>
                <modules>
                    <!--Webmodule for war1-->
                    <webModule>
                        <groupId>com.war1</groupId>
                        <artifactId>com.war1</artifactId>
                        <uri>war1.war</uri>
                        <bundleFileName>war1.war</bundleFileName>
                    </webModule>

                    <!--Webmodule for war2-->
                    <webModule>
                        <groupId>com.war2</groupId>
                        <artifactId>com.war2</artifactId>
                        <uri>war2.war</uri>
                        <bundleFileName>war2.war</bundleFileName>
                    </webModule>
                </modules>
            </configuration>
        </plugin>
    </plugins>
  </build>
</project>




Note:: groupId and artifactId metioned here must match with groupId and artifactId mentioned in the project's pom.xml.
Also dependency of jar must be present in this i.e. ear's pom.xml and not in both app's pom.xml.
At time of maven install it automatically refers to jar's contents..
于 2013-02-16T13:07:47.033 回答