Gradle 是否将Kotlin类指定为MANIFEST.MF中的主类入口点?
如何告诉Gradle 是否将Kotlin类指定为MANIFEST.MF中的主类入口点?,gradle,jar,kotlin,uberjar,shadowjar,Gradle,Jar,Kotlin,Uberjar,Shadowjar,如何告诉shadowJar使用Kotlin文件作为结果uberJar的入口点?(或者,fatJAR根据您的喜好。) 笨拙地编辑META-INF/MANIFEST.MF,并在zip文件中替换它(使用GUI将其放回): 各种各样的成功。它按预期运行Kotlin类 项目: . ├── build.gradle ├── gradle │ └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├
shadowJar
使用Kotlin文件作为结果uberJar
的入口点?(或者,fatJAR
根据您的喜好。)
笨拙地编辑META-INF/MANIFEST.MF,并在zip文件中替换它(使用GUI将其放回):
各种各样的成功。它按预期运行Kotlin类
项目:
.
├── build.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
└── src
├── main
│ ├── java
│ │ └── net
│ │ └── bounceme
│ │ └── dur
│ │ └── kotlin
│ │ └── App.java
│ └── kotlin
│ └── demo
│ ├── example.kt
│ └── main.kt
└── test
└── java
13 directories, 9 files
生成文件:
plugins {
id 'com.gradle.build-scan' version '1.8'
// id 'java'
id 'application'
id "org.jetbrains.kotlin.jvm" version "1.1.51"
id 'com.github.johnrengelman.shadow' version '2.0.1'
}
buildScan {
licenseAgreementUrl = 'https://gradle.com/terms-of-service'
licenseAgree = 'yes'
//publishAlways()
}
configurations {
provided
}
shadowJar {
baseName = 'kotlinAdder'
classifier = null
version = null
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
//mainClassName = 'net.bounceme.dur.kotlin.App'
mainClassName = 'demo.MainKt'
repositories {
jcenter()
}
configurations {
provided
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:1.1.51"
compile 'com.google.firebase:firebase-auth:11.4.2'
}
我如何告诉gradle继续使用shadowJar
,但要构建手动编辑的MANIFEST.MF
,将Main类demo.MainKt
显式设置为入口点
否则,当我在
build.gradle文件中明确设置了上述入口点时,Java代码甚至会。我投票结束这个问题,因为它似乎是一个打字错误/不可复制的问题。我试着模仿项目-build.gradle
(没有构建扫描)和kotlin源代码。在我的例子中,shadowjar有正确的Main类
条目。看起来OP还有另一个问题。另外,根据他们的文档:“应用应用程序插件和设置mainClassName自动配置shadowJar清单中的主类属性”。java-jar
也可以工作:/gradlew clean assemble&&java-jar build/libs/kotlinAdder.jar
打印你好,world代码>@madhead好吧,不知道。很好。不过谢谢:)我投票结束这个问题,因为它似乎是一个打字错误/不可复制。我试着模仿项目-build.gradle
(没有构建扫描)和kotlin源代码。在我的例子中,shadowjar有正确的Main类
条目。看起来OP还有另一个问题。另外,根据他们的文档:“应用应用程序插件和设置mainClassName自动配置shadowJar清单中的主类属性”。java-jar
也可以工作:/gradlew clean assemble&&java-jar build/libs/kotlinAdder.jar
打印你好,world代码>@madhead好吧,不知道。很好。不过谢谢你:)
plugins {
id 'com.gradle.build-scan' version '1.8'
// id 'java'
id 'application'
id "org.jetbrains.kotlin.jvm" version "1.1.51"
id 'com.github.johnrengelman.shadow' version '2.0.1'
}
buildScan {
licenseAgreementUrl = 'https://gradle.com/terms-of-service'
licenseAgree = 'yes'
//publishAlways()
}
configurations {
provided
}
shadowJar {
baseName = 'kotlinAdder'
classifier = null
version = null
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
//mainClassName = 'net.bounceme.dur.kotlin.App'
mainClassName = 'demo.MainKt'
repositories {
jcenter()
}
configurations {
provided
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:1.1.51"
compile 'com.google.firebase:firebase-auth:11.4.2'
}