我的团队正在严格监管的环境中构建软件,因此我们需要一个完整的物料清单 - 即使对于我们的构建工具本身也是如此。我们目前正在使用Gradle 2.12,但如果能解决我们目前的问题,可以升级。
我正在尝试为Gradle生成BOM;所有buildscript依赖项的列表。我们已经可以为我们正在构建的代码生成一个;这只是Gradle本身需要的一组依赖项。目前,我们使用以下任务来获取buildscript依赖项列表:
task buildscriptDependencies(type: DependencyReportTask) {
configurations = [buildscript.configurations.classpath]
}
但是,这只会给我们直接依赖,而不是传递依赖。
最终的测试是使用此BOM来填充本地工件存储库(Artifactory,如果它很重要)并基于此构建,完全与Internet断开连接。如果我们不能在没有互联网的情况下建设,我们就无法通过审核。
有人知道生成完整的构建脚本BOM的方法吗?
编辑:我在过去几天发现了一些问题,这使得这个问题比原先想象的更难:依赖关系列表是BOM的一部分,而不是整个事情。POM文件可以列出依赖项,但它们也可以列出父项。我对POM父母并不了解,但到目前为止我能看到的是:
如果foo版本209将'foo-parent'声明为父级,则需要foo-parent版本209。
在这种情况下,foo被称为继承自foo-parent,类似于类可以相互继承的方式。
自动生成依赖项文件的标准方法不会列出父项。因此,我没有得到完整的BOM。由于我使用BOM来预加载存储库,所以我的所有构建都失败了,因为各种依赖项无法找到他们的妈妈。
答案 0 :(得分:1)
In gradle, we have the option to specify different dependency list in one.
For ex:
List ruby = ["org.ruby:ruby:2.0.1@jar",
"commons-cli:commons-cli:1.0@jar",
"org.apache.ant:ant:1.9.4@jar"]
List hibernate = ['org.hibernate:hibernate:3.0.5@jar',
'somegroup:someorg:1.0@jar']
dependencies {
runtime ruby, hibernate
}
答案 1 :(得分:0)
在gradle 2.12中,您可以使用内置任务gradle buildEnvironment
打印包含传递的所有构建依赖项的树。