版權聲明:本文為部落客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就繼續吧!