我创建了SpringBootGradle多模块项目,该项目由3个模块组成:控制器、服务、存储库。主文件位于控制器模块中,名为myspringbootplication。
我可以构建这个项目(使用GradleBuild)并获得jar文件。但是在命令行中启动这个jar之后,我遇到了下一个错误:
Error: Could not find or load main class com.epam.esm.config.MySpringBootApplication Caused by: java.lang.ClassNotFoundException: com.epam.esm.config.MySpringBootApplication.
为了修复这个错误,我添加了Main-Class
属性到mainbuild.gradle
中的MANIFEST. MF文件,但是这个操作没有帮助。有人能帮忙吗?
主建筑。梯度锉
plugins {
id 'java'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'org.springframework.boot' version '2.4.3'
id 'application'
}
group = 'com.myproject'
version = 'snapshot-1.0.0'
repositories {
mavenCentral()
}
bootJar {
enabled = false
}
jar {
enabled = true
manifest {
attributes(
"Main-Class": "com.myproject.config.MySpringBootApplication")
}
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-parent', version: '2.4.3', ext: 'pom'
}
test {
useJUnitPlatform()
}
subprojects {
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'java'
group = 'com.epam.esm'
version = '1.0.0'
repositories {
mavenCentral()
}
bootJar {
enabled = false
}
jar {
enabled = true
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-hateoas'
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.boot:spring-boot-starter-security'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation group: 'org.hibernate', name: 'hibernate-envers', version: '5.4.27.Final'
implementation group: 'javax.validation', name: 'validation-api', version: '2.0.1.Final'
implementation group: 'org.openidentityplatform.commons', name: 'json-web-token', version: '2.0.11'
compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.18'
annotationProcessor 'org.projectlombok:lombok'
implementation group: 'io.jsonwebtoken', name: 'jjwt', version: '0.9.1'
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-parent', version: '2.4.3', ext: 'pom'
}
test {
useJUnitPlatform()
}
}
设置。格拉德尔
rootProject.name = 'module'
include('repository', 'service', 'controller')
Spring Boot应用程序可执行jar文件是由bootJar任务构建的,因此通过jar添加主类信息也不起作用。
bootJar
任务尝试创建一个可执行的jar,这需要一个main()方法。因此,您需要禁用bootJar
任务,并仅为您的无可执行jar模块启用jar任务(创建普通jar而不是可执行jar)。
由于您是在子项目
部分下完成的,控制器
模块也将生成一个标准jar。您可以为所有模块(不包括控制器
模块)生产标准JAR,如下所示:
subprojects {
if (it.name != 'controller') {
bootJar {
enabled = false
}
jar {
enabled = true
}
}
}
此外,您还必须删除下面的jar
部分
jar {
enabled = true
manifest {
attributes(
"Main-Class": "com.myproject.config.MySpringBootApplication")
}
}
替换
bootJar {
enabled = false
}
具有
bootJar {
mainClassName = 'com.myproject.config.MySpringBootApplication'
}
参考文献
创建多模块项目
主要内容:1- 介绍,2- 示例模型,3-创建项目数学库,4- 创建另一个项目:MathWebApp,5- 创建GradleMain项目,6- 构建项目,7- 运行MathWebApp1- 介绍 本教程文章基于: Eclipse Java EE IDE for Web Developers. Version: Mars.1 Release (4.5.1) 如果您是初学者Gradle的。那么建议先看看初学者Gradle(Gradle Hello world)的文章: http://www.yiib
我正在创建一个新项目(使用IntelliJ IDEA),该项目将使用: 分级作为构建系统 构建脚本的Kotlin DSL “组织”的Java 9模块 科特林语作为主要语言 我有问题设置Gradle正确地建立我的项目。我找到的大多数示例都是针对Groovy而不是Kotlin DSL的,而且大多数示例只覆盖了我想要的一些特性,而不是全部。 lib/build.gradle.kts 执行此操作时,配置将
我按照以下指南将项目分为模块/子项目: https://docs.gradle.org/current/userguide/multi_project_builds.html 在主脚本中,我应用子项目的配置: 如果我从根build目录运行子项目build,这会很好: (成功构建
本文向大家介绍详解IDEA下Gradle多模块(项目)的构建,包括了详解IDEA下Gradle多模块(项目)的构建的使用技巧和注意事项,需要的朋友参考一下 我们在新起一个项目的时候,一般都会建多个子项目(IDEA里面称之为Module模块)。通过Gradle构建,多个Module之间需要将公用的配置抽取到全局,子项目中只写差异化的配置,以便于维护。 多模块项目的Gradle目录结构 示例:我的示例
嗨我在网上搜了一遍,看了一堆文章,所以问题和文档都找不到解决办法,这里是我的问题。 我有一个多模块maven项目,其中包含三个模块a、B和C,a和B独立,C依赖于a和B,当然我有一个父项目。我还设置了一个jenkins服务器来构建这些项目,以及一个nexus存储库。 如有任何帮助,不胜感激。谢谢!
我有以下内容: 问题是运行并没有创建一个胖jar。 通过运行显示任务存在,但是任务不依赖于它: