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中重新导入项目后,一切都恢复正常。

感谢那些试图提供帮助的人。