IntelliJ won';t从gradle复合构建导入模块

IntelliJ won';t从gradle复合构建导入模块,gradle,intellij-idea,Gradle,Intellij Idea,更新:IntelliJ不仅有问题,而且原因似乎是因为我的设置无法在Gradle中构建。仍然不确定为什么 我正在尝试设置intellij来识别复合gradle构建。我有一个项目A,它依赖于项目B,如下所示: /p/projecta /p/projectb 我尝试了很多东西,但是IntelliJ在project-b中找不到我试图从project-a访问的任何东西的声明。例如,在下面的ProjectA.java中,IntelliJ将项目B的导入标记为无法解析符号ProjectB //projecta

更新:IntelliJ不仅有问题,而且原因似乎是因为我的设置无法在Gradle中构建。仍然不确定为什么

我正在尝试设置intellij来识别复合gradle构建。我有一个项目A,它依赖于项目B,如下所示:

/p/projecta
/p/projectb
我尝试了很多东西,但是IntelliJ在
project-b
中找不到我试图从
project-a
访问的任何东西的声明。例如,在下面的
ProjectA.java
中,IntelliJ将项目B的导入标记为
无法解析符号ProjectB

//projecta/src/main/java/projecta/projecta.java
导入项目b.projectb;//'无法解析符号ProjectB'
//projectb/src/main/java/projectb/projectb.java
公共类项目B{
}
尽管有上述配置,但它不起作用。IntelliJ继续将项目B中的所有符号标记为不可解析

我试过的其他事情
  • 从settings.gradle中删除includeBuild,然后右键单击项目A的gradle窗口,转到“复合构建配置”,并从中添加项目B。同样的问题
  • 将此代码添加到项目A中的build.gradle
  • 将项目B放入磁盘上的项目A中:
    /p/projecta/projectb
    ,然后将projecta/settings.gradle中的includebild更改为
    includebild“projectb”
  • #2的许多变体试图让IntelliJ识别gradle依赖性

  • 我最近遇到了这个问题,并且解决了它,所以我想在这里作出回应,这样其他人可以从我在参数和尝试与错误的丛林中的搜寻中受益

    我有完全相同的项目,如问题中所述。使用Gradle 5.0,Intellij能够正确导入和链接我的源代码,并且我能够在命令行上正确构建。当我将Gradle版本升级到5.6及更高版本时,Intellij不再能够正确链接源代码。重新导入我的项目实际上可以工作,但是表示包含的构建的依赖项将以红色突出显示,并且控制台会说它无法解决它。5.6之后的每个Gradle版本都会出现这种情况

    根本原因似乎是Intellij在Gradle中使用Java11,而我将
    sourceCompatibility
    设置为10。这似乎打破了Gradle的最新版本(可以理解)

    我还可以通过在我的项目的build.gradle中添加以下内容来解决这个问题

    java {
        disableAutoTargetJvm()
    }
    

    然而,我刚刚将Intellij中的JDK for Gradle更新为Java 10,一切都正常了……

    你能从Gradle的命令行构建吗?如果一个项目使用另一个项目作为依赖项-您必须在build.gradle文件中将其配置为:不,它不会从命令行生成,与intellij给出的错误相同/p/projecta/src/main/java/projecta/projecta.java:2:错误:包projectb不存在import project.projectb;
    // projectb/settings.gradle
    rootProject.name = 'projectb'
    
    tasks.register('run') {
        dependsOn gradle.includedBuild('projectb').task(':run')
    }
    
    java {
        disableAutoTargetJvm()
    }