将zip依赖项的内容复制到专用文件夹中

时间:2017-04-24 15:01:21

标签: gradle

我有一个jar任务,配置为将我自定义的zip存档依赖项的内容复制到jar存档的特定子文件夹中:

configurations {
    docs
    javadocs
}

dependencies {
    ...
    docs "mygroup:myartifact:0.0.1-SNAPSHOT:docs@zip"
    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来实现草绘功能?

1 个答案:

答案 0 :(得分: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) })
            }
        }

}

我在Configuration here的Gradle javadoc周围进行了一次攻击。