无法使用 Gradle 创建 jar 文件

问题描述

Hi 从 git 导入了一段代码,我运行主类时代码运行。但是,我无法创建 jar 文件。 我将此添加到父 build.gradle:

    classifier 'fat'
    manifest {
        attributes 'Main-Class': 'SampleClient'
    }
    exclude 'meta-inf/*.DSA','meta-inf/*.RSA','meta-inf/*.SF'
}

当我运行时

./gradlew clean fatjar

它会在 .out 文件夹中创建一个 jar 文件。但是jar似乎不包含任何类文件

jar -tf <Folder>/.out/libs/testJob-1.6.0.17-SNAPSHOT-fat.jar
meta-inf/
meta-inf/MANIFEST.MF

当我运行 jar 时,它给出了“找不到主类”的错误

java -jar <Folder>/.out/libs/testJob-1.6.0.17-SNAPSHOT-fat.jar
Error: Could not find or load main class SampleClient

不确定我哪里出错了。

整个包包含三个模块

enter image description here

主类 -- SampleClient 位于示例模块中。

任何指针都会有所帮助。并提出任何问题,我可以分享必要的细节。

解决方法

你能不能尝试创建一个单独的 gradle 任务并尝试同样的方法,有多种方法可以做到这一点 ref: https://www.baeldung.com/gradle-fat-jar

task customFatJar(type: Jar) {
    manifest {
        attributes 'Main-Class': 'Application-path'
    }
    baseName = 'jar-name'
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    with jar
}

将 main-class 中的应用路径和 baseName 替换为 jar 名称。