2017-04-24 4 views
0

に私はjarアーカイブの特定のサブフォルダに私のカスタム定義されたzipアーカイブの依存関係の内容をコピーするように設定されたjarタスクがあります。のGradleのコピーコンテンツ専用のフォルダ

configurations { 
    docs 
    javadocs 
} 

dependencies { 
    ... 
    docs "mygroup:myartifact:0.0.1-SNAPSHOT:[email protected]" 
    javadocs "mygroup:myartifact:0.0.1-SNAPSHOT:javadoc" 
} 

jar { 
    ... 
    from (configurations.docs.collect { zipTree(it) }) { 
     into 'static/docs' 
    } 

    from (configurations.javadocs.collect { zipTree(it) }) { 
     into "static/docs/${name}/${version}/javadoc" 
    } 

} 

ドキュメントの依存関係のためにうまく動作します。 javadocの場合、私は、Jarの特定のサブフォルダにコンテンツをコピーするために、対応する依存関係の名前とバージョンにアクセスする必要があります。そうでなければ重複し、私はjavadocsの依存関係の内部フォルダ構造を制御しません。

スケルトン機能を実現するためにGradle APIにアクセス/使用する方法はありますか?

答えて

2

(完全にテストされていない。Gradleの3.5を使用して)、これを試してみてください:

jar { 
    ... 
    from (configurations.docs.collect { zipTree(it) }) { 
     into 'static/docs' 
    } 

    configurations.javadocs.resolvedConfiguration 
     .firstLevelModuleDependencies.each { ResolvedDependency dep -> 
      into("static/docs/${dep.moduleName}/${dep.moduleVersion}/javadoc") { 
       from(dep.moduleArtifacts.collect { zipTree(it.file) }) 
      } 
     } 

} 

私はConfigurationhere用のGradleのjavadocの周り突っつい後にそれを一緒にハッキング。

+0

うわー、それはありがとうございます! –

関連する問題