成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Maven詳細(xì)教程

Keagan / 1494人閱讀

摘要:清理上一次執(zhí)行創(chuàng)建的文件處理資源文件編譯代碼執(zhí)行單元測(cè)試文件創(chuàng)建拷貝到本地的倉(cāng)庫(kù)下面發(fā)布生成文檔將工程所有文檔生成網(wǎng)站,生成的網(wǎng)站界面默認(rèn)和的項(xiàng)目站點(diǎn)類似,但是其文檔用格式寫(xiě)的,目前不支持,需要用其他插件配合才能支持。

前言

本文可以幫助你加深對(duì)Maven的整體認(rèn)識(shí),不是一篇基礎(chǔ)文章。如果你現(xiàn)在還沒(méi)有用 Maven 跑過(guò) HelloWorld,那么本文可能不適合你。

一、Maven簡(jiǎn)介
Maven 官網(wǎng):https://maven.apache.org  
Maven 3.3.9版本文檔:http://maven.apache.org/ref/3...

Maven是一個(gè)項(xiàng)目管理工具,它包含了一個(gè)項(xiàng)目對(duì)象模型 (Project Object Model),一組標(biāo)準(zhǔn)集合,一個(gè)項(xiàng)目生命周期(Project Lifecycle),一個(gè)依賴管理系統(tǒng)(Dependency Management System),和用來(lái)運(yùn)行定義在生命周期階段(phase)中插件(plugin)目標(biāo)(goal)的邏輯。

版本:maven有自己的版本定義和規(guī)則

構(gòu)建:可以完成編譯,打包,部署等。

依賴管理:方便引入所需依賴 Jar 包,不需手動(dòng)下載

文檔生成:maven的site命令支持各種文檔信息的發(fā)布,包括構(gòu)建過(guò)程的各種輸出,javadoc,產(chǎn)品文檔等。

項(xiàng)目關(guān)系:一個(gè)大型的項(xiàng)目通常有幾個(gè)小項(xiàng)目或者模塊組成,用maven可以很方便地管理

二、Maven生命周期

maven把項(xiàng)目的構(gòu)建劃分為不同的生命周期(lifecycle)。粗略一點(diǎn)的話,它這個(gè)過(guò)程(phase)包括:

驗(yàn)證(validate):驗(yàn)證項(xiàng)目是否正確

編譯(compile): 編譯項(xiàng)目的源代碼

測(cè)試(test):使用合適的單元測(cè)試框架測(cè)試編譯的源代碼。這些測(cè)試不應(yīng)該要求代碼被打包或部署

打包(package)

驗(yàn)證(verify)

安裝(install)

部署(deploy)

maven中所有的執(zhí)行動(dòng)作(goal)都需要指明自己在這個(gè)過(guò)程中的執(zhí)行位置,然后maven執(zhí)行的時(shí)候,就依照過(guò)程的發(fā)展依次調(diào)用這些goal進(jìn)行各種處理。

這個(gè)也是maven的一個(gè)基本調(diào)度機(jī)制。一般來(lái)說(shuō),位置稍后的過(guò)程都會(huì)依賴于之前的過(guò)程。當(dāng)然,maven同樣提供了配置文件,可以依照用戶要求,跳過(guò)某些階段。

三、Maven 版本規(guī)范

maven使用如下幾個(gè)要素來(lái)唯一定位某一個(gè)輸出物: groupId:artifactId:packaging:version 。比如org.springframework:spring:2.5 。每個(gè)部分的解釋如下:

groupId 公司,團(tuán)體等。如Apache Software的項(xiàng)目有以org.apache開(kāi)頭的groupId。

artifactId 項(xiàng)目的唯一標(biāo)識(shí)符。比如一個(gè)helloworld項(xiàng)目就叫helloworld。

packaging 項(xiàng)目打包輸出的類型,默認(rèn)是jar。類型為war的項(xiàng)目產(chǎn)生一個(gè)web應(yīng)用。

version 一個(gè)項(xiàng)目的特定版本。發(fā)布的項(xiàng)目有一個(gè)固定的版本標(biāo)識(shí)來(lái)指向該項(xiàng)目的某一個(gè)特定的版本。而正在開(kāi)發(fā)中的項(xiàng)目可以用一個(gè)特殊的標(biāo)識(shí),這種標(biāo)識(shí)給版本加上一個(gè)"SNAPSHOT"的標(biāo)記。

maven有自己的版本規(guī)范,一般是如下定義 ..- ,比如1.2.3-beta-01。要說(shuō)明的是,maven自己判斷版本的算法是major,minor,incremental部分用數(shù)字比較,qualifier部分用字符串比較,所以要小心 alpha-2和alpha-15的比較關(guān)系,最好用 alpha-02的格式。

maven在版本管理時(shí)候可以使用幾個(gè)特殊的字符串 SNAPSHOT ,LATEST ,RELEASE 。比如"1.0-SNAPSHOT"。各個(gè)部分的含義和處理邏輯如下說(shuō)明:

SNAPSHOT 如果一個(gè)版本包含字符串"SNAPSHOT",Maven就會(huì)在安裝或發(fā)布這個(gè)組件的時(shí)候?qū)⒃摲?hào)展開(kāi)為一個(gè)日期和時(shí)間值,轉(zhuǎn)換為UTC時(shí)間。例如,"1.0-SNAPSHOT"會(huì)在2010年5月5日下午2點(diǎn)10分發(fā)布時(shí)候變成1.0-20100505-141000-1。這個(gè)詞只能用于開(kāi)發(fā)過(guò)程中,因?yàn)橐话銇?lái)說(shuō),項(xiàng)目組都會(huì)頻繁發(fā)布一些版本,最后實(shí)際發(fā)布的時(shí)候,會(huì)在這些snapshot版本中尋找一個(gè)穩(wěn)定的,用于正式發(fā)布,比如1.4版本發(fā)布之前,就會(huì)有一系列的1.4-SNAPSHOT,而實(shí)際發(fā)布的1.4,也是從中拿出來(lái)的一個(gè)穩(wěn)定版。

LATEST 指某個(gè)特定構(gòu)件的最新發(fā)布,這個(gè)發(fā)布可能是一個(gè)發(fā)布版,也可能是一個(gè)snapshot版,具體看哪個(gè)時(shí)間最后。

RELEASE 指最后一個(gè)發(fā)布版。

四、Maven 項(xiàng)目依賴 1. 多模塊依賴和繼承

項(xiàng)目結(jié)構(gòu)圖:

parent
    ├─childA(model層)
    │  └─pom.xml(jar)
    ├─childB(web層)
    │  └─pom.xml(war)
    └─pom.xml(pom)

parent中執(zhí)行mvn install就能將 childA和childB 一起編譯

parent的pom.xml做如下配置:

com.song
parent
1.0-SNAPSHOT
pom    


    childA   
    childB

childA和childB的pom.xml都需要配置parent,防止引入的包沖突(如果不加parent,會(huì)分別去編譯他們引入的依賴,會(huì)重復(fù)引入包):



    parent
    com.song
    1.0-SNAPSHOT

4.0.0
childA
jar



    parent
    com.song
    1.0-SNAPSHOT

4.0.0
childB
war

子pom間存在引用關(guān)系,比如childB引用到了childA的jar包


   com.module
   childA       
   1.0-SNAPSHOT
2. 子項(xiàng)目繼承父項(xiàng)目的依賴

parent中加上,child項(xiàng)目就可以繼承parent項(xiàng)目的依賴,并且在child中可以不用加version了。


   
      
           javax.servlet
          servlet-api
          2.5
      
   
3. 依賴范圍

如果不顯示執(zhí)行 屬性時(shí),默認(rèn) compile。
scope 屬性包括:

compile(編譯范圍):編譯范圍的在所有的classpath中可用,同時(shí)它們也會(huì)被打包

provided(已提供范圍):表示部署的環(huán)境當(dāng)中有某容器已經(jīng)提供了該jar包,只在編譯classpath(不是運(yùn)行時(shí))可用。它們不是傳遞性的,也不會(huì)被打包。例如,如果你開(kāi)發(fā)了一個(gè)web應(yīng)用,你可能在編譯classpath中需要可用的Servlet API來(lái)編譯一個(gè)servlet,但是你不會(huì)想要在打包好的WAR中包含這個(gè)Servlet API;這個(gè)Servlet API JAR由你的servlet容器(Tomcat)提供。

runtime(運(yùn)行時(shí)范圍):只在運(yùn)行和測(cè)試系統(tǒng)的時(shí)候需要,但在編譯的時(shí)候不需要。

test(測(cè)試范圍):在一般的 編譯和運(yùn)行時(shí)都不需要,它們只有在測(cè)試編譯和測(cè)試運(yùn)行階段可用。

system (系統(tǒng)范圍):該范圍不推薦使用(你應(yīng)該一直盡量去從公共或定制的Maven倉(cāng)庫(kù)中引用依賴)

詳細(xì)可參考:https://maven.apache.org/guid...
4. 可選依賴(Optional Dependencies)和依賴排除(Dependency Exclusions)

maven的依賴關(guān)系是有傳遞性的。如:A-->B,B-->C。但有時(shí)候,項(xiàng)目A可能不是必需依賴C,因此需要在項(xiàng)目A中排除對(duì)A的依賴。在maven的依賴管理中,有兩種方式可以對(duì)依賴關(guān)系進(jìn)行,分別是可選依賴(Optional Dependencies)以及依賴排除(Dependency Exclusions)。

4.1 可選依賴 optional

當(dāng)一個(gè)項(xiàng)目A依賴另一個(gè)項(xiàng)目B時(shí),項(xiàng)目A可能很少一部分功能用到了項(xiàng)目B,此時(shí)就可以在A中配置對(duì)B的可選依賴。舉例來(lái)說(shuō),一個(gè)類似hibernate的項(xiàng)目,它支持對(duì)mysql、oracle等各種數(shù)據(jù)庫(kù)的支持,但是在引用這個(gè)項(xiàng)目時(shí),我們可能只用到其對(duì)mysql的支持,此時(shí)就可以在這個(gè)項(xiàng)目中配置可選依賴。

配置可選依賴的原因:1、節(jié)約磁盤(pán)、內(nèi)存等空間;2、避免license許可問(wèn)題;3、避免類路徑問(wèn)題,等等。


  sample.ProjectB
  Project-B
  1.0
  compile
  true

假設(shè)以上配置是項(xiàng)目A的配置,即:Project-A --> Project-B。在編譯項(xiàng)目A時(shí),是可以正常通過(guò)的。

如果有一個(gè)新的項(xiàng)目X依賴A,即:Project-X -> Project-A。此時(shí)項(xiàng)目X就不會(huì)依賴項(xiàng)目B了。如果項(xiàng)目X用到了涉及項(xiàng)目B的功能,那么就需要在pom.xml中重新配置對(duì)項(xiàng)目B的依賴。

4.2 依賴排除 exclusions

當(dāng)一個(gè)項(xiàng)目A依賴項(xiàng)目B,而項(xiàng)目B同時(shí)依賴項(xiàng)目C,如果項(xiàng)目A中因?yàn)楦鞣N原因不想引用項(xiàng)目C,在配置項(xiàng)目B的依賴時(shí),可以排除對(duì)C的依賴。

示例(假設(shè)配置的是A的pom.xml,依賴關(guān)系為:A --> B; B --> C):


  sample.ProjectB
  Project-B
  1.0
  compile
  
    
      sample.ProjectC
      Project-C
    
   

當(dāng)然,對(duì)于多重依賴,配置也很簡(jiǎn)單,參考如下示例:

Project-A
   -> Project-B
        -> Project-D 
              -> Project-E 
              -> Project-F
   -> Project C

A對(duì)于E相當(dāng)于有多重依賴,我們?cè)谂懦龑?duì)E的依賴時(shí),只需要在配置B的依賴中進(jìn)行即可:


  sample.ProjectB
  Project-B
  1.0-SNAPSHOT
  
    
      sample.ProjectE
      Project-E
    
  
五、Maven插件機(jī)制 1. Maven默認(rèn)插件

不配置Plugin時(shí),Maven默認(rèn)會(huì)使用以下插件。如果針對(duì)各個(gè) plugin 有特殊配置的話,需要顯示指定 plugin 和 屬性配置。

plugin function life cycle phase
maven-clean-plugin 清理上一次執(zhí)行創(chuàng)建的target文件 clean
maven-resources-plugin 處理資源文件 resources,testResources
maven-compiler-plugin 編譯Java代碼 compile、testCompile
maven-surefire-plugin 執(zhí)行單元測(cè)試文件 test
maven-jar-plugin 創(chuàng)建 jar package
maven-install-plugin 拷貝jar到本地的maven倉(cāng)庫(kù) .m2/repository 下面 install
maven-deploy-plugin 發(fā)布 jar deploy
maven-site-plugin 生成文檔 site
maven-site-plugin:將工程所有文檔生成網(wǎng)站,生成的網(wǎng)站界面默認(rèn)和apache的項(xiàng)目站點(diǎn)類似,但是其文檔用doxia格式寫(xiě)的,目前不支持docbook,需要用其他插件配合才能支持。需要指出的是,在maven 2.x系列中和maven3.x的site命令處理是不同的,在舊版本中,用 mvn site 命令可以生成reporting節(jié)點(diǎn)中的所有報(bào)表,但是在maven3中,reporting過(guò)時(shí)了,要把這些內(nèi)容作為 maven-site-plugin的configuration的內(nèi)容才行。詳細(xì)內(nèi)容可以參考http://www.wakaleo.com/blog/2...

    
    
        
            src/main/java
            true 
            
                **/*.xml
            
        
        
            src/main/resources
            true
            
                **/*.properties
                *.xml
                *.dic
                *.txt
            
        
        
            src/main/resources
            false
            
                *.p12
            
        
    



    
        
        
            maven-compiler-plugin
            3.1
            
                1.8
                1.8
                UTF-8
            
        
        
        
        
            org.apache.maven.plugins
            maven-resources-plugin
            2.6
            
                UTF-8
            
        
    

2. Maven常用插件 2.0 spring-boot-maven-plugin

當(dāng)使用SpringBoot開(kāi)發(fā)項(xiàng)目的時(shí)候,會(huì)使用到spring-boot-maven-plugin插件

官方文檔:https://docs.spring.io/spring...

Spring Boot Maven plugin有5個(gè)Goals:

命令 說(shuō)明
spring-boot:repackage 默認(rèn)goal。在mvn package之后,再次打包可執(zhí)行的jar/war,
并將mvn package生成的軟件包重命名為*.original
spring-boot:run 運(yùn)行Spring Boot應(yīng)用
spring-boot:start 在mvn integration-test階段,進(jìn)行Spring Boot應(yīng)用生命周期的管理
spring-boot:stop 在mvn integration-test階段,進(jìn)行Spring Boot應(yīng)用生命周期的管理
spring-boot:build-info 生成Actuator使用的構(gòu)建信息文件build-info.properties

其中比較重要的命令是:

mvn package spring-boot:repackage

執(zhí)行后會(huì)看到生成的兩個(gè)jar文件,一個(gè)是*.jar,另一個(gè)是*.jar.original。
這是由于在執(zhí)行上述命令的過(guò)程中,Maven首先在package階段打包生成*.jar文件;然后執(zhí)行spring-boot:repackage重新打包

我們也可以跳過(guò)repackage階段

clean deploy -D spring-boot.repackage.skip=true

加上-D spring-boot.repackage.skip=true參數(shù)即可,此時(shí)只會(huì)生成一個(gè)普通的jar包

2.1 maven-source-plugin

maven-source-plugin提供項(xiàng)目自動(dòng)將源碼打包并發(fā)布的功能,在需要發(fā)布源碼項(xiàng)目的pom.xml文件中添加如下代碼即可:


    org.apache.maven.plugins
    maven-source-plugin
    
    
    
        
            attach-sources
            
                jar
            
        
    

執(zhí)行 mvn install,maven會(huì)自動(dòng)將source install到repository 。
執(zhí)行 mvn deploy,maven會(huì)自動(dòng)將source deploy到remote-repository 。
執(zhí)行 mvn source:jar,多帶帶打包源碼。

注意:在多項(xiàng)目構(gòu)建中,將source-plugin置于頂層或parent的pom中并不會(huì)發(fā)揮作用,必須置于具體項(xiàng)目的pom中。
2.2 Tomcat插件

tomcat插件有兩種:tomcat-maven-plugin 和 tomcat7-maven-plugin,使用方式基本相同。

tomcat-maven-plugin 插件是org.codehaus.mojo組織提供的,里面的tomcat是6.0.29版本,沒(méi)有更新了。

tomcat7-maven-plugin 插件是apache提供的,官網(wǎng):http://tomcat.apache.org/mave...

tomcat7-maven-plugin 插件使用


    org.apache.tomcat.maven
    tomcat7-maven-plugin
    2.2
       
          /
          8080
          UTF-8
          tomcat7
       
        
            
                package
                
                    run
                
            
        

命令:

tomcat7:deploy  --部署一個(gè)web war包
tomcat7:reload  --重新加載web war包
tomcat7:start    --啟動(dòng)tomcat
tomcat7:stop    --停止tomcat
tomcat7:undeploy --停止一個(gè)war包
tomcat7:run --啟動(dòng)嵌入式tomcat ,并運(yùn)行當(dāng)前項(xiàng)目

tomcat-maven-plugin 插件使用


    org.codehaus.mojo
    tomcat-maven-plugin
    1.1
    
        /helloworld
        8080
        UTF-8
        http://localhost:8080/manager/html
        tomcat6
        
            -Xms256m -Xmx512m -XX:MaxPermSize=512m
          
    

命令:

tomcat:deploy   --部署一個(gè)web war包
tomcat:reload   --重新加載web war包
tomcat:start    --啟動(dòng)tomcat
tomcat:stop    --停止tomcat
tomcat:undeploy --停止一個(gè)war包
tomcat:run  --啟動(dòng)嵌入式tomcat ,并運(yùn)行當(dāng)前項(xiàng)目

配置參數(shù):
path:是訪問(wèn)應(yīng)用的路徑
port:是tomcat 的端口號(hào)
uriEncoding:URL按UTF-8進(jìn)行編碼,這樣就解決了中文參數(shù)亂碼。
Server:指定tomcat名稱。

2.3 自動(dòng)部署插件wagon

自動(dòng)部署包含三個(gè)步驟:
編譯打包、上傳到服務(wù)器、在服務(wù)器上執(zhí)行l(wèi)inux命令

2.3.1 文件上傳到服務(wù)器

Maven項(xiàng)目可使用 mvn install 指令打包,打包完成后包位于target目錄下,要想在遠(yuǎn)程服務(wù)器上部署,首先要將包上傳到服務(wù)器。

首先在本地的setting.xml中配置server的信息,包括id,用戶名,密碼。(當(dāng)然也可以在pom.xml里面配置)


    
      linux_server
      user
      password
    

pom.xml


    
        
            org.apache.maven.wagon
            wagon-ssh
            2.8
        
    
    
        
            org.codehaus.mojo
            wagon-maven-plugin
            1.0
            
                linux_server
                target/test.war
                scp://user:[email protected]/home/tomcat7/webapps
            
        
    

linux_server: 在setting.xml中配置的server的id名字
target/test.war:是要上傳到服務(wù)器的文件,一般來(lái)說(shuō)是jar或者war包 scp://user:[email protected]/home/tomcat7/webapps:配置服務(wù)器的用戶、密碼、地址以及文件上傳的目錄

命令:

# 對(duì)項(xiàng)目進(jìn)行打包和上傳操作
mvn clean install wagon:upload-single 

如果覺(jué)的wagon命令太長(zhǎng),可以設(shè)置 excutions 來(lái)配置phase和goals來(lái)簡(jiǎn)化命令。

2.3.2 在服務(wù)器上執(zhí)行l(wèi)inux命令
1. 運(yùn)行jar文件



    
        
            org.apache.maven.wagon
            wagon-ssh
            2.8
        
    
    
        
            org.codehaus.mojo
            wagon-maven-plugin
            1.0
            
            
                target/test.jar
                scp://user:[email protected]/home/java/exe
                
                    pkill -f /home/java/exe/test.jar  
                    nohup java -jar /home/java/exe/test.jar > /home/java/exe/$(date +%Y%m%d-%H%M%S).log &  
                
                true 
            
        
    

命令


mvn clean install wagon:upload-single wagon:sshexec
2. 上傳war包并啟動(dòng)Tomcat

   
       
           org.apache.maven.wagon
           wagon-ssh
           2.8
       
   
   
       
           org.codehaus.mojo
           wagon-maven-plugin
           1.0
           
           
               target/javawebdeploy.war
               scp://user:[email protected]/home/tomcat7/webapps
               
                   
                   sh /home/tomcat7/bin/shutdown.sh
                   rm -rf /home/tomcat7/webapps/test
                   sh /home/tomcat7/bin/startup.sh
               
               true
           
       
   

命令

mvn clean install wagon:upload-single wagon:sshexec
2.3.3 配置execution

如果覺(jué)得 mvn clean package wagon:upload-single wagon:sshexec 命令太長(zhǎng)了不好記,那么可以配置execution,在運(yùn)行deploy的同時(shí)運(yùn)行upload-single和sshexec。


    
        
            org.apache.maven.wagon
            wagon-ssh
            2.8
        
    
    
        
            org.codehaus.mojo
            wagon-maven-plugin
            1.0
            
                
                    upload-deploy
                    
                    deploy
                    
                        upload-single
                        sshexec
                    
                    
                    
                        target/test.war
                        scp://user:[email protected]/home/tomcat7/webapps
                        
                            sh /home/tomcat7/bin/shutdown.sh
                            rm -rf /coder/tomcat7/webapps/test
                            sh /coder/tomcat7/bin/startup.sh
                        
                        true
                    
                
            
        
    

部署命令




mvn clean deploy -D maven.deploy.skip=true
2.3.4. 完整示例配置

首先在本地的setting.xml中配置server的信息,包括id,用戶名,密碼。(當(dāng)然也可以在pom.xml里面配置)


    
      linux_server
      user
      password
    

pom.xml


    
        
            org.apache.maven.wagon
            wagon-ssh
            2.8
        
    
    
        
            org.codehaus.mojo
            wagon-maven-plugin
            1.0
            
            
                linux_server
                scp://192.168.20.128/home/tomcat7/webapps
                true 
            
            
            
                
                
                    upload-war-to-server
                    deploy
                    
                        upload-single
                        sshexec
                    
                    
                        target/test.war
                        
                            datefilename=$(date +%Y%m%d-%H%M%S);cp /home/tomcat7/webapps/test.war /home/tomcat7/webapps/test.war.$datefilename  
                            ps -ef | grep /home/tomcat7/ | grep -v grep | awk {"print $2"} | sed -e "s/^/kill -9 /g" | sh 
                            rm -rf /home/tomcat7/webapps/test 
                            export JAVA_HOME=/home/jdk/jdk1.8.0_91;sh /home/tomcat7/bin/startup.sh 
                        
                    
                
        
    

部署命令

# 必須加 -D maven.deploy.skip=true ,表示跳過(guò)maven自身的deploy使用wagon的deploy。否則報(bào)錯(cuò)“-DaltDeploymentRepository=id::layout::url parameter”
mvn clean deploy -D maven.deploy.skip=true
2.4 maven-war-plugin

Maven打包時(shí)可以對(duì)web.xml中的spring.profiles.active值進(jìn)行替換。

web.xml中配置一個(gè)占位符${profiles.active}:


    spring.profiles.active
    ${profiles.active}

pom.xml配置maven-war-plugin



  
    maven-war-plugin
    3.2.2
    
      
      true
    
  




  dev



  
    dev
    
      dev
    
  
  
    release
    
      release
    
  

以上配置完成后,再通過(guò)mvn package -Pdevmvn package -Preelase打包后,${profiles.active}<占位符就被替換為devrelease

六、Maven控制測(cè)試環(huán)境和正式環(huán)境 6.1 Maven profiles切換測(cè)試環(huán)境和正式環(huán)境

    
        
        dev
        
            dev
        
        
            
            true
        
    
    
        
        release
        
            release
        
    
    
        
        beta
        
            beta
        
    
 




    helloworld
    
        
        
            src/main/resources
            
                config/
            
        
        
        
            src/main/resources/config/${profiles.active}
            .
        
    

id代表這個(gè)環(huán)境的唯一標(biāo)識(shí),在 mvn install -Pdev 來(lái)指定。
此properties定義了三個(gè)環(huán)境,分別是dev(開(kāi)發(fā)環(huán)境)、beta(測(cè)試環(huán)境)、release(發(fā)布環(huán)境)
activeByDefault=true代表如果不指定某個(gè)固定id的profile,那么就使用這個(gè)環(huán)境

使用 mvn install -Pdev會(huì)將 id 為 dev 的 profile 中的定義的屬性profiles.active自動(dòng)替換${profiles.active}占位符的變量。最終build到classpath的資源文件由maven-resources-plugin來(lái)指定,為src/main/resources/config/dev文件下的所有文件。

6.2 Spring Framework profile整合Maven profile

如果想要整合Maven profile和Spring Framework profile,Maven打包時(shí)可以對(duì)web.xml中的spring.profiles.active值進(jìn)行替換。

web.xml中配置一個(gè)占位符${profiles.active}:


    spring.profiles.active
    ${profiles.active}

pom.xml配置maven-war-plugin



  
    maven-war-plugin
    3.2.2
    
      
      true
    
  




  dev



  
    dev
    
      dev
    
  
  
    release
    
      release
    
  

以上配置完成后,再通過(guò)mvn package -Pdevmvn package -Preelase打包后,${profiles.active}<占位符就被替換為devrelease

七、Maven 變量 1. 內(nèi)置屬性

${basedir} represents the directory containing pom.xml

**${version}** equivalent to ${project.version } or ${pom.version }

2. Pom/Project properties

所有pom中的元素都可以用 project. 前綴進(jìn)行引用,以下是部分常用的

**${project.build.directory}** results in the path to your "target" dir, this is the same as ${pom.project.build.directory}

${project.build.outputDirectory} results in the path to your "target/classes" dir

${project.name} refers to the name of the project.

${project.version} refers to the version of the project.

${project.build.finalName} refers to the final name of the file created when the built project is packaged

3. 本地用戶設(shè)定

所有用的的 settings.xml 中的設(shè)定都可以通過(guò) settings. 前綴進(jìn)行引用

${settings.localRepository} refers to the path of the user"s local repository.

${maven.repo.local} also works for backward compatibility with maven1

4. 環(huán)境變量

系統(tǒng)的環(huán)境變量通過(guò) env. 前綴引用

${env.M2_HOME} returns the Maven2 installation path.

**${java.home}** specifies the path to the current JRE_HOME environment use with relative paths to get for example: ${java.home}../bin/java.exe

5. java系統(tǒng)屬性

所有JVM中定義的java系統(tǒng)屬性.

6. pom.xml自定義變量
 
    ... 
     
        hellowolrld 
     
    ... 
 

則引用 ${project.build.finalName} 就會(huì)得到值 hellowolrld

7. parent 工程的變量

parent工程的pom.xml中的變量用前綴 ${project.parent} 引用. 上級(jí)工程的版本也可以這樣引用: ${parent.version }.

參考文章:  
https://blog.csdn.net/wwbmyos...
https://blog.csdn.net/j080624...
http://xxgblog.com/2015/10/23...
https://blog.csdn.net/java_an...
https://blog.csdn.net/xiao__g...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/69566.html

相關(guān)文章

  • dubbo整合springboot最詳細(xì)入門教程

    摘要:說(shuō)明目前互聯(lián)網(wǎng)公司,大部分項(xiàng)目都是基于分布式,一個(gè)項(xiàng)目被拆分成幾個(gè)小項(xiàng)目,這些小項(xiàng)目會(huì)分別部署在不同的計(jì)算機(jī)上面,這個(gè)叫做微服務(wù)。當(dāng)一臺(tái)計(jì)算機(jī)的程序需要調(diào)用另一臺(tái)計(jì)算機(jī)代碼的時(shí)候,就涉及遠(yuǎn)程調(diào)用。此時(shí)就粉末登場(chǎng)了。 showImg(https://s2.ax1x.com/2019/07/05/ZaELxe.jpg); 說(shuō)明 目前互聯(lián)網(wǎng)公司,大部分項(xiàng)目都是基于分布式,一個(gè)項(xiàng)目被拆分成幾個(gè)...

    JinB 評(píng)論0 收藏0
  • Java緩存框架---EhCache(基于Maven+Spring的EhCache入門教程

    摘要:今天就介紹一款常用的緩存框架。設(shè)置緩存中對(duì)象是否為永久的,如果是,超時(shí)設(shè)置將被忽略,對(duì)象從不過(guò)期。內(nèi)存不足時(shí),是否啟用磁盤(pán)緩存。磁盤(pán)失效線程運(yùn)行時(shí)間間隔,默認(rèn)是秒。 在當(dāng)今大數(shù)據(jù)爆發(fā)時(shí)代,數(shù)據(jù)量每天都呈爆炸式增長(zhǎng),頻繁的數(shù)據(jù)庫(kù)訪問(wèn)無(wú)疑給數(shù)據(jù)庫(kù)帶來(lái)的極大負(fù)載,除了增大物理服務(wù)器的數(shù)量,我們也可以將一些常用的、公共的資源以cache形式放在客戶端或者靠近客戶端的服務(wù)器上,從而減少了服務(wù)器的...

    suosuopuo 評(píng)論0 收藏0
  • JavaFx系列教程之一:JavaFx+Springboot+Maven 開(kāi)發(fā)打包教程

    摘要:最近在用開(kāi)發(fā)窗體程序,并且以后打算把所有的窗體軟件切換到上面,并且還想用的各種好處,集成了就可以愉快的用各種服務(wù)了。最重要的是打包工具。由于我是,一般用和,執(zhí)行命令會(huì)看到打包成了和兩種類型的安裝包。由于沒(méi)有計(jì)算機(jī),所以還不知道打包成的狀態(tài)。 最近在用 JavaFx 開(kāi)發(fā)窗體程序,并且以后打算把所有的窗體軟件切換到 JavaFx 上面,并且還想用 springboot 的__各種好處,集...

    Coding01 評(píng)論0 收藏0
  • SpringBoot簡(jiǎn)單入門

    摘要:接下來(lái)我們繼續(xù)看如果達(dá)成包,在加入如下配置然后通過(guò)打包,最后通過(guò)命令啟動(dòng)這樣,最簡(jiǎn)單的就完成了,但是對(duì)于一個(gè)大型項(xiàng)目,這是遠(yuǎn)遠(yuǎn)不夠的,的詳細(xì)操作可以參照官網(wǎng)。以上實(shí)例只是最簡(jiǎn)單的項(xiàng)目入門實(shí)例,后面會(huì)深入研究。 什么是Spring Boot Spring Boot是由Pivotal團(tuán)隊(duì)提供的基于Spring的全新框架,其設(shè)計(jì)目的是為了簡(jiǎn)化Spring應(yīng)用的搭建和開(kāi)發(fā)過(guò)程。該框架遵循約定大...

    BWrong 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<