我是Gradle的新手,并且是经验丰富的Maven专家。到目前为止,尽管我喜欢Gradle,但我已经缺少Maven的功能-因为它不存在,或者因为我没有找到它,或者因为它被称为其他东西。
在Maven中,有一个继承的概念,通过这个继承,一个POM可以从父代继承属性和某些行为,并且由于父POM也可以从祖父母POM等继承父代。因此,可以对构建位进行模板化行为。这是我希望能够做到的事情,因为我正在设计替代旧的硬性构建系统(称为“规则”之类的东西)的过程。Maven父级中定义的任何此类属性或行为都可以在子级中覆盖。
有人可以指出我在Gradle中可以找到类似概念的地方吗?
我到处都是文档,却没有确切地看到我所追求的,但是也许我会错过它?我查看了Gradle的比较表,发现“命名域对象容器”被描述为“非常强大的功能”,但是该链接指向的是Javadoc,而不是示例如何使用它。
然后是“用于预配置构建的多个混入”,这听起来也很有趣,但同样没有任何示例。
在此先感谢任何可以提供帮助的人。
更新: 我在这里重复我在下面的评论中所说的,以强调我要在这里完成的工作:
在我的情况下,有数百个多构建项目,其子项目大多属于以下几类之一,每个子项目都有一致的结构和假设(关于目录结构,使用的rpm脚本等),我不想存储所有这些一致性在父级中(在每个父级项目中都需要重复),但在所有“父级”层级上都存在并且所有子项项目都可以访问的“元层”中。 这种可访问性可能应该通过父项目来实现,但不应驻留在那里。
小智 0
对于 gradle 来说,概念不再是继承,而是组合。一个人构建插件、其他谨慎的 gradle 文件或两者,然后将它们“应用”到其他项目。
因此,在多项目构建(Gradle MultiProjectBuild)中,通常使用“根”项目来配置自身及其子项目。这可以通过多种方式完成:
allprojects {
task hello << {task -> println "I'm $task.project.name" }
}
subprojects {
hello << {println "- I depend on water"}
}
Run Code Online (Sandbox Code Playgroud)
或者
configure(allprojects) { project ->
project.hello << {task -> println "I'm $task.project.name"}
}
configure(subprojects) { project ->
project.hello << {println "- I depend on water"}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1240 次 |
| 最近记录: |