如何使用gradle脚本kotlin和spring启动gradle插件来构建一个可运行的jar

我有一个Gradle构建脚本,用于构建一个可运行的jar(依赖性也是罐子)与春天启动gradle插件工作正常,我想知道如何将其转换为gradle脚本kotlin。 我不知道如何处理bootRepackage,profile以及kotlin中的processResources。 以及是否支持与Spring启动gradle插件一起使用? 谢谢。

apply plugin: 'java' apply plugin: 'eclipse' buildscript { repositories { maven { url 'https://repo.spring.io/libs-milestone' } } dependencies { classpath 'org.springframework.boot:spring-boot-gradle-plugin:1.5.4.RELEASE' } } apply plugin: 'org.springframework.boot' sourceCompatibility = 1.6 targetCompatibility = 1.6 version = "1.0.0" tasks.withType(JavaCompile) { options.bootClasspath = "$JDK6_HOME/jre/lib/rt.jar" } if (project.hasProperty('env')) { println "Target environment: $env" sourceSets.main.resources.srcDir "src/main/profile/$env" } processResources{ exclude 'TagNames.properties' } repositories { jcenter() maven { url "http://clojars.org/repo" } } dependencies { compile files('lib/jlibs-core.jar') compile files('lib/jlibs-xml.jar') compile files('lib/autonomyPiB.jar') } bootRepackage { mainClass = 'com.test.TestA' } 

我指的是github和stackoverflow资源,看起来下面的方法可行,有什么问题请告诉我更新:

 import org.springframework.boot.gradle.plugin.SpringBootPlugin import org.springframework.boot.gradle.SpringBootPluginExtension buildscript { dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.6.RELEASE") } repositories { jcenter() } } plugins { java eclipse id("org.springframework.boot") version "1.5.6.RELEASE" } repositories { maven { url=uri("http://clojars.org/repo") } } dependencies { compile ("commons-net:commons-net:2.0") compile ("log4j:log4j:1.2.17") compile ("javax.servlet:servlet-api:2.4") } configure<JavaPluginConvention> { setSourceCompatibility(1.7) setTargetCompatibility(1.7) if(project.hasProperty("env")){ var env = project.property("env"); sourceSets.getByName("main").resources.srcDirs("src/main/profile/" + env) } } configure<ProcessResources>("processResources") { if(project.hasProperty("env")){ exclude("src/main/profile/scripts") } } //apply<SpringBootPlugin>() configure<SpringBootPluginExtension> { mainClass = "sample.HelloWolrd" } inline fun <reified C> Project.configure(name: String, configuration: C.() -> Unit) { (this.tasks.getByName(name) as C).configuration() } 

另一种工作方式:

 import org.springframework.boot.gradle.SpringBootPluginExtension configure<ProcessResources>("processResources") { if(project.hasProperty("env")){ exclude("src/main/profile/scripts") } } springBoot { mainClass = "Application" } inline fun <reified C> Project.configure(name: String, configuration: C.() -> Unit) { (this.tasks.getByName(name) as C).configuration() } /** * Retrieves or configures the [springBoot] [org.springframework.boot.gradle.SpringBootPluginExtension] project extension. */ fun Project.springBoot(configure: org.springframework.boot.gradle.SpringBootPluginExtension.() -> Unit = {}) = extensions.getByName<org.springframework.boot.gradle.SpringBootPluginExtension>("springBoot").apply { configure() }