【问题标题】:Gradle can't find classes in SubProjectGradle 在子项目中找不到类
【发布时间】:2018-12-27 05:30:42
【问题描述】:

我想通过 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??
}

【问题讨论】:

    标签: gradle build.gradle gradlew multi-project


    【解决方案1】:

    我找不到明确的原因, 但是这个 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")
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-19
      • 1970-01-01
      相关资源
      最近更新 更多