我有一个基于EAR maven的项目,其结构如下所示:
------ root
|
|--- EAR
|
|---- EJB (JAR)
|
|---- WEB (WAR)
我想首先清理所有三个EAR,EJB,WEB模块 然后在安装WEB之后首先安装EJB,最后安装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>
答案 0 :(得分: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中定义的,而${project.version}
是从父pom中读取的,所以我们可能在这里有版本不匹配,甚至在m2,target和构建路径上都有未同步的jar。