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>
}
根据我的观察,这可以通过将所有jar放入maven local来实现。
如何仅使它成为依赖项,或者仅使我选择的依赖项成为uberjar?
答案 0 :(得分:1)
您可以使用“包含”或“排除”配置(或在需要时同时使用两者)来指定要在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,它将仅包含与包含定义匹配的软件包。
如果使用exclude,它将不包含任何数学运算排除定义的软件包。
您可以选择排除自己的源代码,如下所示。我建议创建一个自定义的jar任务,并为这种事情执行该任务。 (例如:gradle yourJarTaskName)