Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.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 使用一个pom和maven创建ear包_Java_Maven_Jakarta Ee - Fatal编程技术网

Java 使用一个pom和maven创建ear包

Java 使用一个pom和maven创建ear包,java,maven,jakarta-ee,Java,Maven,Jakarta Ee,我想用一个ejb项目和依赖项(没有war文件)创建ear应用程序。是否可以在一个pom.xml中指定构建配置,以避免不必要的应用程序模块倍增(我有大约8个项目将以这种方式打包,如果我要以这种“标准”方式进行打包,我必须创建8*3=24个模块/pom)。我不想将所有应用程序放在一个ear中,因为我需要分别取消部署/重新部署它们 现在我有两个解决方案: 使用模块结构以标准方式创建ear: 但正如我提到的,它创造了模的乘法 使用maven shade插件创建具有依赖项的jar <build&g

我想用一个ejb项目和依赖项(没有war文件)创建ear应用程序。是否可以在一个pom.xml中指定构建配置,以避免不必要的应用程序模块倍增(我有大约8个项目将以这种方式打包,如果我要以这种“标准”方式进行打包,我必须创建8*3=24个模块/pom)。我不想将所有应用程序放在一个ear中,因为我需要分别取消部署/重新部署它们

现在我有两个解决方案:

  • 使用模块结构以标准方式创建ear:

    但正如我提到的,它创造了模的乘法

  • 使用maven shade插件创建具有依赖项的jar

    <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.1</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals><goal>shade</goal></goals>
                    <configuration>
                        <finalName>project</finalName>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
    
    
    org.apache.maven.plugins
    maven阴影插件
    2.1
    包裹
    阴凉处
    项目
    

    但是使用这个解决方案,我得到的是jar而不是ear,并且我的依赖项与代码混合在一起


有没有其他方法可以使用单个pom.xml创建只使用ejb和maven依赖项的可部署应用程序?

我不理解的是:
模块的乘法
?你对每一个目的都有一个单一的责任(模块)?问题是什么?正如我提到的,我有8个项目,每个项目我都想成为独立的ear,所以要完成这一点,我需要24个pom.xml(我的意思是pom=module),其中16个仅用于将应用程序打包为ear。如果一个应用程序有一个pom,那么结构会更清晰,添加另一个应用程序不会复制粘贴此结构。您违反了关注点分离原则。您说拥有一个包含EJB/EAR的单一模块意味着您需要编译代码运行测试,而且还需要创建一个包含EJB的EAR文件。如果你想走这条路,试试看,但我不确定这是否真的管用。
<build>
<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>2.1</version>
        <executions>
            <execution>
                <phase>package</phase>
                <goals><goal>shade</goal></goals>
                <configuration>
                    <finalName>project</finalName>
                </configuration>
            </execution>
        </executions>
    </plugin>
</plugins>