当前位置: 首页 > 知识库问答 >
问题:

用gradle-script-kotlin构建一个可执行的fat jar

施同
2023-03-14

我刚刚将我的构建脚本移到了使用 gradle-script-kotlin,使用 gradle 3.4 和 gradle-script-kotlin 0.6。

我可以让构建脚本生成一个jar,但是清单不包括主类名。根据我找到的其他帖子,我尝试过以KT和Kt结尾的主类名。

构建脚本如下所示:

 /*
 *    Copyright 2017 SixRQ Ltd.
 *
 *    Licensed under the Apache License, Version 2.0 (the "License");
 *    you may not use this file except in compliance with the License.
 *    You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS,
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *    See the License for the specific language governing permissions and
 *    limitations under the License.
 */

group = "com.sixrq"
version = "1.0-SNAPSHOT"

buildscript {
    repositories {
        maven { setUrl("http://dl.bintray.com/kotlin/kotlin-eap-1.1")  } 
        gradleScriptKotlin()
    } 

    dependencies {
        classpath(kotlinModule("gradle-plugin"))
    }
}

plugins {
    application
    groovy
    java
}

apply {
    plugin("kotlin")
}

repositories {
    maven { setUrl("http://dl.bintray.com/kotlin/kotlin-eap-1.1") }
    mavenCentral() 
}

dependencies {
    compile(kotlinModule("stdlib"))
    compile("org.jetbrains.kotlin:kotlin-gradle-plugin:1.1-M04")
    compile("org.codehaus.groovy:groovy-all:2.3.11")
    compile("com.fasterxml.jackson.module:jackson-module-kotlin:2.7.4")
    testCompile("org.spockframework:spock-core:1.0-groovy-2.4")
    testCompile("junit:junit:4.11")
}

configure<ApplicationPluginConvention> {
    mainClassName = "com.sixrq.kaxb.main.SchemaGenerator"
}

我还想创建一个包含运行时依赖项的胖jar,我可以看到很多关于时髦构建脚本的示例,但对于gradle-script-kotlin却没有,有什么建议吗?

谢啦

共有1个答案

牛昱
2023-03-14

应用程序插件不是正确的位置,它用于生成运行脚本。为了在jar中设置主类,您需要使用以下内容:

import org.gradle.jvm.tasks.Jar

val jar: Jar by tasks
jar.apply {
    manifest.attributes.apply {
        put("Main-Class", "com.sixrq.kaxb.main.SchemaGenerator")
    }
}

在Kotlin脚本构建文件

 类似资料:
  • 这是我的com.loloof64.kotlin.exps.multiDeclarations.kt 当我从终端(java-jar myjar.jar)启动jar时,我得到以下stacktrace,告诉我kotlin反射库类丢失了,而且实际上它们还没有添加到jar中。我似乎错过了最终jar中的kotlin-compiler工件类,也错过了kotlin-stdlib源代码,但我不知道如何适应gradl

  • 我已经找了两天来解决这个问题,但我没有找到解决办法。首先我想构建fat-jar,然后我放弃了它看起来更复杂,所以我开始构建普通的可执行Jar。我正在用Gradle插件在NetBeans 8.2中构建一些程序(http://plugins.NetBeans.org/plugin/44510/gradle-support) 我的项目结构是这样的: 项目结构 我是一个比较新的年级,我使用它不到一个月。我

  • 与一个单一的项目,我有它的工作很好。

  • gradle脚本最简单的Kotlin hello world for: 为了简洁起见,请参考项目本身,它实际上只包含构建文件和一个kotlin脚本。 如何使用 gradle 脚本 Kotlin 构建文件构建可运行的 ShadowJar?

  • 这是用Gradle构建Kotlin+Java9项目的后续。在链接后使用Groovy的Gradle。在我的情况下,使用Kotlin DSL。 基本上我有一个梯度项目与以下结构(只有相关的内容在这里): 问题:如何让链接的post(或任何其他解决方案)中提供的解决方案运行,以便使用Java9/10环境编译带有Gradle的Kotlin DSL的Kotlin项目?

  • 我试图在Spring Boot+Gradle项目中构建一个可执行的jar,但目前没有任何工作。下面是最简单的结构。可能,Gradle配置中缺少一些东西。 格雷德尔: 主配置文件: 当我运行java-jar1.jar这样的jar文件时,出现了以下异常: 可能出了什么问题?