K.H*_*.H. 6 jar kotlin kotlin-multiplatform fatjar
我最近从旧的 1.2 多平台切换到 1.3。不同之处在于,每个多平台模块只有一个 build.gradle 文件(我有 5 个),因此配置要少得多。但是,我似乎无法配置创建具有 jvm 平台所有依赖项的可运行胖 jar。我曾经在我的 jvm 项目和 jar 任务中使用标准的“应用程序”插件,但这不再起作用了。我发现有“jvmJar”任务,我修改了它(设置 Main-class),但创建的 jar 不包含依赖项,并且在 ClassNotFoundException 上崩溃。我该怎么做?
这就是我现在所拥有的:
jvm() {
jvmJar {
manifest {
attributes 'Main-Class': 'eu.xx.Runner'
}
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}
}
Run Code Online (Sandbox Code Playgroud)
我确实遇到了这个问题并使用了这个解决方案。
让我们调用您的项目Project
。
创建另一个子模块 say subA
,它将具有 gradle 符号Project:subA
现在,subA
它的 build.gradle 中有你的多平台代码(它是带有 apply :kotlin-multiplafrom 的 gradle 项目)
创建另一个仅针对 jvm 的子模块subB
,该子模块将具有 gradle 符号Project:subB
所以,subB
会有插件:'application'
和'org.jetbrains.kotlin.jvm'
plugins {
id 'org.jetbrains.kotlin.jvm' version '1.3.31'
id "application"
}
apply plugin: "kotlinx-serialization"
group 'tz.or.self'
version '0.0.0'
mainClassName = "com.example.MainKt"
sourceCompatibility = 1.8
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
dependencies {
implementation project(':subA')
}
Run Code Online (Sandbox Code Playgroud)
您可以像常规 java 项目一样继续构建 subB,甚至使用现有的插件,它会起作用
归档时间: |
|
查看次数: |
1746 次 |
最近记录: |