首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对特定依赖项进行uberjar?

如何对特定依赖项进行uberjar?
EN

Stack Overflow用户
提问于 2018-10-12 21:42:25
回答 1查看 58关注 0票数 0

uberjar的典型答案是以下代码:

用于项目的build.gradle

代码语言:javascript
复制
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中来实现的。

如何让它只包含依赖项,还是只包含我选择的依赖项?

EN

回答 1

Stack Overflow用户

发布于 2018-10-13 01:27:24

您可以使用包含或排除配置(如果适合您的需要,也可以同时使用这两种配置)来指定您希望在uberjar中包含哪些包。

示例:

代码语言:javascript
复制
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)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52780827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档