这类似于提问和回答的问题Maven test dependency on multi module project。但是,这与test
阶段无关,而是与package
有问题。
我有一个多模块项目,如:
root
|
|-parent-client
| |
| |-client-1
| |
| \-client-2
|
\-parent-server
|
|-server-1
|
|-server-2
|
|-server-3
|
\-server-4
我的依赖关系是client-1 -> client-2 -> server-1 -> server-2 -> server-3 -> server-4
,也就是说client-2
取决于server-1
,server-1
取决于server-2
,依此类推。每个范围都限定为compile
。
问题是,当我在mvn clean package
中运行root
时,server-2
package server-3 does not exist
的{{1}}编译失败。
当我在mvn clean compile
中运行mvn package
后跟root
时,它会毫无问题地运行。
当它失败时,它总是在同一模块上失败。
我对Build Lifecycle的理解是compile package
是多余的,因为package
包含compile
生命周期。
项目更复杂,共有41个模块,两个父项和一个根。创建一个简单的例子不可避免地按预期工作。
我很难知道如何继续。
事实证明我对成功命令的顺序是错误的。我已更新了我的问题和说明,并根据Michael-O的请求包含了调试输出:
<snip/>
[INFO] --- maven-ejb-plugin:2.3:ejb (default-ejb) @ terradatum-systemconfig ---
[INFO] Building EJB terradatum-systemconfig-4.8.1-SNAPSHOT with EJB version 3.0
[INFO] Building jar: /home/rbellamy/Development/Terradatum/metrics-project/metrics-server/systemconfig/ejb/target/terradatum-systemconfig-4.8.1-SNAPSHOT.jar
[INFO] Building EJB client terradatum-systemconfig-4.8.1-SNAPSHOT-client
[INFO] Building jar: /home/rbellamy/Development/Terradatum/metrics-project/metrics-server/systemconfig/ejb/target/terradatum-systemconfig-4.8.1-SNAPSHOT-client.jar
<snip/>
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building terradatum-payment 4.8.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ terradatum-payment ---
[INFO] Deleting /home/rbellamy/Development/Terradatum/metrics-project/metrics-server/payment/ejb/target
[INFO]
[INFO] --- maven-resources-plugin:2.7:resources (default-resources) @ terradatum-payment ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 2 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.3:compile (default-compile) @ terradatum-payment ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 7 source files to /home/rbellamy/Development/Terradatum/metrics-project/metrics-server/payment/ejb/target/classes
[INFO] -------------------------------------------------------------
[WARNING] COMPILATION WARNING :
[INFO] -------------------------------------------------------------
[WARNING] bootstrap class path not set in conjunction with -source 1.6
[INFO] 1 warning
[INFO] -------------------------------------------------------------
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /home/rbellamy/Development/Terradatum/metrics-project/metrics-server/payment/ejb/src/main/java/com/terradatum/common/payment/PaymentRemoteDelegate.java:[13,42] package com.terradatum.common.systemconfig does not exist
<snip/>
经过多次重构后,构建不再在同一个地方失败。我一直看到它以类似的方式失败,但失败的位置四处移动。我没有运行多个线程,但我觉得很明显,在某个地方有一个明显可用的包(在我的~/.m2/repository
本地缓存中绝对可以找到并且可以在classpath
添加到{{1} })Maven编译器不可见。
知道我对种族状况的了解,我不知道如何提交任何实质性的错误报告,因为我不能提供任何比假设和指责更多的东西。