日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
常用maven插件總結(jié)

maven是目前java項(xiàng)目中比較流行的構(gòu)建工具,特別是它提供的插件,如果使用得當(dāng),整個(gè)項(xiàng)目研發(fā)流程都將會(huì)受益,從而提高研發(fā)、測(cè)試和部署的效率。這里記錄幾個(gè)常用插件的用法,既方便自己日后回顧,也便于有興趣的同仁交流指正。各位實(shí)踐過(guò)程中如果發(fā)現(xiàn)有趣的插件或者更好的用法,也歡迎留言分享。

靖安網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),靖安網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為靖安上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的靖安做網(wǎng)站的公司定做!

Maven工程標(biāo)準(zhǔn)架構(gòu)

插件一 maven-resources-plugin

Maven可以區(qū)別對(duì)待Java代碼文件和資源文件,默認(rèn)的主資源文件目錄是src/main/resources,我們可以通過(guò)這個(gè)插件實(shí)現(xiàn)資源文件過(guò)濾。資源文件過(guò)濾的意思是指我們可以在資源文件里用使用占位符${propertyName},然后開啟對(duì)資源文件的過(guò)濾,pom.xml里再統(tǒng)一設(shè)置所有{propertyName}對(duì)應(yīng)的值,就可以在構(gòu)建過(guò)程中將值替換掉資源文件中對(duì)應(yīng)的${propertyName},實(shí)現(xiàn)了代碼配置分離、做到了參數(shù)的統(tǒng)一維護(hù)。

示例用法

 
 
 
 
  1.  
  2.      
  3.         src/main/resources 
  4.          
  5.             properties/*.properties 
  6.          
  7.         true 
  8.      
  9.      
  10.         src/main/resources 
  11.          
  12.             *.xml 
  13.             mapper/**/*.xml 
  14.             mysqlMapper/**/*.xml 
  15.             *.properties 
  16.          
  17.      
  18.  
  19. …… 
  20.  
  21.     local 
  22.  

我們的主應(yīng)用集成后,會(huì)根據(jù)實(shí)際要求部署到不同的環(huán)境中,比如聯(lián)調(diào)環(huán)境、測(cè)試環(huán)境、壓力環(huán)境、預(yù)發(fā)布環(huán)境、生產(chǎn)環(huán)境等,而這些環(huán)境上的資源配置信息顯然是不一樣的,針對(duì)每套環(huán)境,每個(gè)具體占位符${propertyName}都會(huì)有不同的值,而這種場(chǎng)景可以使用Maven的profile來(lái)支持,每個(gè)profile都可以獨(dú)立維護(hù)一套參數(shù)值,在mvn package的時(shí)候靈活指定;此外,maven也支持在package的時(shí)候指定多個(gè)profile,這個(gè)特性在執(zhí)行自動(dòng)部署的時(shí)候特別有用。使用這個(gè)插件,我們的項(xiàng)目可以做到多環(huán)境支持,參考命令

 
 
 
 
  1. mvn package -Pnocheck,env-test 

示例用法

 
 
 
 
  1.  
  2.      
  3.         nocheck 
  4.          
  5.             true 
  6.             true 
  7.             true 
  8.             true 
  9.             true 
  10.          
  11.      
  12.      
  13.          
  14.         local 
  15.          
  16.             true 
  17.          
  18.          
  19.             local 
  20.          
  21.      
  22.      
  23.         env-test 
  24.          
  25.             env-test 
  26.          
  27.      
  28.  

插件二 maven-jar-plugin

當(dāng)我們將項(xiàng)目模塊化后,有一些通用的資源文件基本上大多數(shù)模塊都會(huì)用到,比如log4j.properties,jdbc.properties等,模塊中有了這些資源文件,我們才能單獨(dú)對(duì)該模塊進(jìn)行開發(fā)、調(diào)試。默認(rèn)情況下maven-jar-plugin會(huì)將這些資源文件全部package成一個(gè)jar包進(jìn)行發(fā)布,如果這樣的jar包集成到一個(gè)主應(yīng)用中部署,運(yùn)行,很可能導(dǎo)致主應(yīng)用的配置不生效,我稱之為配置混亂,為了解決這個(gè)問(wèn)題,可以開啟maven-jar-plugin的排除功能,在執(zhí)行mvn package之前排除指定的資源文件。

示例用法

 
 
 
 
  1.  
  2.     org.apache.maven.plugins 
  3.     maven-jar-plugin 
  4.      
  5.          
  6.             applicationContext.xml 
  7.             properties/** 
  8.             log4j.properties 
  9.          
  10.      
  11.  

插件三 maven-war-plugin

項(xiàng)目如果是web主應(yīng)用,我們可以使用maven-war-plugin來(lái)對(duì)webapps下各類文件進(jìn)行過(guò)濾。用法參考maven-resources-plugin

示例用法

 
 
 
 
  1.  
  2.     org.apache.maven.plugins 
  3.     maven-war-plugin 
  4.      
  5.         demo-Rest 
  6.          
  7.              
  8.                 src/main/webapp/WEB-INF 
  9.                 true 
  10.                 WEB-INF 
  11.                  
  12.                     web.xml 
  13.                  
  14.              
  15.          
  16.      
  17.  

插件四 properties-maven-plugin

隨著項(xiàng)目的不斷迭代,我們的資源配置項(xiàng)將會(huì)變得更多,這個(gè)會(huì)直接影響到pom.xml的體積膨脹;此外,如果項(xiàng)目目標(biāo)部署環(huán)境比較多,pom.xml將會(huì)膨脹得更快,更加難以維護(hù)。為了解決這個(gè)問(wèn)題,我們需要將這些配置信息獨(dú)立出來(lái),并按照不同環(huán)境進(jìn)行歸類,使用properties-maven-plugin就會(huì)達(dá)到這個(gè)效果。

示例用法(將每個(gè)環(huán)境的信息放在不同的目錄下,然后在mvn package切換不同的profile實(shí)現(xiàn)去指定目錄讀取配置信息,用讀取到的value去替換資源配置文件的占位符)

 
 
 
 
  1.  
  2.     org.codehaus.mojo 
  3.     properties-maven-plugin 
  4.     1.0.0 
  5.      
  6.          
  7.             profiles/${runtime.env}/jdbc.properties 
  8.             profiles/${runtime.env}/redis.properties 
  9.             profiles/${runtime.env}/batch.properties 
  10.             profiles/${runtime.env}/config.properties 
  11.          
  12.      
  13.      
  14.          
  15.             initialize 
  16.              
  17.                 read-project-properties 
  18.              
  19.          
  20.      
  21.  

插件五 maven-assembly-plugin

Java項(xiàng)目中有一種類型的主應(yīng)用,是需要獨(dú)立部署在后臺(tái)啟動(dòng)的,比如socket服務(wù)程序,比如定時(shí)調(diào)度程序,比如dubbo服務(wù)程序,這些程序理論上只需要執(zhí)行一個(gè)簡(jiǎn)單的java命令即可;稍微復(fù)雜一些的,我們可以規(guī)范一下自己的主應(yīng)用結(jié)構(gòu),定義配置文件夾和依賴庫(kù)文件夾,再準(zhǔn)備啟動(dòng)的批處理腳本sh或bat文件即可。使用maven-assembly-plugin就可以達(dá)到這種效果。

示例用法

 
 
 
 
  1.  
  2.     org.apache.maven.plugins 
  3.     maven-assembly-plugin 
  4.      
  5.         false 
  6.          
  7.             target/classes/package.xml 
  8.          
  9.      
  10.      
  11.          
  12.             make-assembly 
  13.             package 
  14.              
  15.                 single 
  16.              
  17.          
  18.      
  19.  

附package.xml

 
 
 
 
  1. xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" 
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  3. xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd"> 
  4.     package 
  5.      
  6.         tar.gz 
  7.      
  8.     true 
  9.      
  10.          
  11.             src/main/bin 
  12.              
  13.                 *.sh 
  14.                 *.bat 
  15.              
  16.             true 
  17.              
  18.             0755 
  19.          
  20.          
  21.             ${basedir}/src/main/config 
  22.              
  23.                 *.properties 
  24.                 log4j.xml 
  25.              
  26.             config 
  27.             true 
  28.             0644 
  29.          
  30.          
  31.             ${basedir}/src/main/config 
  32.              
  33.                 log4j.dtd 
  34.              
  35.             config 
  36.             0644 
  37.          
  38.      
  39.      
  40.          
  41.             lib 
  42.             runtime 
  43.             0644 
  44.          
  45.      
  46.  

附示例生成的Java應(yīng)用結(jié)構(gòu)圖

插件六 maven-shade-plugin

有時(shí)候,我們需要將所有配置文件和依賴庫(kù)文件全部放在一個(gè)jar包中,運(yùn)維的同事只需要執(zhí)行java -jar batch.jar即可完成啟動(dòng)。雖然使用maven-assembly-plugin也可以做到這一點(diǎn),但是在讀取配置文件的時(shí)候有可能會(huì)遇到一些問(wèn)題,這個(gè)時(shí)候,我們可能需要使用到maven-shade-plugin這個(gè)插件,經(jīng)筆者實(shí)踐按照如下示例用法配置確實(shí)可用;當(dāng)然本示例配置了mainClass,直接執(zhí)行java -jar batch.jar確實(shí)沒(méi)問(wèn)題,但如果執(zhí)行java com.fastjrun.demospring4.BatchInit -classpath batch.jar也是可以的。

示例用法

 
 
 
 
  1.  
  2.     org.apache.maven.plugins 
  3.     maven-shade-plugin 
  4.     3.0.0 
  5.      
  6.          
  7.             package 
  8.              
  9.                 shade 
  10.              
  11.              
  12.                 batch 
  13.                 true 
  14.                 jar-with-dependencies 
  15.                  
  16.                     
  17.                         implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
  18.                         com.fastjrun.demospring4.BatchInit 
  19.                      
  20.                     
  21.                         implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> 
  22.                         META-INF/spring.handlers 
  23.                      
  24.                     
  25.                         implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> 
  26.                         META-INF/spring.schemas 
  27.                      
  28.                     
  29.                         implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> 
  30.                         META-INF/spring.tooling 
  31.                      
  32.                  
  33.                  
  34.                      
  35.                         *:* 
  36.                          
  37.                             META-INF/*.SF 
  38.                             META-INF/*.DSA 
  39.                             META-INF/*.RSA 
  40.                          
  41.                      
  42.                  
  43.              
  44.          
  45.      
  46.  

插件七 versions-maven-plugin

當(dāng)項(xiàng)目模塊化后,我們會(huì)遇到一個(gè)問(wèn)題,就是項(xiàng)目版本升級(jí)的時(shí)候,需要同時(shí)變更父模塊和所有子模塊中的版本號(hào) ,而這是一個(gè)比較瑣碎且容易出錯(cuò)的事情,還好maven考慮得很周到,提供了這樣一個(gè)插件,我們使用命令行就可以達(dá)到效果了。我們的項(xiàng)目視圖如下

參考命令如下

 
 
 
 
  1. mvn versions:set -DnewVersion=1.2-SNAPSHOT 

總結(jié)

本文匯總了筆者常用的幾個(gè)插件及其用法,經(jīng)實(shí)踐,基于eclipse的kepler、luna版本都能很好支持maven-resources-plugin、maven-jar-plugin、maven-war-plugin和properties-maven-plugin使用,同時(shí)也支持profile的activeByDefault設(shè)置,研發(fā)同事在不需要任何調(diào)整的情況下就能直接開發(fā)、調(diào)試代碼,且在開發(fā)結(jié)束后,可以直接使用mvn命令打包,打出各個(gè)環(huán)境的部署程序。從開發(fā)、調(diào)試、測(cè)試、驗(yàn)證到上線的整個(gè)過(guò)程,所有模塊的pom.xml直到下一個(gè)迭代變更版本前都不用修改,直接使用。

【本文為專欄作者“崔瑩峰”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】

戳這里,看該作者更多好文


網(wǎng)頁(yè)題目:常用maven插件總結(jié)
轉(zhuǎn)載來(lái)于:http://m.5511xx.com/article/dpgocec.html