Gradle子项目未包含在类路径中
我们设置了2个项目,1个主项目和1个子项目,它们是Java项目。 它们都在同一目录下。
以下是目录结构的外观:
./dev ./Project_A build.gradle settings.gradle ./Project_B build.gradle
Project_A包括Project_B。
Project_A settings.gradle看起来像:
includeFlat 'Project_B'
Project_A build.gradle包含:
compile project(':Project_B')
从命令行编译时,Project_A错过了Project_B中的类( gradlew clean build )。 看起来Project_B不属于Project-A的类路径。
以下是在Project_A目录中运行的gradlew clean build的(输出的一部分)(之后它是“package project_b.xy missing”和“找不到符号”(来自Project_B):
:clean :Project_B:clean :Project_B:compileJava :Project_B:processResources :Project_B:classes :Project_B:jar UP-TO-DATE :compileJava ...Starts erroring out here...
我猜这是一个类路径问题,但我无法弄清楚如何解决它。
在此先感谢,JM
PS:已编辑的问题,因为我能够通过2个项目构建重现问题(从3开始)
基于Java Quckstart:多项目Java构建 :
1)你的settings.gradle
文件需要在dev/
,而不是dev/project_A
,它应该包含这样的东西:
include 'Project_A', 'Project_B'
2)然后你的dev/Project_A/build.gradle
文件应该包含
dependencies { compile project(':Project_B') }
编辑:
我按照您在问题中描述的项目布局创建了一个玩具示例。 但是,我无法重现这个问题。 也许您将能够发现导致您特定错误的一些差异:
目录树
├──Project_A │├──build.gradle │├──setting.gradle │└──src │└──主要 │└──java │└──a │└──A.java └──Project_B ├──build.gradle └──src └──主要 └──java └──b └──Bjjava
Project_A /的build.gradle
apply plugin: 'java' apply plugin: 'application' mainClassName = 'aA' dependencies { compile project(':Project_B') }
Project_A / settings.gradle
includeFlat 'Project_B'
A.java
package a; import bB; public class A { public static void main(String[] args) { System.out.println("From A.main..."); B.call(); } }
Project_B /的build.gradle
apply plugin: 'java'
B.java
package b; public class B { public static void call() { System.out.println("Calling B"); } }
从Project_A
运行Gradle时,输出为:
$ gradle clean build run :清洁UP-TO-DATE :Project_B:清理UP-TO-DATE :Project_B:compileJava :Project_B:processResources UP-TO-DATE :Project_B:类 :Project_B:jar子 :compileJava :processResources UP-TO-DATE :类 :jar :组装 :compileTestJava UP-TO-DATE :processTestResources UP-TO-DATE :testClasses UP-TO-DATE :测试UP-TO-DATE :检查UP-TO-DATE :建立 :Project_B:组装 :Project_B:compileTestJava UP-TO-DATE :Project_B:processTestResources UP-TO-DATE :Project_B:testClasses UP-TO-DATE :Project_B:测试UP-TO-DATE :Project_B:检查UP-TO-DATE :Project_B:打造 :跑 来自A.main ... 打电话给B 建立成功
好的,如果这对某人有用,我终于得到了实际删除(git rm).claspath文件。 它出现在.gitignore中,但出于某种原因,它似乎已经在某个时刻进行了调整并且正在玩耍。
执行此操作并在Eclipse中重新导入项目后,一切都恢复正常。
感谢那些试图提供帮助的人。