uberjar的典型答案是以下代码:
用于项目的build.gradle
manifest {
attributes("Main-Class": "main.Main" )
}
jar{
//<editor-fold defaultstate="collapsed" desc="uberjar">
//uberjar start
from(configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }) {
exclude "META-INF/*.SF"
exclude "META-INF/*.DSA"
exclude "META-INF/*.RSA"
}
//uberjar end
//</editor-fold>
}据我观察,这是通过将所有jars放入maven local中来实现的。
如何让它只包含依赖项,还是只包含我选择的依赖项?
发布于 2018-10-13 01:27:24
您可以使用包含或排除配置(如果适合您的需要,也可以同时使用这两种配置)来指定您希望在uberjar中包含哪些包。
示例:
task customJar(type: Jar) {
.....
exclude('com/somePack/excludePack1/**')
exclude('com/somePack/excludePack2/**')
include('com/somePack/**')
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
with jar
}
// this example will include only packages with com/somePack/
// since exclude configuration specifies com/somePack/excludePack1/ and
// com/somePack/excludePack2/ packages to be excluded.
// any other packages under com/somePack/ will be included in the jar.如果使用include,它将只包含与include定义匹配的包。
如果你使用exclude,它将不会包含任何可以排除defitions的包。
您可以选择排除自己的源代码,如下所示。我建议创建一个自定义的jar任务,并针对这类事情执行此任务。(例如: gradle yourJarTaskName)
https://stackoverflow.com/questions/52780827
复制相似问题