【问题标题】:Gradle sub projects won't compile with dependencies on sub-projectsGradle 子项目不会与子项目的依赖项一起编译
【发布时间】:2021-06-16 00:35:57
【问题描述】:

我有以下带有 gradle 6.8.3 版本和 spring-boot 2.4.3 的项目结构

Project-A
|
|___ Project B
|
|___ Project C

项目 A 是根项目,项目 B 依赖于项目 C。

项目 C build.gradle

plugins {

    id 'org.springframework.boot' version '2.4.3'

    id 'io.spring.dependency-management' version '1.0.11.RELEASE'

    id 'java'

    id 'maven'

}


group = 'com.test'

version = '0.0.1-SNAPSHOT'

sourceCompatibility = '11'


configurations {

    compileOnly {

        extendsFrom annotationProcessor

    }

}


repositories {

    mavenCentral()

    mavenLocal()

}


dependencies {

    implementation 'org.springframework.boot:spring-boot-starter'

    compileOnly 'org.projectlombok:lombok'

    annotationProcessor 'org.projectlombok:lombok'

    implementation 'org.springframework.boot:spring-boot-starter-logging'

    testImplementation 'org.springframework.boot:spring-boot-starter-test'

}


test {

    useJUnitPlatform()

}

项目 B build.gradle 文件

plugins {

    id 'org.springframework.boot' version '2.4.3'

    id 'io.spring.dependency-management' version '1.0.11.RELEASE'

    id 'java'

    id 'maven'

}


group = 'com.test'

version = '0.0.1-SNAPSHOT'

sourceCompatibility = '11'


configurations {

    compileOnly {

        extendsFrom annotationProcessor

    }

}


repositories {

    mavenCentral()

    mavenLocal()

}


dependencies {

    implementation project(':PROJECT-C')

    implementation 'org.springframework.boot:spring-boot-starter'

    compileOnly 'org.projectlombok:lombok'

    annotationProcessor 'org.projectlombok:lombok'

    implementation 'org.springframework.boot:spring-boot-starter-logging'

    testImplementation 'org.springframework.boot:spring-boot-starter-test'

    implementation 'project-c:0.0.0-SNAPSHOT'

}


test {

    useJUnitPlatform()

}

当尝试构建 project-c 时,它会抛出

以下是详细信息以获取更多信息。

  • JDK11
  • IntelliJ 理想

抛出错误

  • 出了什么问题: 评估根项目“project-c”时出现问题。

在根项目“project-c”中找不到路径为“:project-b”的项目。

非常感谢任何帮助。

root 级别的settings.gradle 文件

rootProject.name = 'Project-A'
include 'Project-B', 'Project-C'

我在所有子模块中也有一个 settings.gradle 文件。子模块settings.gradle的内容只包含项目名称

【问题讨论】:

  • 没有Project A build.gradle,应该改建。
  • 没有@MartinZeitler。我们仅在模块级别构建项目。

标签: spring-boot gradle


【解决方案1】:

假设您在 settings.gradle 文件中的设置是正确的:

在项目 B build.gradle 文件中的依赖项块中,而不是

implementation project(':PROJECT-C')

试试

implementation project(':Project-A:Project-C') 

因为项目 a 是根项目。

【讨论】:

  • 嗨@nico,我已经尝试了你的建议。仍然面临同样的问题。以下是堆栈跟踪``` org.gradle.api.GradleScriptException:评估项目':Project-B'时出现问题。原因:org.gradle.api.UnknownProjectException:在项目“:Project-B”中找不到路径为“:Project-A:Project-C”的项目。 ```
  • 那么您是否在根级别(在项目 a 级别)有一个 settings.gradle 文件,其中包含所有项目和子项目?如果是,请编辑您的帖子并包含其内容。
  • 增加了settings.gradle文件的内容
  • 如果您将设置更改为“包括 'Project-A:Project-B', 'Project-A:Project-C'”,您可以在项目中引用您的 Project-C,如上所述B build.gradle,它应该可以工作。
  • 嗨@nico 我已经尝试了你的建议,但问题仍然存在。 org.gradle.api.GradleScriptException:评估项目“:Project-B”时出现问题。原因:org.gradle.api.UnknownProjectException:在项目“:Project-B”中找不到路径为“:Project-A:Project-C”的项目。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-30
相关资源
最近更新 更多