0

这可能是一个愚蠢的问题。目前在我公司,gradle 的使用开始出现。我一直在学习 gradle 的基础知识并将其用于我的小型项目。

由于 gradle 的灵活性,使用范围可以非常广泛。我来自 maven,现在我对 gradle 在我们项目中的作用感到困惑,因为它是一个通用工具。

以下是一些在我脑海中提出问题的用法:

  • Gradle 任务被视为 CLI 子命令。命令行参数作为属性传递。在我看来,该项目可以写成一个普通的 java/groovy,它使用已经相当成熟的库 common-cli 或 args4j(支持帮助、使用等)。
  • 一些子项目是使用 gradle 而不是使用 svn:externals 签出的。

我的问题不是关于如何?,它更应该是吗?

4

2 回答 2

1

Gradle 确实为您提供了很大的灵活性。因为它使用 Groovy - 你可以真正创建所有类型的工作流和命令。我不确定这是否是最佳做法。

最好的办法是当您可以利用 Gradle 的声明性方面(通过 Java 插件),就像使用 Maven 一样 - 按约定构建,然后如果您需要对构建工件做一些额外的事情,您可以进行自定义。所以 Gradle 是一种融合了 Maven 和 Ant 的所有优点的工具,用 Groovy DSL 代替了 XML。

您所描述的听起来更像是一个具有非常自定义结构的项目,而您真正利用的唯一东西是任务执行引擎。你会对 Ant 做同样的事情。但是你没有提到,例如,如果你正在使用插件。

一些子项目是使用 gradle 而不是使用 svn:externals 签出的

我认为你可以用任何其他构建工具做同样的事情。对我来说这听起来很奇怪 - 已经有一个 CLI 工具(svn、git、hg、)。可能创建此功能的人迫切希望将所有命令集成到一个工具中,这在某些情况下可能非常有用,为什么不呢。但是由于您没有提供更多上下文,这听起来像是对脚本和过度工程的过度使用。

于 2013-09-06T00:41:51.843 回答
0

gradle 页面中的功能显示了很多关于这个工具的信息。Gradle 具有 ant 的灵活性和 Maven 的约定。Gradle 可以使用 ANT 和 Maven。Groovy 中的所有内容。

Features
    Declarative builds and build-by-convention
        Gradle uses DSL(Domain Specific Language) based on Groovy.
    Language for dependency based programming
        The tasks are based in a hierarchy, favoring the builds
    Structure your build
        Easy to compose buid from reusable pieces
    Deep API
        Allow to monitor and customize the configuration and behavior execution
    Scalability
        Reusability allows one project uses parts of other projects increasing the produtivity
    Multi-project builds
        You can rebuild a project or its sub-project, that depends on another sub-project.
    Different ways to manage dependencies
        Maven has just one way.  Can integrate with maven and ivy, or just use jars or directories.
    Groovy
        Insteady of XML.
于 2013-10-27T14:38:47.153 回答