加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Shadow Plugin Gradle:mergeServiceFiles()做什么?

发布时间:2020-12-15 02:58:22 所属栏目:Java 来源:网络整理
导读:在我的build.gradle文件中,我需要添加以下行: shadowJar { mergeServiceFiles()} 否则罐子不能正常运行.我想知道这条线到底是做什么的? 我在Eclipse Luna中使用Gradle插件.我在一个Java项目上创建了jar,它依赖于另一个Java项目. 解决方法 你为什么不自己在
在我的build.gradle文件中,我需要添加以下行:
shadowJar {
    mergeServiceFiles()
}

否则罐子不能正常运行.我想知道这条线到底是做什么的?
我在Eclipse Luna中使用Gradle插件.我在一个Java项目上创建了jar,它依赖于另一个Java项目.

解决方法

你为什么不自己在代码中调查呢? mergeServiceFiles正好声明为 here,其实现如下:
/**
 * Syntactic sugar for merging service files in JARs
 * @return
 */
public ShadowJar mergeServiceFiles() {
    try {
        transform(ServiceFileTransformer.class);
    } catch (IllegalAccessException e) {
    } catch (InstantiationException e) {
    }
    return this;
}

正如您所看到的,它使用了定义为here的ServiceFileTransfomer.来自其文档:

Modified from org.apache.maven.plugins.shade.resource.ServiceResourceTransformer.java

Resources transformer that appends entries in META-INF/services resources into a single resource. For example,if there are several META-INF/services/org.apache.maven.project.ProjectBuilder resources spread across many JARs the individual entries will all be concatenated into a single META-INF/services/org.apache.maven.project.ProjectBuilder resource packaged into the resultant JAR produced by the shading process.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读