有没有办法只用一个命令构建我的所有Maven项目?

时间:2015-06-24 11:59:02

标签: java maven

我是Maven的新手,我已经设置了2个maven项目,其中一个是我的实用程序API,第二个是Jersey API。我安装了实用程序API作为我的本地Maven存储库的一部分,并将其添加到pom.xml文件中。

一切都运行正常,只是当我想构建/运行测试时,我需要转到项目所在的每个目录并运行命令。有没有办法以某种方式运行一个命令或重新配置项目,以便我能够从REST API目录中处理所有内容?

EG。 mvn clean test ... something ... - >去测试我的两个项目。

再次,我是Maven的新手,但我也做了一项研究,找不到可以帮助我的正确有用的信息。如果这是需要关闭的问题之一,您能否在关闭之前至少向我提供更多信息?谢谢。

5 个答案:

答案 0 :(得分:3)

您可以使用多模块maven项目。您可以定义这样的结构

/
 pom.xml (A)
 util-api
   pom.xml (B)
 jersey.api
   pom.xml (C)

在儿童游戏中你指定一个<parent>节点。

(A)pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">

  <modelVersion>4.0.0</modelVersion>
  <groupId>mygroup.id</groupId>
  <artifactId>myparentartifact</artifactId>
  <packaging>pom</packaging>
  <version>0.0.1-SNAPSHOT</version>
  ...
  <modules>
    <module>util-api</module>
    <module>jersey-api</module>
  </modules> 
</pom>

(B)pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <artifactId>myparentartifact</artifactId>
    <groupId>mygroup.id</groupId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath>../pom.xml</relativePath>
  </parent>
  <artifactId>util-api</artifactId>
  <packaging>jar</packaging>
</pom>

(C)pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <artifactId>myparentartifact</artifactId>
    <groupId>mygroup.id</groupId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath>../pom.xml</relativePath>
  </parent>
  <artifactId>jersey-api</artifactId>
  <packaging>jar</packaging>
</pom>

使用此配置,您可以使用一个命令构建所有模块:mvn clean install

答案 1 :(得分:0)

您可以使用Maven的aggregation pom

答案 2 :(得分:0)

您是否正在寻找一个可以运行测试的命令,还可以构建包含所有模块的应用程序? 我很瘦,你正在寻找mvn clean install

请确保,您在最高的maven pom.xml中说出这一点,它们都包含所有依赖项。

答案 3 :(得分:0)

通过使用模块功能使用顶级POM,可以选择将相关项目合并为一个。

<modules>
   <module>utility-api</module>
   <module>Jersey-api</module>
</modules>

可以使用

编译和运行测试用例
mvn clean install

答案 4 :(得分:0)

您需要为您的2个模块创建父POM <packaging>pom</packaging>
因此,当您在父POM上运行mvn install时,它将在每个子模块上运行它。

有关使用多个模块的更多信息here