我使用.kts (Kotlin样式) Gradle构建文件构建了Gradle/Spring。(最后一部分可能无关紧要。)
我的Spring应用程序有两个不同的类可用于启动它,一个用于“客户端”模式,另一个用于“服务器”模式。
我有一个bootJar任务,看起来如下:
tasks.bootJar {
mainClassName = "com.me.ClientApplication"
}因此,默认情况下,当我运行./gradlew build bootJar时,我会得到JAR的客户端版本,在与java -jar theJar.jar一起运行时,它将执行ClientApplication类。
但是,我也想发布一个第二个JAR,它有一个不同的mainClassName并运行com.me.ServerApplication。
我该怎么处理这个?我对Gradle相当陌生--我应该将mainClassName提供给./gradlew命令来覆盖它吗?或者我可以定义单独的任务,比如clientBootJar和serverBootJar,它们将产生不同的工件?
发布于 2019-08-25 21:09:23
由于您的配置是相互排斥的(不能有两个主文件),所以我要说,有两个任务是最好的:
tasks.bootJarClient {
mainClassName = "com.me.ClientApplication"
}
tasks.bootJarClient {
mainClassName = "com.me.ServerApplication"
}其他方法是使用属性,但如果您有更大的差异,则更有意义。
现在,要创建一个自定义任务,在build.gradle.kts中添加一些类似于这些代码的内容(没有专门使用SpringBoot测试):
open class BootJarClient : BootJar() {
override mainClassName = "YourClientClassName"
}
tasks.register<BootJarClient>("bootJarClient") {
group = "Other"
}
// Server is basically the same属性的命名取自GitHub源。
https://stackoverflow.com/questions/57646289
复制相似问题