2015-10-01 21 views
5

Shadow Plugin Gradle:mergeServiceFiles()は何をしますか?私は、行を追加する必要があり、私のbuild.gradleファイルで

shadowJar { 
    mergeServiceFiles() 
} 

それ以外の場合はjarファイルが正常に実行されません。私はこの行が正確に何をしているのだろうか? Eclipse LunaでGradleプラグインを使用しています。私は別のJavaプロジェクトに依存する1つのJavaプロジェクトでjarファイルを作成します。

答えて

1

なぜあなたは、自分でコードでそれを調査しませんか? 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を使用して見ることができるように。そのドキュメントから:

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

単一のリソースにMETA-INF/servicesのリソースのエントリを追加するリソースの変圧器から修正

。たとえば、いくつかのMETA-INF/services/org.apache.maven.project.ProjectBuilderリソース が多数のJARに分散している場合、個々のエントリはすべて、 META-INF/services/org.apacheに連結されます。 maven.project.ProjectBuilderリソース は、シェーディングプロセスによって生成された結果のJARにパッケージ化されています。

関連する問題