Gradle User Guide经常提到 Gradle 是声明式 并使用按约定构建。这是什么意思?
根据我的理解,这意味着,例如,在 java 插件中有这样的约定
源必须在src/main/java
,测试必须在src/main/test
,资源在src/main/resources
,就绪build/libs
中的 jars 等等。但是,Gradle 不强制您使用这些约定,您可以根据需要更改它们。
但是对于第一个概念,我在理解上有更大的问题。就像 SQL 一样,你说你想对你的查询做什么,但不说数据库系统将如何获得它们,使用哪种算法来提取数据等。
请告诉我更多信息以正确理解这些概念。谢谢。
最佳答案
您对按约定构建 的理解是正确的,因此我不必在那里添加任何内容。 (另请参阅 Jeff 的回答。)
声明式背后的想法是,您不必在任务级别上工作,自己实现/声明/配置所有任务及其依赖项,而是可以在更高、更具声明性的级别上工作.您只需说“这是一个 Java 项目”(apply plugin: "java"
)、“这是我的二进制存储库”(repositories { ... }
)、“这是我的来源”(sourceSets { ... }
),“这些是我的依赖项”(dependencies { ... }
)。基于此声明性信息,Gradle 将确定需要哪些任务、它们的依赖项是什么以及需要如何配置它们。
关于java - Gradle深度讲解中的build-by-convention是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21190233/