Gradle给java项目生成可执行jar包的方法(包含所有lib依赖)

方法一:用原生的java-library打jar包:

plugins {
    id 'java-library'
}

jar {
    duplicatesStrategy = DuplicatesStrategy.EXCLUDE
    archiveFileName = '${fileName}'
    manifest {
        attributes 'Main-Class': "${mainClass}"
    }

    from {
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }
}

方法二: 利用shadow插件:

plugins {
    id 'com.github.johnrengelman.shadow' version '7.1.2'
}

shadowJar {
    archiveClassifier.set("${fileSuffix}")
    manifest.attributes.put("Main-Class", "${mainClass}")
}

特别注意:一定要指定mainClass, 否则运行jar包时会报错:找不到主清单属性!