我有以下 build.gradle :
group 'as'
version '1.0'
buildscript {
ext {
springVersion = '5.0.4.RELEASE'
springBootVersion = '1.5.6.RELEASE'
springJPAVersion = '2.0.5.RELEASE'
javaxVersion = '1.0.2'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'java'
apply plugin: 'org.springframework.boot'
jar {
baseName = 'reports'
version = '0.0.1'
manifest {
attributes 'Implementation-Title': baseName,
'Implementation-Version': version
}
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}
}
repositories {
jcenter()
maven { url "https://repo.spring.io/snapshot" }
maven { url "https://repo.spring.io/milestone" }
}
dependencies {
implementation "org.springframework.boot:spring-boot-starter-web:${springBootVersion}"
implementation "org.springframework.boot:spring-boot-starter-data-jpa:${springBootVersion}"
implementation "org.springframework.data:spring-data-jpa:${springJPAVersion}"
implementation "javax.persistence:persistence-api:${javaxVersion}"
implementation "mysql:mysql-connector-java:5.1.43"
testImplementation group: 'junit', name: 'junit', version: '4.11'
}
gradle创建了具有以下结构的jar:
但似乎结构必须如下:
包含lib文件夹,其中包含依赖项,因为现在启动后我收到错误:
例外......
引起:java.lang.NoClassDefFoundError: com.as.reports.Application.main上的org / springframework / boot / SpringApplication(Application.java:12)
答案 0 :(得分:1)
因此,我知道这个答案可能为时已晚,无法为您提供帮助,但是我在尝试解决完全相同的问题时偶然发现了这个问题,并想起了this。
经过半天的反复试验,我找到了解决方案,所以希望我可以省去别人寻找这个未解决问题的痛苦。
问题在于在依赖项中使用implementation
关键字。 1.x Spring Boot Gradle插件未出现,该关键字识别为重新包装胖子罐所需的依赖项。如果将其改回较旧的compile
关键字,则应获得必要的lib文件夹。