【问题标题】:Gradle multi-module project build problemGradle多模块项目构建问题
【发布时间】:2020-06-26 11:18:06
【问题描述】:

我有一个具有以下结构的多模块项目

当我尝试构建 signal-site 项目时,我得到了这个异常

Caused by: org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all task dependencies for configuration ':runtimeClasspath'.

settings.gradle.kts (trade) - 顶级

rootProject.name = "trade"
include("trade-common")
include("signal-site")

build.gradle.kts (trade) - 顶级

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"
    }
}

【问题讨论】:

    标签: gradle build multi-module


    【解决方案1】:

    在多项目构建中,项目的根目录必须只有一个 settings.gradle 文件。

    所以您的问题是由于在您的层次结构中定义了多个 settings.gradle 引起的,这意味着当在 signal-site 中运行某些东西时,Gradle 被配置为查找 trade-common 作为 signal-site 的子文件夹。

    只需删除 trade-commonsignal-site settings.gradle 文件,只保留根目录中的那个。

    请参阅 the documentation 以更深入地了解 Gradle settings.gradle 文件以及它们在多项目设置中的工作方式。

    【讨论】:

      猜你喜欢
      • 2011-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-08
      • 2019-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多