2013-01-08 103 views
3

我有一个三级模块的项目。让我们假设它有以下组织...如何使用maven reactor构建模块及其子模块?

+-- maven-root 
    +-- maven-module-1 
    | +-- maven-submodule-1-1 
    | +-- maven-submodule-1-2 
    +-- maven-module-2 
    | +-- maven-submodule-2-1 
    | +-- maven-submodule-2-2 
    +-- maven-module-3 
     +-- maven-submodule-3-1 
     +-- maven-submodule-3-2 

此外,我们有以下设置的依赖

  • maven-module-2取决于maven-module-1
  • maven-module-3取决于maven-module-3

在这个结构,并假设maven-module-1及其子模块的文物s已经在本地存储库中可用,是否有一种解决方案使用maven reactor(作为示例)仅构建maven-module-2及其子模块?

我已经知道,使用maven反应器,如果我做

mvn clean install -pl :maven-module-2 --also-make-dependant 

它将建立

  1. Maven的模块2
  2. Maven的子模块-2-1
  3. maven-submodule-2-2
  4. maven-module-3
  5. maven-submodu LE-3-1
  6. Maven的子模块-3-2

maven-module-3有在maven-module-2

而且很明显的相关性,运行

mvn clean install -pl :maven-module-2 --also-make-dependant 

只会建立maven-module-1maven-module-2

那么,如何使用该项目组织,我可以只构建maven-module-2

+0

我不认为你可以做到这一点。也许Gradle可以做到,但我没有使用它。 –

回答

6

使用

mvn clean install -f maven-module-2 -N 

将只建Maven的模块-2和

mvn clean install -f maven-module-2 

将建设Maven的模块-2和其子

请小心,-f用于告诉Maven使用另一个POM(或模块目录,它取得了pom.xml),而不是当前目录中的POM。因此,与maven考虑项目中的所有模块然后仅构建它们的子部分的-pl不同,-f仅构建此项目/模块/ pom引用的内容。要做到

mvn clean install -f maven-module-2 

酷似

cd maven-module-2; mvn clean install