天天看點

把項目從Maven遷移到Gradle把項目從Maven遷移到Gradle

版權聲明:本文為部落客chszs的原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/chszs/article/details/49098757

把項目從Maven遷移到Gradle

作者:chszs,版權所有,未經同意,不得轉載。部落客首頁: http://blog.csdn.net/chszs

在過去幾年中,Maven已成為Java及Java EE項目事實上的建構工具,沒有之一。而最近兩年,Gradle獲得越來越多的人使用,分走了不少Maven的使用者。本文就是講述怎樣把Java EE項目從Maven遷移到Grale。

Grale是一個自動化的建構工具,類似于Ant或Maven,與這兩個建構工具不同的是,Gradle引入了基于Groovy語言的DSL文法來代替XML配置,是以它的配置檔案是一個Groovy檔案。

安裝Gradle有幾種方法,最佳的方法是使用sdkman工具來安裝。而要安裝sdkman工具,隻需簡單的運作:

# curl -s get.sdkman.io | bash
Thanks for using...                                                          


     SSSSSSSSSSSSSSS DDDDDDDDDDDDD       KKKKKKKKK    KKKKKKK                  
   SS:::::::::::::::SD::::::::::::DDD    K:::::::K    K:::::K                  
  S:::::SSSSSS::::::SD:::::::::::::::DD  K:::::::K    K:::::K                  
  S:::::S     SSSSSSSDDD:::::DDDDD:::::D K:::::::K   K::::::K                  
  S:::::S              D:::::D    D:::::DKK::::::K  K:::::KKK                  
  S:::::S              D:::::D     D:::::D K:::::K K:::::K                     
   S::::SSSS           D:::::D     D:::::D K::::::K:::::K                      
    SS::::::SSSSS      D:::::D     D:::::D K:::::::::::K                       
      SSS::::::::SS    D:::::D     D:::::D K:::::::::::K                       
         SSSSSS::::S   D:::::D     D:::::D K::::::K:::::K                      
              S:::::S  D:::::D     D:::::D K:::::K K:::::K                     
              S:::::S  D:::::D    D:::::DKK::::::K  K:::::KKK                  
  SSSSSSS     S:::::SDDD:::::DDDDD:::::D K:::::::K   K::::::K                  
  S::::::SSSSSS:::::SD:::::::::::::::DD  K:::::::K    K:::::K                  
  S:::::::::::::::SS D::::::::::::DDD    K:::::::K    K:::::K                  
   SSSSSSSSSSSSSSS   DDDDDDDDDDDDD       KKKKKKKKK    KKKKKKK                  


                      mmmmmmm    mmmmmmm     aaaaaaaaaaaaa  nnnn  nnnnnnnn     
                    mm:::::::m  m:::::::mm   a::::::::::::a n:::nn::::::::nn   
                   m::::::::::mm::::::::::m  aaaaaaaaa:::::an::::::::::::::nn  
                   m::::::::::::::::::::::m           a::::ann:::::::::::::::n 
                   m:::::mmm::::::mmm:::::m    aaaaaaa:::::a  n:::::nnnn:::::n 
                   m::::m   m::::m   m::::m  aa::::::::::::a  n::::n    n::::n 
                   m::::m   m::::m   m::::m a::::aaaa::::::a  n::::n    n::::n 
                   m::::m   m::::m   m::::ma::::a    a:::::a  n::::n    n::::n 
                   m::::m   m::::m   m::::ma::::a    a:::::a  n::::n    n::::n 
                   m::::m   m::::m   m::::ma:::::aaaa::::::a  n::::n    n::::n 
                   m::::m   m::::m   m::::m a::::::::::aa:::a n::::n    n::::n 
                   mmmmmm   mmmmmm   mmmmmm  aaaaaaaaaa  aaaa nnnnnn    nnnnnn 


                                                 Now attempting installation...

Looking for a previous installation of SDKMAN...
Looking for unzip...
Not found.
================================================================================================
 Please install unzip on your system using your favourite package manager.

 Restart after installing unzip.
================================================================================================
           

說明需要unzip工具,執行指令安裝它:

# apt-get install unzip
           

再次安裝sdkman

# curl -s get.sdkman.io | bash

Thanks for using...                                                          


     SSSSSSSSSSSSSSS DDDDDDDDDDDDD       KKKKKKKKK    KKKKKKK                  
   SS:::::::::::::::SD::::::::::::DDD    K:::::::K    K:::::K                  
  S:::::SSSSSS::::::SD:::::::::::::::DD  K:::::::K    K:::::K                  
  S:::::S     SSSSSSSDDD:::::DDDDD:::::D K:::::::K   K::::::K                  
  S:::::S              D:::::D    D:::::DKK::::::K  K:::::KKK                  
  S:::::S              D:::::D     D:::::D K:::::K K:::::K                     
   S::::SSSS           D:::::D     D:::::D K::::::K:::::K                      
    SS::::::SSSSS      D:::::D     D:::::D K:::::::::::K                       
      SSS::::::::SS    D:::::D     D:::::D K:::::::::::K                       
         SSSSSS::::S   D:::::D     D:::::D K::::::K:::::K                      
              S:::::S  D:::::D     D:::::D K:::::K K:::::K                     
              S:::::S  D:::::D    D:::::DKK::::::K  K:::::KKK                  
  SSSSSSS     S:::::SDDD:::::DDDDD:::::D K:::::::K   K::::::K                  
  S::::::SSSSSS:::::SD:::::::::::::::DD  K:::::::K    K:::::K                  
  S:::::::::::::::SS D::::::::::::DDD    K:::::::K    K:::::K                  
   SSSSSSSSSSSSSSS   DDDDDDDDDDDDD       KKKKKKKKK    KKKKKKK                  


                      mmmmmmm    mmmmmmm     aaaaaaaaaaaaa  nnnn  nnnnnnnn     
                    mm:::::::m  m:::::::mm   a::::::::::::a n:::nn::::::::nn   
                   m::::::::::mm::::::::::m  aaaaaaaaa:::::an::::::::::::::nn  
                   m::::::::::::::::::::::m           a::::ann:::::::::::::::n 
                   m:::::mmm::::::mmm:::::m    aaaaaaa:::::a  n:::::nnnn:::::n 
                   m::::m   m::::m   m::::m  aa::::::::::::a  n::::n    n::::n 
                   m::::m   m::::m   m::::m a::::aaaa::::::a  n::::n    n::::n 
                   m::::m   m::::m   m::::ma::::a    a:::::a  n::::n    n::::n 
                   m::::m   m::::m   m::::ma::::a    a:::::a  n::::n    n::::n 
                   m::::m   m::::m   m::::ma:::::aaaa::::::a  n::::n    n::::n 
                   m::::m   m::::m   m::::m a::::::::::aa:::a n::::n    n::::n 
                   mmmmmm   mmmmmm   mmmmmm  aaaaaaaaaa  aaaa nnnnnn    nnnnnn 


                                                 Now attempting installation...

Looking for a previous installation of SDKMAN...
Looking for unzip...
Looking for curl...
Looking for sed...
Installing SDKMAN scripts...
Create distribution directories...
Create candidate directories...
Created for asciidoctorj: /root/.sdkman/asciidoctorj
Created for crash: /root/.sdkman/crash
Created for gaiden: /root/.sdkman/gaiden
Created for glide: /root/.sdkman/glide
Created for gradle: /root/.sdkman/gradle
Created for grails: /root/.sdkman/grails
Created for griffon: /root/.sdkman/griffon
Created for groovy: /root/.sdkman/groovy
Created for groovyserv: /root/.sdkman/groovyserv
Created for jbake: /root/.sdkman/jbake
Created for jbossforge: /root/.sdkman/jbossforge
Created for lazybones: /root/.sdkman/lazybones
Created for springboot: /root/.sdkman/springboot
Prime the config file...
Download script archive...
Extract script archive...
Install scripts...
Attempt update of bash profiles...
Updated existing /root/.profile
Updated existing /root/.bashrc
Attempt update of zsh profiles...
Created and initialised /root/.zshrc



All done!


Please open a new terminal, or run the following in the existing one:

    source "/root/.sdkman/bin/sdkman-init.sh"

Then issue the following command:

    sdk help

Enjoy!!!
           

安裝完成後需要初始化sdkman:

# source "$HOME/.sdkman/bin/sdkman-init.sh"
           

一旦sdkman可用,那麼安裝Gradle就極其簡單了:

# sdk install gradle
==== BROADCAST =================================================================
* 30/09/15: Gradle 2.8-rc-1 released on SDKMAN! #gradle
* 30/09/15: SDKMAN! 3.0.5 released. Fixes issue #363. http://bit.ly/1KRSKey
* 25/09/15: Grails 3.0.8 released on SDKMAN! #grailsfw
================================================================================

Downloading: gradle 2.7

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  0     0    0   354    0     0     28      0 --:--:--  0:00:12 --:--:--    83
100 42.7M  100 42.7M    0     0  87103      0  0:08:34  0:08:34 --:--:--  113k

Installing: gradle 2.7
Done installing!

Do you want gradle 2.7 to be set as default? (Y/n): y

Setting gradle 2.7 as default.
           

下面可以開始建立建構腳本。首先要做的是建立一個名為settings.gradle的檔案,設定項目名。

rootProject.name = 'my-javaee'
           

此檔案适用于多子產品的項目。

下面需要建立一個名為build.gradle的配置檔案,它負責管理所有的建構過程。

apply plugin: 'war'
group = 'org.superbiz'
version = '1.0-SNAPSHOT'
description = "My JavaEE project"
sourceCompatibility = 1.8
targetCompatibility = 1.8
repositories {
    mavenCentral()        
}
dependencies {
    providedCompile group: 'javax', name: 'javaee-api', version:'7.0'
}
           

注意,第一行訓示建構的是一個Web項目(WAR包)。接着是項目的屬性,如項目組group、版本version、描述description、Java編譯器的版本、軟體倉庫。隻有最後一行的依賴關系是必須的,它提供了建構的處理範圍。

要注意,如果使用的是war插件,那麼providedCompile僅有一個是有效的。如果使用的是像java這樣的插件,那麼需要自己實作這個函數。

可以看出,Gradle的配置檔案更加精煉,沒有備援的資訊。想深入Gradle就繼續吧!