Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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
ear项目的Maven命令_Maven_Jakarta Ee_Ear - Fatal编程技术网

ear项目的Maven命令

ear项目的Maven命令,maven,jakarta-ee,ear,Maven,Jakarta Ee,Ear,我有一个基于EAR maven的项目,其结构如下: ------ root | |--- EAR | |---- EJB (JAR) | |---- WEB (WAR) 我想为它制定一个目标,首先清理所有三个EAR、EJB、WEB和模块 然后首先安装EJB,然后安装WEB,最后安装EAR 因为它们的依赖性 我如何在maven中的一个命令行中完成它 这是我的pom.xml根目录 <url>http://jb

我有一个基于EAR maven的项目,其结构如下:

------ root
  |
  |--- EAR
        |
        |---- EJB (JAR)
        |
        |---- WEB (WAR)
我想为它制定一个目标,首先清理所有三个EAR、EJB、WEB和模块 然后首先安装EJB,然后安装WEB,最后安装EAR 因为它们的依赖性

我如何在maven中的一个命令行中完成它

这是我的pom.xml根目录

   <url>http://jboss.org/jbossas</url>
<licenses>
    <license>
        <name>Apache License, Version 2.0</name>
        <distribution>repo</distribution>
        <url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
    </license>
</licenses>
<modules>
    <module>ejb</module>
    <module>web</module>
    <module>ear</module>
</modules>

<properties>
<dependencyManagement>
    <dependencies>

        <!-- Define the version of the EJB jar so that we don't need 
            to repeat ourselves in every module -->
        <dependency>
            <groupId>RHAMavenBased</groupId>
            <artifactId>RHAMavenBased-ejb</artifactId>
            <version>${project.version}</version>
            <type>ejb</type>
        </dependency>

        <!-- Define the version of the WAR so that we don't need to repeat 
            ourselves in every module -->
        <dependency>
            <groupId>RHAMavenBased</groupId>
            <artifactId>RHAMavenBased-web</artifactId>
            <version>${project.version}</version>
            <type>war</type>
            <scope>compile</scope>
        </dependency>
http://jboss.org/jbossas
Apache许可证,版本2.0
回购
http://www.apache.org/licenses/LICENSE-2.0.html
ejb
网状物
耳朵
鼠脑型
基于rhamaven的ejb
${project.version}
ejb
鼠脑型
基于rhamaven的web
${project.version}
战争
编译

您需要maven
多模块项目设置。看看本教程。您需要的一切都可以通过此配置配置

编辑

您的家长pom中有一个条目

    <dependency>
        <groupId>RHAMavenBased</groupId>
        <artifactId>RHAMavenBased-ejb</artifactId>
        <version>${project.version}</version>
        <type>ejb</type>
    </dependency>

鼠脑型
基于rhamaven的ejb
${project.version}
ejb

我没有弄错,这里${project.version}是您正在构建的父pom的版本,因为它是在父pom中指定的,所以这种依赖关系会向下延伸到所有子模块,这在您的情况下不是一个好主意,因为EJB项目将依赖于自身(这是一个糟糕的设计)。理想情况下,模块不应依赖于自身。因此,我们的第一个问题是模块中的冗余依赖。其次,由于这是在父pom中定义的,并且正在从父pom读取
${project.version}
,因此在m2、target和构建路径中可能存在版本不匹配甚至不同步的JAR

谢谢,但我已经做了所有这些事情,问题是当我没有清理我的ejb或war并尝试安装ear时,它使用旧的ejb或war,它不会自动安装ejb和war,我必须手动清理war、jar、安装它们,然后安装ear,我想写一个命令来做所有这些事情,如果它不能像那样工作,那就意味着你有一些不同的设置。你能把你的父母pom.xml放在这里吗?您在pom.xml中添加了模块,一切正常,但当我想要清理或安装任何模块时,我必须使用IDE向导逐一进行清理或安装,我需要一个如下的命令行,我可以运行它来完成我想要的所有工作:例如:mvn clean module jar、module war、module ear、install module jar、,模块war、模块ear但在正确的语法中如果在父pom上启动命令
mvn clean install
,它将首先清理所有模块目标目录,然后在连续目录中安装相关JAR/war。您还没有在这里显示父pom如果我清理并安装父pom,它将使用旧的Jar和war来制作新的ear,ear本身将是新的,但是使用旧的Jar