Gradle 多模块项目构建问题
Gradle multi-module project build problem
我有一个具有以下结构的多模块项目
当我尝试构建 signal-site 项目时,我得到了这个异常
Caused by: org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all task dependencies for configuration ':runtimeClasspath'.
settings.gradle.kts(交易)- 顶级
rootProject.name = "trade"
include("trade-common")
include("signal-site")
build.gradle.kts(交易)- 顶级
group = "com.oleinikdi"
version = "1.0"
subprojects {
version = "1.0"
}
allprojects {
repositories {
jcenter()
}
}
settings.gradle.kts(普通贸易)
rootProject.name = "trade-common"
build.gradle.kts(普通贸易)
subprojects {
version = "1.0"
}
plugins {
kotlin("jvm") version "1.3.70"
}
group = "com.oleinikdi"
version = "1.0"
repositories {
jcenter()
}
dependencies {
implementation(kotlin("stdlib-jdk8"))
}
tasks {
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
}
settings.gradle.kts(信号站点)
rootProject.name = "signal-site"
include("trade-common")
build.gradle.kts(信号站点)
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
subprojects {
version = "1.0"
}
plugins {
id("org.springframework.boot") version "2.2.5.RELEASE"
id("io.spring.dependency-management") version "1.0.9.RELEASE"
war
kotlin("jvm") version "1.3.70"
kotlin("plugin.spring") version "1.3.70"
kotlin("plugin.jpa") version "1.3.70"
}
group = "com.oleinik"
version = "1.0"
java.sourceCompatibility = JavaVersion.VERSION_1_8
repositories {
jcenter()
}
dependencies {
implementation(project(":trade-common"))
providedRuntime("org.springframework.boot:spring-boot-starter-data-jpa")
implementation("org.springframework.boot:spring-boot-starter-data-rest")
implementation("org.springframework.boot:spring-boot-starter-jdbc")
implementation("org.springframework.boot:spring-boot-starter-security")
implementation("org.springframework.boot:spring-boot-starter-thymeleaf")
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
implementation("org.liquibase:liquibase-core")
// runtimeOnly("org.postgresql:postgresql")
implementation("org.postgresql:postgresql")
providedRuntime("org.springframework.boot:spring-boot-starter-tomcat")
testImplementation("org.springframework.boot:spring-boot-starter-test") {
exclude(group = "org.junit.vintage", module = "junit-vintage-engine")
}
testImplementation("org.springframework.security:spring-security-test")
}
tasks.withType<Test> {
useJUnitPlatform()
}
tasks.withType<KotlinCompile> {
kotlinOptions {
freeCompilerArgs = listOf("-Xjsr305=strict")
jvmTarget = "1.8"
}
}
在多项目构建中,项目根目录下必须只有 一个 settings.gradle
文件。
所以您的问题是由于在层次结构中定义了多个 settings.gradle
引起的,这意味着当 运行 signal-site
中的某些内容时,Gradle 配置为查找 trade-common
作为 signal-site
.
的子文件夹
只需删除 trade-common
和 signal-site
settings.gradle
文件,只保留根目录中的一个。
请参阅 the documentation 以更深入地了解 Gradle settings.gradle
文件以及它们在多项目设置中的工作方式。
我有一个具有以下结构的多模块项目
当我尝试构建 signal-site 项目时,我得到了这个异常
Caused by: org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all task dependencies for configuration ':runtimeClasspath'.
settings.gradle.kts(交易)- 顶级
rootProject.name = "trade"
include("trade-common")
include("signal-site")
build.gradle.kts(交易)- 顶级
group = "com.oleinikdi"
version = "1.0"
subprojects {
version = "1.0"
}
allprojects {
repositories {
jcenter()
}
}
settings.gradle.kts(普通贸易)
rootProject.name = "trade-common"
build.gradle.kts(普通贸易)
subprojects {
version = "1.0"
}
plugins {
kotlin("jvm") version "1.3.70"
}
group = "com.oleinikdi"
version = "1.0"
repositories {
jcenter()
}
dependencies {
implementation(kotlin("stdlib-jdk8"))
}
tasks {
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
}
settings.gradle.kts(信号站点)
rootProject.name = "signal-site"
include("trade-common")
build.gradle.kts(信号站点)
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
subprojects {
version = "1.0"
}
plugins {
id("org.springframework.boot") version "2.2.5.RELEASE"
id("io.spring.dependency-management") version "1.0.9.RELEASE"
war
kotlin("jvm") version "1.3.70"
kotlin("plugin.spring") version "1.3.70"
kotlin("plugin.jpa") version "1.3.70"
}
group = "com.oleinik"
version = "1.0"
java.sourceCompatibility = JavaVersion.VERSION_1_8
repositories {
jcenter()
}
dependencies {
implementation(project(":trade-common"))
providedRuntime("org.springframework.boot:spring-boot-starter-data-jpa")
implementation("org.springframework.boot:spring-boot-starter-data-rest")
implementation("org.springframework.boot:spring-boot-starter-jdbc")
implementation("org.springframework.boot:spring-boot-starter-security")
implementation("org.springframework.boot:spring-boot-starter-thymeleaf")
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
implementation("org.liquibase:liquibase-core")
// runtimeOnly("org.postgresql:postgresql")
implementation("org.postgresql:postgresql")
providedRuntime("org.springframework.boot:spring-boot-starter-tomcat")
testImplementation("org.springframework.boot:spring-boot-starter-test") {
exclude(group = "org.junit.vintage", module = "junit-vintage-engine")
}
testImplementation("org.springframework.security:spring-security-test")
}
tasks.withType<Test> {
useJUnitPlatform()
}
tasks.withType<KotlinCompile> {
kotlinOptions {
freeCompilerArgs = listOf("-Xjsr305=strict")
jvmTarget = "1.8"
}
}
在多项目构建中,项目根目录下必须只有 一个 settings.gradle
文件。
所以您的问题是由于在层次结构中定义了多个 settings.gradle
引起的,这意味着当 运行 signal-site
中的某些内容时,Gradle 配置为查找 trade-common
作为 signal-site
.
只需删除 trade-common
和 signal-site
settings.gradle
文件,只保留根目录中的一个。
请参阅 the documentation 以更深入地了解 Gradle settings.gradle
文件以及它们在多项目设置中的工作方式。