首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多级bootJar配置-不同的mainClass属性?

多级bootJar配置-不同的mainClass属性?
EN

Stack Overflow用户
提问于 2019-08-25 13:08:07
回答 1查看 732关注 0票数 1

我使用.kts (Kotlin样式) Gradle构建文件构建了Gradle/Spring。(最后一部分可能无关紧要。)

我的Spring应用程序有两个不同的类可用于启动它,一个用于“客户端”模式,另一个用于“服务器”模式。

我有一个bootJar任务,看起来如下:

代码语言:javascript
复制
tasks.bootJar {
    mainClassName = "com.me.ClientApplication"
}

因此,默认情况下,当我运行./gradlew build bootJar时,我会得到JAR的客户端版本,在与java -jar theJar.jar一起运行时,它将执行ClientApplication类。

但是,我也想发布一个第二个JAR,它有一个不同的mainClassName并运行com.me.ServerApplication

我该怎么处理这个?我对Gradle相当陌生--我应该将mainClassName提供给./gradlew命令来覆盖它吗?或者我可以定义单独的任务,比如clientBootJarserverBootJar,它们将产生不同的工件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-25 21:09:23

由于您的配置是相互排斥的(不能有两个主文件),所以我要说,有两个任务是最好的:

代码语言:javascript
复制
tasks.bootJarClient {
    mainClassName = "com.me.ClientApplication"
}

tasks.bootJarClient {
    mainClassName = "com.me.ServerApplication"
}

其他方法是使用属性,但如果您有更大的差异,则更有意义。

现在,要创建一个自定义任务,在build.gradle.kts中添加一些类似于这些代码的内容(没有专门使用SpringBoot测试):

代码语言:javascript
复制
open class BootJarClient : BootJar() {
   override mainClassName = "YourClientClassName"
}

tasks.register<BootJarClient>("bootJarClient") {
    group = "Other"
}

// Server is basically the same

属性的命名取自GitHub源

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57646289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档