美文网首页
Gradle---初体验

Gradle---初体验

作者: 狮子头上的大花猫 | 来源:发表于2016-12-15 13:06 被阅读0次

    背景

    出于学习需要,最近开始接触IDEA和Gradle.由于接触Java时间也还很短,之前也只是用过VS里的NuGet。对于Gradle的理解也只局限于依赖管理和项目自动构建这两方面。Gradle的概念和安装这些我就不说了,百度谷歌上一大堆。下面就开始以例子的形式来体验一把Gradle的一些基本使用。

    一.创建一个简单的Java应用

    先看实例:

    $ mkdir hello-world
    $ cd hello-world
    $ gradle init --type java-library
    $ vim build.gradle # 添加 apply plugin: 'idea' 后保存退出
    $ ./gradlew idea
    $ ./gradlew build
    $ open hello-world.ipr # 可以直接用IntelliJ打开该文件

    上面是在Linux下的命令,Windows下只需要将用notepad++替换vim,最后直接用IDEA打开hello-world.ipr即可。

    gradle init --type java-library --- 表示生成默认的目录结构以及示例代码。
    apply plugin: 'idea' --- 表示应用idea插件,用于生成idea的项目。
    apply plugin: 'java' --- 默认应用java插件,提供了一系列管理和构建Java项目的任务。

    用idea打开此生成的目录,会发现没有src/main/resources和src/test/resources这两个目录,可以自己新建文件夹然后在文件夹上右键:

    resource.jpg

    我这里是已经Mark过了,所以显示的是Unmark as Resources Root.
    另外,在项目下的build.gradle是gradle的配置文件。

    二.Gradle项目的标准结构

    Gradle遵循COC(convention over configuration约定优于配置)的理念,默认情况下提供了与Maven相同的项目结构配置,大体结构如下:

    • project root
      • src/main/java(项目源码目录)
      • src/main/resources(项目资源目录)
      • src/test/java(测试源码目录)
      • src/test/resources(测试资源目录)
      • src/main/webapp(web工程目录)

    当然也可以自定义目录结构。方法如下(其他具体写法请自行百度~):

    sourceSets { 
        main {
             java { 
               srcDir 'src/java'
             }
             resources {
               srcDir 'src/resources'
             }
       }
    }
    

    当然最好还是遵循标准的目录结构,这样更方便统一。看起来也一目了然。

    三.使用Gradle

    将项目导入idea后,关联上Gradle后在视图菜单中打开Gradle,可以看到所有可以执行的任务:

    tasks.jpg

    可以直接在这里执行某个task,也可以在下面的命令行中手动键入命令执行。
    可以键入gradle tasks来列出项目的所有任务. 通过这个命令来看 Java 插件在你的项目里加入了哪些命令、和每个命令的作用。

    四.最简单的Gradle配置文件

    前面第一步我们已经创建了一个简单的Java项目,下面就以里面的配置文件为例:

    
    // Apply the java plugin to add support for Java
    apply plugin: 'java'
    apply plugin: 'idea'
    
    // In this section you declare where to find the dependencies of your project
    repositories {
        // Use 'jcenter' for resolving your dependencies.
        // You can declare any Maven/Ivy/file repository here.
        jcenter()
        //mavenCentral()  //使用maven仓库
    }
    
    // In this section you declare the dependencies for your production and test code
    dependencies {
        // The production code uses the SLF4J logging API at compile time
        compile 'org.slf4j:slf4j-api:1.7.21'
    
        // Declare the dependency for your favourite test framework you want to use in your tests.
        // TestNG is also supported by the Gradle Test task. Just change the
        // testCompile dependency to testCompile 'org.testng:testng:6.8.1' and add
        // 'test.useTestNG()' to your build script.
        testCompile 'junit:junit:4.12'
    }
    
    

    这个配置文件很简单,基本上都能看懂。这里只说一下依赖项的加入。

    仓库的坐标
      仓库中构件(jar包)的坐标是由groupId、artifactId、version组成的字符串构成的,在仓库中通过以GAV组成的坐标来定位所需的jar包.在gradle中可以通过以下方式来声明依赖:
      testCompile group: 'junit', name: 'junit', version: '4.12'
      这里的testCompile 表示一个任务。更多关于任务的请看: 任务
      当然如果你觉得这种方式太过繁琐,可以省略group、name、version三个单词,把构件的坐标采用以:分割的方式简写为如下方式:
      testCompile 'junit:junit:4.12'
      也可以这样写:
      testCompile group: 'junit', name: 'junit', version: '4.+',表示使用4.X的最新版本
      当然更细粒度的classifier这里也是支持的,需要你需要可以按如下方式书写:
      compile group: 'org.gradle.test.classifiers', name: 'service', version: '1.0', classifier: 'jdk14'
      或者简写为
      compile "org.gradle.test.classifiers:service:1.0:jdk14@jar"

    另外,Gradle如何始终使用最新版本的依赖

    参考文章

    1. Gradle User Guide 中文版
    2. 跟我学Gradle-4:Gradle仓库详解
    3. Gradle如何始终使用最新版本的依赖

    相关文章

      网友评论

          本文标题:Gradle---初体验

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