日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Maven pom.xml 元素配置说明(一)

發布時間:2023/12/10 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Maven pom.xml 元素配置说明(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

部分來源:

  • Maven中 dependencies 節點和 dependencyManagement 節點的區別
  • dependencies與dependencyManagement的區別
  • maven profile的使用
  • properties

    假如一種場景:比如說spring的jar包版本,由于jar包較多,如果要修改,需要挨個修改,工作量巨大,因此可以使用 <properties>標簽,賦值之后,可以統一使用,統一修改。

    <dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>4.3.5</version> </dependency>

    轉變為

    <properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><spring.version>4.3.5</spring.version> </properties> <dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${spring.version}</version> </dependency>

    dependencyManagement 與 dependencies

    dependencies即使在子項目中不寫該依賴項,那么子項目仍然會從父項目中繼承該依賴項(全部繼承)

    dependencyManagement里只是聲明依賴,并不實現引入,因此子項目需要顯示的聲明需要用的依賴。如果不在子項目中聲明依賴,是不會從父項目中繼承下來的;只有在子項目中寫了該依賴項,并且沒有指定具體版本,才會從父項目中繼承該項,并且version和scope都讀取自父pom;另外如果子項目中指定了版本號,那么會使用子項目中指定的jar版本。

    Itoo-base(pom.xml) 繼承于 Itoo-base-parent(pom.xml)
    示例如下:
    Itoo-base-parent(pom.xml)

    <dependencyManagement> <dependencies> <dependency> <groupId>org.eclipse.persistence</groupId> <artifactId>org.eclipse.persistence.jpa</artifactId> <version>${org.eclipse.persistence.jpa.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>${javaee-api.version}</version> </dependency> </dependencies> </dependencyManagement>

    Itoo-base(pom.xml)

    <!--繼承父類--> <parent> <artifactId>itoo-base-parent</artifactId> <groupId>com.tgb</groupId> <version>0.0.1-SNAPSHOT</version> <relativePath>../itoo-base-parent/pom.xml</relativePath> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>itoo-base</artifactId> <packaging>ejb</packaging> <!--依賴關系--> <dependencies> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> </dependency> <dependency> <groupId>org.eclipse.persistence</groupId> <artifactId>org.eclipse.persistence.jpa</artifactId> <scope>provided</scope> </dependency> </dependencies>

    請注意:
    子類中沒有指明依賴項的版本信息,在頂層 pom 中的 dependencyManagement 中javaee-api表明其優選的版本是 ${javaee-api.version} ,版本信息會注入其中。
    只有當 外層的dependencies 元素中沒有指明版本信息時, dependencyManagement 中的 dependencies 元素才起作用。

    這樣做的好處:
    統一管理項目的版本號,確保應用的各個項目的依賴和版本一致,才能保證測試的和發布的是相同的成果,因此,在頂層pom中定義共同的依賴關系。同時可以避免在每個使用的子項目中都聲明一個版本號,這樣想升級或者切換到另一個版本時,只需要在父類容器里更新,不需要任何一個子項目的修改;如果某個子項目需要另外一個版本號時,只需要在dependencies中聲明一個版本號即可。子類就會使用子類聲明的版本號,不繼承于父類版本號。

    頂層 pom 中的 dependencies 與 dependencyManagement 中的 dependencies 元素有一個重要的區別:
    dependencyManagement 中的 dependencies 元素只表明依賴項版本的優先選擇,并不影響項目的依賴項;而 dependencies 元素則影響項目的依賴項。

    Profile

    使用maven來實現多環境的構建可移植性,需要借助maven提供的profile功能,通過不同的環境激活不同的profile來達到構建的可移植性。

    一、POM中profile的配置
    首先是profile配置,在pom.xml中添加如下profile的配置:

    <profiles><profile><id>dev</id><properties><profiles.active>dev</profiles.active></properties><activation><activeByDefault>true</activeByDefault></activation></profile><profile><id>test</id><properties><profiles.active>test</profiles.active></properties></profile> </profiles>

    這里定義了三個環境,dev(開發環境)、test(測試環境),其中開發環境是默認激活的(activeByDefault為true),這樣如果在不指定profile時默認是開發環境。

    同時每個profile還定義了兩個屬性,其中profiles.active表示被激活的profile的配置文件的目錄。

    二、工程目錄
    針對不同的環境,我們定義不同的配置文件,而這些配置文件都做為資源文件放到maven工程的文件目錄下(已將src/main/resources改為config),即config目錄下,且各個環境的配置分別放到相應的目錄下,而所有環境都公用的配置,直接放到config目錄下即可。目錄結構如下所示:

    src/main/resources spring.xml spring-mvc.xml properties dev dev.properties test test.properties

    如上所示,開發環境、測試環境的配置文件分別放到config目錄下的dev、test三個子目錄中,剩余公共的配置文件放于config目錄下。
    三、POM文件中build配置
    在pom中的build節點下,配置資源文件的位置,如下所示:

    <resources><resource><directory>config</directory><excludes><exclude>properties/dev/*</exclude><exclude>properties/test/*</exclude></excludes></resource><resource><directory>config/properties/${profiles.active}</directory></resource> </resources>

    首先第一個資源文件位置config需要排隊提各個環境的配置文件,各個環境的配置我們在第三個節點中通過前面在profile中配置的profiles.active屬性來指定。即config/properties/${profiles.active}。這樣在激活指定的profile時,會加載指定目錄下的配置文件,如當前激活的是dev profile,那么這個資源目錄就是config/properties/dev。這樣就達到了不同環境加載不同配置的目的。
    四、項目編譯生成
    所有需要的配置就完成了,通過在運行maven命令時指定不同的profile即可構建不同環境需要的war包或發布到不同的環境了 。如:

    mvn clean package -Ptest 即構建出生產環境需要的war包

    war包解壓后,文件結構如下:

    WEB-INFclassesspring.xmlspring-mvc.xmltest.properties

    由于默認的profile是dev,所以如果我們不指定profile,那么加載就是開發環境dev下的配置文件了。即我們在本地開發測試時,不用關心profile的問題。

    轉載于:https://www.cnblogs.com/cuiyf/p/6257346.html

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的Maven pom.xml 元素配置说明(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。