Gradle 在子项目中找不到 类
Gradle can't find classes in SubProject
我想通过 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 Build:
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??
}
我找不到清楚的原因,
但是这个 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")
}
我想通过 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 Build:
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??
}
我找不到清楚的原因,
但是这个 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")
}