gradle java项目中fat jar的替代方案

gradle java项目中fat jar的替代方案,java,gradle,Java,Gradle,我今天就从格拉德尔开始。所以我尝试随机的东西。我有以下build.gradle文件: apply plugin: 'java' repositories { mavenCentral() } dependencies { testImplementation('org.junit.jupiter:junit-jupiter-api:5.4.2') testRuntime('org.junit.jupiter:junit-jupiter-engine:5.4.2')

我今天就从格拉德尔开始。所以我尝试随机的东西。我有以下
build.gradle
文件:

apply plugin: 'java'
repositories {
    mavenCentral()
}
 
dependencies {
    testImplementation('org.junit.jupiter:junit-jupiter-api:5.4.2')
    testRuntime('org.junit.jupiter:junit-jupiter-engine:5.4.2')
    compile 'com.googlecode.json-simple:json-simple:1.1.1'
    
}

test {
    useJUnitPlatform()
}
jar {
  manifest {
    attributes(
      'Main-Class': 'src.main.java.demo.Hello'
    )
  }
  from {
     configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it)}        
   }
}

我在某个地方读到,我在
块中使用的
方法将创建胖jar,这不是一个好的实践。由于我对这一点还不熟悉,我谦虚地想问一下这个问题的替代方案。是将类路径添加到清单还是其他内容

主要目的是捆绑将在运行时使用的第三方依赖项jar文件


谢谢大家!

您可以将所有依赖项与您自己的JAR和可能的外部资源一起放入一个ZIP文件,或者构建一个安装程序,或者(如果您正在构建一个web应用程序)构建一个WAR或EAR文件。Gradle在任何情况下都会为你保管舱单


(另外,胖罐子也没什么问题,它们现在很常见,而且很管用。)

你能告诉我你写的东西是怎么做的吗。我的意思是build.gradleu中的任何更改使用Zip插件:@VIPULTYAGI如果您使用的是Java 9+,则可以使用
jlink
创建自定义运行时映像。如果您使用的是Java 14,则可以使用
jpackage
(当前正在酝酿中)创建本机可执行文件或安装程序。注意:这两种方法都可以创建特定于平台的自包含应用程序。由于您使用的是Gradle,您可以使用@VIPULTYAGI更轻松地使用上述工具。此外,为了更轻松地创建fat/uber罐子,您可以使用。