Gradle在SubProject中找不到类

时间:2018-12-27 05:30:42

标签: gradle build.gradle gradlew multi-project

我想通过Gradle构建MultiProject。

RootBroject和SubProject的平面目录。我认为这很简单。 但是Gradle看起来在SubProject中找不到类。

在这种情况下我该怎么办?

项目目录类似于:

RootProject
+- build.gradle
+- settings.gradle
+- src
SubProject
+- src
+- build
 +- classes

以及子项目的构建:

gradlew :DataAccessProject:compileJava

BUILD SUCCESSFUL,我在SubProject / build / classes中找到了这些类 但是Sub + RootProject构建:

gradlew :compileJava

BUILD FAILED,并且像RootProject中的消息一样,消息超过100条

import a.b.c.SomeClassOfSubProject;
            ^

settings.gradle:

rootProject.name = 'RootProject'

includeFlat 'SubProject'

build.gradle:

buildscript {
    ext {
        springBootVersion = '2.0.6.RELEASE'
    }
    repositories {
        mavenCentral()
        maven { url "https://repo.spring.io/snapshot" }
        maven { url "https://repo.spring.io/milestone" }
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
        classpath("org.springframework:springloaded:1.2.1.RELEASE")
        classpath("io.spring.gradle:dependency-management-plugin:0.6.1.RELEASE")
    }
}

allprojects {

    apply plugin: 'java'
    apply plugin: 'eclipse'
    apply plugin: 'org.springframework.boot'
    apply plugin: 'io.spring.dependency-management'

    group = 'abc'
    sourceCompatibility = 11
    targetCompatibility = 11

    repositories {
        mavenCentral()
        maven { url "https://repo.spring.io/snapshot" }
        maven { url "https://repo.spring.io/milestone" }
    }

    dependencies {

        implementation('org.springframework.boot:spring-boot-starter-jdbc')
        implementation('org.projectlombok:lombok:1.18.4')

        implementation fileTree(dir: 'lib', include: ['*.jar'])
    }
}

project(':SubProject') {
}

dependencies {
    implementation('org.springframework.boot:spring-boot-starter-web')
    implementation('org.springframework.boot:spring-boot-starter-thymeleaf')

    implementation project(':SubProject') // Can't find classes in SubProject??
}

2 个答案:

答案 0 :(得分:0)

您是否已仔细检查代码中的所有包声明?

答案 1 :(得分:0)

我找不到明确的原因, 但是这个build.gradle达到了BUILD SUCCESSFUL

buildscript {
    ext {
        springBootVersion = "2.1.1.RELEASE"
    }
    repositories {
        mavenCentral()
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

allprojects {
    apply plugin: "java"
    apply plugin: "io.spring.dependency-management"

    [compileJava, compileTestJava]*.options*.encoding = "UTF-8"

    repositories {
        mavenCentral()
    }

    dependencyManagement {
        imports {
            mavenBom "org.springframework.boot:spring-boot-dependencies:$springBootVersion"
        }
    }

    sourceCompatibility = 11
    targetCompatibility = 11

    dependencies {
        implementation("org.springframework.boot:spring-boot-starter-security")
        implementation("org.modelmapper.extensions:modelmapper-spring:2.3.0")
        ...

        compileOnly("org.projectlombok:lombok:1.18.4")
        annotationProcessor("org.projectlombok:lombok:1.18.4")

        testImplementation("org.springframework.boot:spring-boot-starter-test")
        testImplementation("org.springframework.security:spring-security-test:5.1.1.RELEASE")
        ...
    }
}

project(":SubProject") {

    dependencies {
        implementation("org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.2")
        ...
    }
}


apply plugin: "org.springframework.boot"
apply plugin: "war"

dependencies {
    implementation project(":SubProject")
    implementation("org.springframework.boot:spring-boot-starter-web")
    implementation("org.springframework.boot:spring-boot-starter-thymeleaf")

    providedRuntime("org.springframework.boot:spring-boot-starter-tomcat")
}