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

来源:http://www.cnblogs.com/chenpi/archive/2016/09/14/5872313.html
-Advertisement-
Play Games

安裝Eclipse插件——Buildship 什麼是Buildship? Buildship能方便我們通過Eclipse IDE創建和導入Gradle工程,同時還能執行Gradle任務。 Eclipse上安裝Buildship 建議直接去Eclipse market處下載,簡單方便,如下圖: Bui ...


安裝Eclipse插件——Buildship

什麼是Buildship?

Buildship能方便我們通過Eclipse IDE創建和導入Gradle工程,同時還能執行Gradle任務。

Eclipse上安裝Buildship

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

Buildship的更多信息

請參考以下鏈接,有教程,比較簡單,

主要內容:

如何導入Gradle工程,

如何創建Gradle工程,

如何執行Gradle任務,

等。。。

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工程

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

1、通過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插件,我這裡假設已經安裝好了,不知道怎麼安裝的參考網路,

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

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

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 文章版權由作者李曉暉和博客園共有,若轉載請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/ 1.背景 在某個項目中,發現當tree上加上checkbox後,初始化該樹時會特別慢。現場樹上的節點最深有三層,節點個數總和有200多個。經排查,為該tree的參數中開啟了 ...
  • 一、java反射的含義: JAVA反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態獲取的信息以及動態調用對象的方法的功能稱為java語言的反射機制。 二、反射機制的作用: 1,反編譯:.class-->.java; ...
  • 我們知道: int i = 5; long j = 7; i = i + j不能編譯,但i += j卻能編譯運行,結果i = 12。 這是因為: i += j 等同於 i = (int)(i+j); 總結就是:對複合賦值表達式來說,E1 op= E2 (諸如 i += j; i -= j 等等),其 ...
  • 一、多線程基礎 編寫線程程式主要是構造線程類。構造線程類的方式主要有兩種,一種是通過構造類java.lang.Thread的子類,另一種是通過構造方法實現介面java.lang.Runnable的類。因為類java.lang.Thread實際上也是實現了介面java.lang.Runnable的類, ...
  • 一般面試中java Exception(runtimeException )是必會被問到的問題 常見的異常列出四五種,是基本要求。更多的。。。。需要註意積累了 常見的幾種如下: NullPointerException - 空指針引用異常ClassCastException - 類型強制轉換異常。I ...
  • Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in or ...
  • 此類中實現了從crx文件獲取擴展的Appid、獲取manifest.json文件內容、將crx文件轉換為一般zip文件 ...
  • session跨頁面後session消失? session的存儲要註意的點: session文件存儲的內容格式如下: 從圖片中我們可以讀出一些session信息:例如 存在一個session為error,其值為空;還存在一個session為:step,其值為0,等等信息。 現在我們已經知道sessi ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...