使用Gradle構建構建一個Java Web工程及持續集成環境Jenkins配置

安裝Eclipse插件——Buildship

什麼是Buildship?html

Buildship能方便咱們經過Eclipse IDE建立和導入Gradle工程,同時還能執行Gradle任務。java

Eclipse上安裝Buildshipweb

建議直接去Eclipse market處下載,簡單方便,以下圖:spring

Buildship的更多信息apache

請參考如下連接,有教程,比較簡單,api

主要內容:tomcat

如何導入Gradle工程,服務器

如何建立Gradle工程,網絡

如何執行Gradle任務,session

等。。。

http://projects.eclipse.org/projects/tools.buildship

http://www.vogella.com/tutorials/EclipseGradle/article.html

安裝Eclipse插件——Minimalist Gradle Editor【可選】

主要做用是方便編輯gradle文件,提供語法高亮功能,另外該插件也很是精簡,大小小於50k。

高亮效果及安裝方式以下圖:

Gradle安裝

官網下載Gradle安裝包,以下連接

http://services.gradle.org/distributions

我下載的是gradle-2.14.1-bin.zip包,下載後解壓到硬盤路徑便可,想配環境變量的能夠配置下,既然打算用Eclipse集成Buildship了,我也就懶得配置了。

Eclipse上建立Gradle工程

這個我稍微翻譯一下,最好直接參考官方文檔:

一、經過File ▸ New ▸ Other…​ 菜單入口找到建立Gradle Project選項,以下圖:

 

點擊下一步,輸入工程名字,工程位置,以及所屬的工做集(可選,用於工程分組),

點擊下一步,以下圖所示,這裏咱們選擇本身的Gradle本地安裝路徑,以下圖:

在以上步驟中,點擊完成按鈕,會觸發gradle init --type java-library命令的執行,並導入該工程到Eclipse IDE中;

點擊下一步可預覽即將建立的Gradle工程,以下圖,

建立好的工程

Eclipse上導入Gradle工程

很簡單,跟日常工程的導入相似,只不過工程類型選擇導入Gradle Project而已,可參考如下連接:

http://www.vogella.com/tutorials/EclipseGradle/article.html#import-an-existing-gradle-project

已有工程轉爲Gradle工程

工程右鍵,配置->Add Gradle Nature便可,若是沒有Gradle相關的文件,能夠執行gradle init命令生成:

建立一個Gradle Web工程及相關配置

首先,Eclipse上建立一個Dynamic Web project,而後將其轉成Gradle工程,可參考前面的步驟;

而後,改造下工程目錄,以下圖,跟maven的目錄同樣,另外把resources目錄添加到構建路徑下,

最後主要就是build.gradle文件的配置了

我這邊主要用了三個插件,配置以下,

  1. war用於打包,
  2. org.akhikhl.gretty提供jetty、tomcat等容器的支持,
  3. org.hidetake.ssh提供遠程服務器登錄,文件傳輸,命令執行等支持,

相關插件官方文檔都比較完善。

buildscript{
    repositories {
        mavenLocal()
        jcenter()
        maven{ url 'http://maven.d.com/content/groups/public/'}
        mavenCentral()
        
    }
      dependencies {
        classpath 'org.hidetake:gradle-ssh-plugin:2.6.0'
        classpath 'org.akhikhl.gretty:gretty:+'
      }
}

apply plugin: 'war'
apply plugin: 'org.akhikhl.gretty'
apply plugin: 'org.hidetake.ssh'

gretty { 
    servletContainer = 'tomcat7'
    contextPath = '/dss'
    //httpPort = 8080
    fastReload = false
    recompileOnSourceChange = false
    reloadOnClassChange = false
    reloadOnConfigChange = false
    reloadOnLibChange = false
    enableNaming = true
}

ssh.settings {
  knownHosts = allowAnyHosts
}

remotes {
  deployServer {
    host = 'XX.XX.XX.XX'
    user = 'XXXX'
    password = 'XXXXXX'
  }
}

另外能夠配下工程信息:

group 'com.cetiti.epdc'
def artifactid = "dss"
//version '0.1.0-SNAPSHOT'
description = """Gradle WebApp of dss"""
buildDir = 'target

依賴查找倉庫:

repositories {
    // Use 'jcenter' for resolving your dependencies.
    // You can declare any Maven/Ivy/file repository here.
    mavenLocal()
    jcenter()
    maven{ url 'http://maven.d.com/content/groups/public/'}
    mavenCentral()
}

依賴配置:

dependencies {
    // The production code uses the SLF4J logging API at compile time
    compile "org.slf4j:slf4j-api:1.7.21" 
    //compile "org.slf4j:slf4j-log4j12:1.7.21" 
    compile "log4j:log4j:1.2.17" 
    compile "com.google.code.gson:gson:2.6.2" 
    compile "org.apache.commons:commons-lang3:3.4" 
    
    compile "org.springframework:spring-context:3.2.16.RELEASE"
    compile "org.springframework:spring-web:3.2.16.RELEASE"
    compile "org.springframework:spring-webmvc:3.2.16.RELEASE" 
    compile "org.springframework:spring-tx:3.2.16.RELEASE" 
    compile "org.springframework:spring-context-support:3.2.16.RELEASE" 
    compile "org.springframework:spring-jdbc:3.2.16.RELEASE" 

    compile "org.aspectj:aspectjweaver:1.8.7" 
    compile "com.alibaba:druid:1.0.15" 
    compile "ojdbc:ojdbc:6" 
    compile "org.mybatis:mybatis:3.2.8" 
    compile "org.mybatis:mybatis-spring:1.2.5" 
    compile "org.jasig.cas.client:cas-client-core:3.4.1" 
    compile "com.cetiti.common:cetiti-common:0.1.0" 
    compile "org.quartz-scheduler:quartz:1.8.6" 

    compile 'javax.servlet:servlet-api:2.5'  

    // 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'
}

添加自定義任務,我這裏簡單的寫了四個任務,主要作如下幾件事,關閉tomcat、刪除war包及目錄、拷貝文件、啓動tomcat:

task shutdownTomcat() << {
  ssh.run {
    session(remotes.deployServer) {
      println 'shut down tomcat...' 
      executeScript '''#!/bin/sh
                        cd /usr/local/dss-tomcat-7.0.47/bin
                        ./shutdown.sh
                    '''
    }
  }
}

task del(dependsOn:shutdownTomcat) << {
  ssh.run {
    session(remotes.deployServer) {
      println 'start deleting...' 
      executeScript '''#!/bin/sh
                        rm -rf /usr/local/dss-tomcat-7.0.47/webapps/dss
                        rm -f /usr/local/dss-tomcat-7.0.47/webapps/dss.war
                    '''
    }
  }
}

task copy(dependsOn:del) << {
  ssh.run {
    session(remotes.deployServer) {
      println 'start copying war...' 
      put from: buildDir.toString() + '/libs/dss.war', into: '/usr/local/dss-tomcat-7.0.47/webapps'
    }
  }
}

task deploy(dependsOn:copy) << {
  ssh.run {
    session(remotes.deployServer) {
      println 'start tomcat...' 
      execute '/usr/local/dss-tomcat-7.0.47/bin/startup.sh'
    }
  }
}

執行Gradle任務

執行Gradle Task視圖裏的任務:

Eclipse IDE上打開Gradle Task視圖,不知道爲何,我這邊添加了相關插件以後,任務列表不會立刻顯示,須要重啓Eclipse,多是Buildship的Bug。

執行自定義任務:

工程右鍵,run as,打開運行配置,輸入命令便可

持續集成環境Jenkins配置

首先要安裝jenkins的gradle插件,我這裏假設已經安裝好了,不知道怎麼安裝的參考網絡,

一、選擇構建一個自由風格的軟件項目

二、配置,很簡單,見圖:

相關文章
相關標籤/搜索