2014-02-21 45 views
0

通常情况下,我定义简单的项目依赖:传递项目依赖的依赖时,有一个拉链神器

dependencies { 
    compile project(':someProject') 
} 

这非常适用于Java项目。不过,我有一个产生压缩神器项目:

artifacts { 
    archives file: zipDistribution.archivePath, type: 'zip', builtBy: zipDistribution 
} 

当我做以上依赖定义,当我遍历在编译配置的依赖我没有得到压缩神器。一个jar文件在那里,但没有zip。然而,这却得到了zip文件:

dependencies { 
    compile project(path: ':someProject', configuration: 'archives') 
} 

太棒了!有用!除了“someProject”有它自己的依赖关系......并且我们没有更多地传递它们。将transitive: true添加到项目依赖项也没有帮助。

如何获取项目的zip文物以及与之相关的传递依赖关系?我可以添加两种依赖关系,但是我觉得必须有一种方法可以在一个依赖关系定义中完成。

回答

1

archives配置包含要上载的工件,但它不包含任何依赖关系。试试这个:

dependencies { 
    runtime ... 
} 

artifacts { 
    runtime zipDistribution // assuming this is a `Zip` task 
} 

dependencies { 
    compile project(':someProject') 
} 

代替了Java插件的runtime配置,前者脚本还可以依赖和文物添加到自定义配置,那么这将在该项目中的依赖要体现(project(path: ..., configuration: ...))。