【发布时间】:2020-04-13 06:50:26
【问题描述】:
我是 Gradle 新手,我刚刚开始使用多项目构建。目前,我正在使用 spring-boot 进行服务,并且我有以下目录结构
|- api-web (module)
|-- build.gradle
|- api-admin (module)
|-- build.gradle
|- build.gradle (root)
|- settings.gradle
以下是root
的配置build.gradle(根)
plugins {
id 'java'
id 'org.springframework.boot' version '2.2.2.RELEASE'
id 'io.spring.dependency-management' version '1.0.8.RELEASE'
}
description = "Company Multi-Project"
ext {
springBootVersion = '2.2.2.RELEASE'
}
bootJar {
enabled = false
}
allprojects {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
repositories {
mavenCentral()
}
}
subprojects {
group = 'com.company'
version = '0.0.1-SNAPSHOT'
apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
jar {
enabled = true
}
bootJar {
enabled = false
}
dependencies {
// Lombok annotation processor
annotationProcessor 'org.projectlombok:lombok'
compileOnly 'org.projectlombok:lombok'
}
}
settings.gradle(根)
rootProject.name = 'core'
include 'common'
include 'api-web'
include 'api-admin'
模块
的Gradle配置api-admin(模块)
jar {
manifest {
attributes 'Main-Class': 'com.company.apiadmin.ApiAdminApplication'
}
}
dependencies {
implementation project(':common')
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}
我添加了 jar 闭包以防止运行时出错。这避免了它无法运行说“No Manifest”的问题
然而,即使添加了那个 jar 闭包,现在又出现了一个新问题
Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/boot/SpringApplication
现在我知道这表示找不到类,但我的问题是它是如何发生的,为什么以及如何克服它。我已经尝试过 Medium、StackOverflow 和博客文章中的大部分建议。没有任何帮助。您的帮助将不胜感激。谢谢
【问题讨论】:
标签: java spring spring-boot gradle