【问题标题】:Maven command for ear project耳朵项目的Maven命令
【发布时间】:2013-12-09 08:58:39
【问题描述】:

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

------ root
  |
  |--- EAR
        |
        |---- EJB (JAR)
        |
        |---- WEB (WAR)

我想为它制定一个目标,首先清理所有三个 EAR 、 EJB 、 WEB 、模块 然后首先安装EJB,然后安装WEB,最后安装EAR 因为它们的依赖关系

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

这是我的 root 的 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>

【问题讨论】:

    标签: maven jakarta-ee ear


    【解决方案1】:

    您需要 maven multi module project 设置。看看这个教程here。您需要的一切都可以通过它进行配置

    编辑

    在你的父 pom 中有一个条目为

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

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

    【讨论】:

    • 谢谢,但我已经完成了所有这些事情,问题是当我不清理我的 ejb 或 war 并尝试安装 ear 时,它使用旧的 ejb 或 war 并且它不会自动安装 ejb 和战争,我必须手动清理战争,罐子,安装它们,然后安装耳朵,我想写一个命令来做所有这些事情
    • 如果它不能这样工作,那么这意味着你有一些不同的设置。您可以在帖子中发布您的父 pom.xml 吗?您在 pom.xml 中添加模块的位置
    • 一切正常,一切正常,但是当我想清理或安装任何模块时,我必须使用 IDE 向导一个一个地完成,我想要一个如下所示的命令行,我可以运行它可以完成我想要的所有工作:例如:mvn clean module jar,module war,module ear,install module jar,module war,module ear 但语法正确
    • 如果你在父 pom 上触发命令mvn clean install,它会首先清理你所有的模块目标目录,然后在连续的目录中安装相关的 jars/wars。而且你还没有在这里显示父 pom
    • 如果我清理并安装父级,它使用旧 Jar 和 war 来制作新耳朵,耳朵本身将是新的,但使用旧 jar
    猜你喜欢
    • 1970-01-01
    • 2016-11-21
    • 1970-01-01
    • 2012-04-23
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多