zoukankan      html  css  js  c++  java
  • 从零开始,跟我一起做jblog项目(三)从Maven到Gradle

    http://www.cnblogs.com/newflydd/p/4972922.html?utm_source=tuicool&utm_medium=referral
    ********************************************************************************

    从零开始,跟我一起做jblog项目(一)引言

    从零开始,跟我一起做jblog项目(二)Maven

    从零开始,跟我一起做jblog项目(三)从Maven到Gradle

    上一节讲到项目构建工具Maven,对JAR包的管理不可谓不强大

    博主在使用maven引入Spring框架时,了解到Spring推荐使用gradle工具来构建项目

    百度了一下,发现Gradle也是一套很优秀的项目构建工具

    Gradle使用Groovy语言配置项目和依赖,在极大地提升灵活性和配置性之外,甚至配置代码要比XML结构的POM文件少很多

    鉴于我希望将jblog打造成一款modern的小型个人博客系统

    而gradle的首页上介绍自己为Modern Open-Source Enterprise Build Automation

    所以我决定将项目原型从maven构建转移为gradle构建

    目前关于Gradle的教程还比较零散,下面我会一步一步演示如何将Gradle集成到myeclipse中去

    首先,到Gradle官网下载最新版的gradle

    下载地址是http://gradle.org/gradle-download/

    博主下载的是2.8版本,写这篇文章的时候已经更新到2.9了

    下载下来解压到任意目录

    然后配置Windows环境变量,一共要配置三个,分别如下:

    GRADLE_HOME:你的gradle解压路径,例如:D:Workspacesgradle-2.8

    GRADLE_USER_HOME:你希望作为本地仓库的路径,自己建一个名为.gradle的路径,例如:D:Workspaces.gradle

    path:这个不用说,系统路径,可以在cmd中直接敲gradle命令的,在path最后添加:%GRADLE_HOME%in;

    这三个配置好了,我们初步验证一下,打开cmd,任意路径下敲入gradle -v命令,出现下面的响应就算安装成功了

    关于gradle的详细命令和用法,大家可以参考下面的教程

    http://wiki.jikexueyuan.com/project/gradle/

    建议快速阅读上面的教程后,我们来将gradle植入eclipse/myeclipse中

    打开eclipse,进入marketplaces,搜索gradle,找到Gradle IDE Pack,经过博主测试这个插件是最好用的

    安装好Gradle IDE Pack插件后,重启eclipse,新建一个最简单的JAVA Project,或者试试Web Projec也可以

    在项目根目录下新建一个build.gradle文件,如图所示

    编辑build.gradle配置文件,示例如下:

    复制代码
    apply plugin: "java"
    apply plugin: "eclipse"
    
    sourceCompatibility = 1.8
    version = '1.0'
    
    configurations {
        provided
    }
    
    sourceSets {
        main.compileClasspath += configurations.provided
        test.compileClasspath += configurations.provided
        test.runtimeClasspath += configurations.provided
    }
    
    repositories {
        mavenLocal()
        maven {url "http://maven.oschina.net/content/groups/public/"}    
        mavenCentral()
    }
    
    dependencies {
        compile "org.hibernate:hibernate-core:5.+"
        testCompile "junit:junit:4.7"
        provided "javax.servlet:javax.servlet-api:4.+"
    }
    
    //注意下面这个配置,新版本gradle如果不使用数组添加的话会导致eclipse频繁报错
    eclipse.classpath.plusConfigurations += [configurations.provided]
    复制代码

    保存build.gradle文件后,右键project,选择configure,选择convert to gradle project,为项目添加gradle特性

    添加完gradle特性后,我们来让eclipse将build.gradle中定义的几个依赖包加入到项目中来

    在这之前还需要配置一下Gradle IDE Pack插件,eclipse的window->preferencecs->Gradle,配置我们本地的gradle路径

    配置好了以后就万事具备了,我们来试验一下,如何将build.gradle文件中定义的依赖引入eclipse环境中

    右击project项目,选择gradle,选择Enable Dependency Management,让插件来打开依赖管理

    打开之后,仍然右键项目,gradle->Refresh Dependencies,刷新一下依赖列表

    在后台,gradle将按照上述文件的定义,依次检索我们系统中的maven本地仓库,chinaos提供的中国镜像仓库,以及maven中央仓库

    将所需要的包下载到配置的gradle本地仓库中,再引入到eclipse的classpath中,效果如下图所示:

    至此,关于gradle集成到eclipse的所有工作就结束了,项目编写过程中,如果要继续引入JAR包,就在build.gradle文件中添加

    然后刷新一下gradle的依赖,就能实时添加到eclipse的环境中去了

    最后着重讲解一下provided的scope(有效依赖范围),上一篇讲到maven,其中配置依赖的scope常用的有下面几种

    compile:编译,测试,打包时都需要依赖,比如spring、hibernate、struts等

    test:测试时需要依赖,常见的有junit

    provided:一般由容器提供,只有写代码时需要依赖,比如servlet

    runtime:打包运行时需要依赖

    转移到gradle以后,gradle默认只为我们提供了四种scope,如下:

    compile:编译范围依赖在所有的 classpath 中可用,同时它们也会被打包

    runtime:依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如,你可能在编译的时候只需要 JDBC API JAR,而只有在运行的时候才需要 JDBC 驱动实现

    testCompile:测试期编译需要的附加依赖

    testRuntime:测试运行期需要

    可以看到gradle默认并未提供类似provided的scope,那比如我们需要写web project,则需要引入servlet包,而这时就比较麻烦

    我们可以向eclipse的build path手工添加tomcat下的servlet包,但那样未免显得太low了,毕竟我们已经选择使用项目构建工具来管理我们的JAR包了

    别着急,gradle毕竟是使用一种编程语言来配置项目构建的,所以它的灵活性相当高,在上述的配置文件中,我们人为定义了一个provided的scope

    并且将这个provided使用sourceSet集合定义了范围,明确了在main目录的compile期间需要依赖,在test目录的编译期间和运行期间需要依赖

    言下之意就是在main目录的运行期间不需要依赖喽,也就是运行时不需要将此provided范围的依赖打包

    最后配合eclipse插件,向eclipse的classpath中添加了这一provided范围,结果eclipse会将servlet引入到项目依赖中。

  • 相关阅读:
    mojo 接口示例
    MojoliciousLite: 实时的web框架 概述
    接口返回json
    centos 6.7 perl 版本 This is perl 5, version 22 安装DBI DBD
    centos 6.7 perl 5.22 安装DBD 需要使用老的perl版本
    商业智能改变汽车行业
    商业智能改变汽车行业
    读MBA经历回顾(上)目的决定手段——北漂18年(48)
    perl 升级到5.20版本
    Group Commit of Binary Log
  • 原文地址:https://www.cnblogs.com/zhao1949/p/5663172.html
Copyright © 2011-2022 走看看