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

在我的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.

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...