Java 创建fat可运行jar的Gradle任务

Java 创建fat可运行jar的Gradle任务,java,gradle,Java,Gradle,我有一个带有Main类的java应用程序,它依赖于其他几个库jar。我需要在gradle中创建一个可运行的jar,并将所有相关库复制到jar中。gradle插件“应用程序”或“java”不提供此功能。我正在使用最新的gradle版本6.7我可以通过创建一个任务来完成以下任务 使用主类属性更新清单文件 将所有编译时依赖项复制到jar任务 plugins { id 'application' } repositories { mavenCentral() //jcenter(

我有一个带有Main类的java应用程序,它依赖于其他几个库jar。我需要在gradle中创建一个可运行的jar,并将所有相关库复制到jar中。gradle插件“应用程序”或“java”不提供此功能。我正在使用最新的gradle版本6.7

我可以通过创建一个任务来完成以下任务

  • 使用主类属性更新清单文件

  • 将所有编译时依赖项复制到jar任务

    plugins {
      id 'application'
    }    
    repositories {
      mavenCentral()
      //jcenter()
    }    
    dependencies {
      compile group: 'org.json', name: 'json', version: '20200518'
      testImplementation 'junit:junit:4.13'
      implementation 'com.google.guava:guava:29.0-jre'
     }    
     task fatJar(type: Jar) {
    
      manifest {
          attributes 'Main-Class': 'com.example.gradle.App'
      }
      from {
          configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
      } with jar
    }
    
更多细节可以在本文中阅读