Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gradle 是否将Kotlin类指定为MANIFEST.MF中的主类入口点?_Gradle_Jar_Kotlin_Uberjar_Shadowjar - Fatal编程技术网

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
的入口点?(或者,fat
JAR
根据您的喜好。)

笨拙地编辑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'

}