美文网首页
Gradle 安装 & 命令行选项

Gradle 安装 & 命令行选项

作者: 南窗云 | 来源:发表于2018-10-13 14:08 被阅读0次

    系统学习 Gradle ,不局限于Android ,学习《实战Gradle》并简要记录

    1 安装

    直接参考 Gradle主页 安装方式,安装即可!

    两种安装方式:

    1.1 Install with a package manager (使用 包管理器 安装)

    对于Mac系统,需要先安装 Homebrew ,然后在使用下面的命令 安 Gradle

    $ brew install gradle
    

    运行之后,提示如下信息(偶然性),需要升级 Xcode 版本,或者 干掉它。


    之前的版本太低了,Homebrew 的版本需要更新 需要升级 Xcode
    删掉还是升级,任选一种吧,处理之后:
    正常安装
    验证安装是否成功
    $ gradle -v
    

    查询结果如下,表示安装成功


    安装成功
    1.2 Install manually(手动安装)

    参考官网,本文采取第一种安装方式

    2 命令行选项

    gradle 命令允许同时定义一个或多个命令行选项
    比如下文要提到的 -i 和 -s 选项,就可以合并为 -is 或 -i -s

    本文将介绍 最重要的10个命令行选项,并进行简单分类:

    • 日志选项 3个 ,-i / -s / -q
    • 参数选项 2个,-D / -P
    • 帮助任务 2个 ,tasks / properties
    • 其它选项3个, -? / -b / --offline

    日志选项 (-i / -s / -q)

    2.1 开始使用 Gradle ,并使用 -q 命令行选项

    创建脚本文件,然后运行。
    Gradle 构建脚本默认名字是 build.gradle

    2.1.1 在对应路径下,创建脚本文件,从 Hello World 开始
    创建脚本文件

    脚本语言是Groovy(Gradle的通用语言),其中 task 和 action (doLast 就是一个 action)是这门语言(Gradle就是Groovy)的重要元素!

    task helloWorld{
        doLast{
            println 'hello world !'
        }
    }
    

    << 可以简单代表 doLast ,上述代码可简化为:

    task helloWorld << {
            println 'hello world !'
    }
    
    2.1.2 运行脚本
    gradle -q helloworld
    

    << 替换 doLast 后的两次运行结果一致,如下:


    运行结果

    去掉 -q 命令行选项,打印的信息如下:


    去掉 -q 命令行选项
    1. doLast 是 task 执行的最后一个 action ,可用 << 简单代表
    2. 通过 -q 命令行选项 使其只输出该task相关的信息。同 --quiet 命令行选项
    gradle --quiet helloworld
    
    -q 命令行选项 等同于 --quiet 命令行选项

    2.2 命令行选项 -i , --info

    默认设置中不会提供大量的输出信息,如果想知道构建中发生了什么,
    日志级别改到 INFO ,可以获取到更多信息

    效果展示

    2.3 命令行选项 -s , --stacktrace

    -s 选项在有异常抛出时会打印出简短的堆栈跟踪信息,以帮助进行调试
    将脚本故意多写一个大括号,以测试 -s 选项

    task helloWorld << {
            println 'hello world !'
    }
    }
    

    对比未使用 -s 和使用时的区别:

    未使用 -s 使用 -s 选项,第一页
    使用 -s 选项,最后一页

    可以看到详细的堆栈信息(中间的没有截图,太多了)

    参数选项 (-D / -P)

    2.4 命令行选项 -D , --system-prop

    Gradle 是以一个 JVM进程运行的,和所有的 Java 进程一样,可以提供一个系统参数。

    -D, --system-prop         Set system property of the JVM (e.g. -Dmyprop=myvalue).
    

    2.5 命令行选项 -P , --project-prop

    项目参数是构建脚本中可用的变量,可以使用这个选项直接向构建脚本中传入参数

    -P, --project-prop        Set project property for the build script (e.g. -Pmyprop=myvalue).
    

    帮助任务 (tasks / properties)

    2.6 命令行选项 tasks

    显示项目中所有可运行的task,包括它们的描述信息。
    项目中应用的插件可能会提供一些额外的task。


    效果展示

    2.7 命令行选项 properties

    显示出项目中所有可用的属性。

    jake@bogon:~/Documents/gradleTest$     gradle properties
    
    > Task :properties
    
    ------------------------------------------------------------
    Root project
    ------------------------------------------------------------
    
    allprojects: [root project 'gradleTest']
    ant: org.gradle.api.internal.project.DefaultAntBuilder@1a8f065b
    antBuilderFactory: org.gradle.api.internal.project.DefaultAntBuilderFactory@5cdd0183
    artifacts: org.gradle.api.internal.artifacts.dsl.DefaultArtifactHandler_Decorated@5e0ed76
    asDynamicObject: DynamicObject for root project 'gradleTest'
    baseClassLoaderScope: org.gradle.api.internal.initialization.DefaultClassLoaderScope@7dfd9b3b
    buildDir: /Users/jake/Documents/gradleTest/build
    buildFile: /Users/jake/Documents/gradleTest/build.gradle
    buildPath: :
    buildScriptSource: org.gradle.groovy.scripts.TextResourceScriptSource@1f22e701
    buildscript: org.gradle.api.internal.initialization.DefaultScriptHandler@2b473c7f
    childProjects: {}
    class: class org.gradle.api.internal.project.DefaultProject_Decorated
    classLoaderScope: org.gradle.api.internal.initialization.DefaultClassLoaderScope@294eef3c
    components: SoftwareComponentInternal set
    configurationActions: org.gradle.configuration.project.DefaultProjectConfigurationActionContainer@387b9d6d
    configurationTargetIdentifier: org.gradle.configuration.ConfigurationTargetIdentifier$1@30e97f8c
    configurations: configuration container
    convention: org.gradle.api.internal.plugins.DefaultConvention@225f192a
    defaultTasks: []
    deferredProjectConfiguration: org.gradle.api.internal.project.DeferredProjectConfiguration@7cb62552
    dependencies: org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler_Decorated@18425f5c
    dependencyLocking: org.gradle.internal.locking.DefaultDependencyLockingHandler_Decorated@632c46c7
    depth: 0
    description: null
    displayName: root project 'gradleTest'
    ext: org.gradle.api.internal.plugins.DefaultExtraPropertiesExtension@396085c1
    extensions: org.gradle.api.internal.plugins.DefaultConvention@225f192a
    fileOperations: org.gradle.api.internal.file.DefaultFileOperations@74b1ab0a
    fileResolver: org.gradle.api.internal.file.BaseDirFileResolver@7e83a27f
    gradle: build 'gradleTest'
    group:
    helloWorld: task ':helloWorld'
    identityPath: :
    inheritedScope: org.gradle.api.internal.ExtensibleDynamicObject$InheritedDynamicObject@7f18d916
    layout: org.gradle.api.internal.file.DefaultProjectLayout@426b15b9
    listenerBuildOperationDecorator: org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator@3b7b0f05
    logger: org.gradle.internal.logging.slf4j.OutputEventListenerBackedLogger@48044c24
    logging: org.gradle.internal.logging.services.DefaultLoggingManager@5808d24f
    modelRegistry: org.gradle.model.internal.registry.DefaultModelRegistry@61616031
    modelSchemaStore: org.gradle.model.internal.manage.schema.extract.DefaultModelSchemaStore@15fbb562
    module: org.gradle.api.internal.artifacts.ProjectBackedModule@7d30806e
    name: gradleTest
    normalization: org.gradle.normalization.internal.DefaultInputNormalizationHandler_Decorated@7bbd6779
    objects: org.gradle.api.internal.model.DefaultObjectFactory@18dd5c2c
    parent: null
    parentIdentifier: null
    path: :
    pluginManager: org.gradle.api.internal.plugins.DefaultPluginManager_Decorated@6597fd2
    plugins: [org.gradle.api.plugins.HelpTasksPlugin@6cd3e7c0]
    processOperations: org.gradle.api.internal.file.DefaultFileOperations@74b1ab0a
    project: root project 'gradleTest'
    projectConfigurator: org.gradle.api.internal.project.BuildOperationCrossProjectConfigurator@7c45c38c
    projectDir: /Users/jake/Documents/gradleTest
    projectEvaluationBroadcaster: ProjectEvaluationListener broadcast
    projectEvaluator: org.gradle.configuration.project.LifecycleProjectEvaluator@e0bcc14
    projectPath: :
    projectRegistry: org.gradle.api.internal.project.DefaultProjectRegistry@43e185e8
    properties: {...}
    providers: org.gradle.api.internal.provider.DefaultProviderFactory@76c75cee
    repositories: repository container
    resourceLoader: org.gradle.internal.resource.transfer.DefaultUriTextResourceLoader@30ff87b3
    resources: org.gradle.api.internal.resources.DefaultResourceHandler@62f46b83
    rootDir: /Users/jake/Documents/gradleTest
    rootProject: root project 'gradleTest'
    script: false
    scriptHandlerFactory: org.gradle.api.internal.initialization.DefaultScriptHandlerFactory@32cf70a5
    scriptPluginFactory: org.gradle.configuration.ScriptPluginFactorySelector@7d4e6dd1
    serviceRegistryFactory: org.gradle.internal.service.scopes.ProjectScopeServices$4@31c0afd4
    services: ProjectScopeServices
    standardOutputCapture: org.gradle.internal.logging.services.DefaultLoggingManager@5808d24f
    state: project state 'EXECUTED'
    status: release
    subprojects: []
    tasks: task set
    version: unspecified
    
    Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0.
    Use '--warning-mode all' to show the individual deprecation warnings.
    See https://docs.gradle.org/4.10.2/userguide/command_line_interface.html#sec:command_line_warnings
    
    BUILD SUCCESSFUL in 0s
    1 actionable task: 1 executed
    

    其它选项 (-? / -b / --offline)

    2.8 命令行选项 -? , -h , --help

    打印出所有可用的命令行选项。包含描述信息

    // 任选一个命令
    gradle -?
    gradle -h
    gradle --help
    

    2.9 命令行选项 -b , --build-file

    Gradle 构建脚本的默认命名约定是 build.gradle。
    使用该命令可以执行一个特定名字的构建脚本。

    创建一个名为 jake.gradle 的脚本文件,包含一个名为 test 的 task

    命令结构为: gradle -b [文件名] [任务名]

    gradle -b jake.gradle  test
    
    运行结果
    gradle -q -b jake.gradle  test
    
    当然,也可以和 -q 选项同时使用

    2.10 命令行选项 --offline

    使用该选项可以以离线模式运行构建,仅仅在本地缓存中检查依赖是否存在。
    在无网络且本地缓存没有时,若不使用该选项,构建都会失败。


    Gradle 更多,待续...

    相关文章

      网友评论

          本文标题:Gradle 安装 & 命令行选项

          本文链接:https://www.haomeiwen.com/subject/fmznaftx.html