Maven - 反应堆(聚合)

时间:2015-06-16 05:20:51

标签: maven

我有一个具有以下目录结构的maven项目:

trunk
|    pom.xml
|    coreutils
|            |    pom.xml
|            |    src
|    budgetCap
|            |    pom.xml
|            |    src

trunk / pom.xml的内容是:

<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              
hxttp://maven.apache.org/maven-v4_0_0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>Ant2Maven</groupId>
<artifactId>parent</artifactId>
<version>1.0</version>

<packaging>pom</packaging>
<name>Parent Pom</name>

<modules>

    <module>coreutils</module>
    <module>budgetCap</module>

</modules>

在这种结构中,“budgetCap”依赖于“coreutils”,即。 “budgetCap”的pom.xml包含“coreutils”的依赖关系

现在我有两种方法来构建这个项目

第一种方法 使用Reactor聚合

我将进入主干

首先,我做了mvn clean

shakim:trunk shakim.md$ mvn clean

Maven按以下顺序删除两个模块的目标文件夹:

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO] 
[INFO] coreutils
[INFO] budgetCap Maven Webapp
[INFO] Parent Pom

现在当我做mvn install

shakim:trunk shakim.md$ mvn install

Maven按以下顺序开始构建模块:

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO] 
[INFO] coreutils
[INFO] budgetCap Maven Webapp
[INFO] Parent Pom

按照给定的顺序, coreutils 成功安装在本地存储库中。 但 budgetCap 在编译失败时发出错误 maven无法找到应该由coreutils生成的类

错误信息如下:

[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building budgetCap Maven Webapp 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ budgetCap ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 4 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ budgetCap ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 65 source files to /Users/shakim.md/shakim/maven/ops/adq_services/trunk/budgetCap/target/classes
[INFO] -------------------------------------------------------------
[WARNING] COMPILATION WARNING : 
[INFO] -------------------------------------------------------------
[WARNING]/Users/shakim.md/shakim/maven/ops/adq_services/trunk/budgetCap/src/main/java/com/adiquity/budgetCap/core/SingletonAggregator.java: /Users/shakim.md/shakim/maven/ops/adq_services/trunk/budgetCap/src/main/java/com/adiquity/budgetCap/core/SingletonAggregator.java uses unchecked or unsafe operations.
[WARNING]/Users/shakim.md/shakim/maven/ops/adq_services/trunk/budgetCap/src/main/java/com/adiquity/budgetCap/core/SingletonAggregator.java: Recompile with -Xlint:unchecked for details.
[INFO] 2 warnings 
[INFO] -------------------------------------------------------------
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /Users/shakim.md/shakim/maven/ops/adq_services/trunk/budgetCap/src/main/java/com/adiquity/budgetCap/core/BudgetCapServer.java:[41,34] package com.adiquity.request.utils does not exist
[ERROR] /Users/shakim.md/shakim/maven/ops/adq_services/trunk/budgetCap/src/main/java/com/adiquity/budgetCap/utils/Utils.java:[9,34] package com.adiquity.request.utils does not exist
[ERROR] /Users/shakim.md/shakim/maven/ops/adq_services/trunk/budgetCap/src/main/java/com/adiquity/budgetCap/log/data/parser/ConversionParser.java:[16,34] package com.adiquity.request.utils does not exist

简要说明这个软件包包com.adiquity.request.utils 实际上存在于 coreutils 中,此模块 budgetCap 必须已成功找到,但事实并非如此。

第二种方法

进入 coreutils 并执行

shakim:coreutils shakim.md$ mvn clean install

进入 budgetCap 并执行

shakim:budgetCap shakim.md$ mvn clean install

budgetCap编译成功,不会报告任何类型的错误。

我的问题是我想在Maven中使用 Reactors 而我无法弄清楚为什么构建在使用1st方法时失败而第二种方法的构建顺利完成?

我不确定如何使用反应堆,我们是否需要在 pom of coreutils和budgetCap 中包含任何内容,表示 pom of trunk 是父级。

注意:我不想在这个项目中使用继承

0 个答案:

没有答案