<b id="wionh"></b>

<u id="wionh"><address id="wionh"><meter id="wionh"></meter></address></u>

Maven中的packing,properties,dependencyManagement都是什么意思

時間:2022-11-09 20:45:51 類型:JAVA
字號:    

(1) <packaging>pom</packaging>是什么意思?

1、配置<packaging>pom</packaging>的意思是使用maven分模塊管理,分模塊都會有一個父級項目,pom文件一個重要的屬性就是packaging(打包類型),一般來說所有的父級項目的packaging都為pom,packaging默認類型jar類型,如果不做配置,maven會將該項目打成jar包。

2、項目的打包類型:pom、jar、war

  packing默認是jar類型,

 

  pom ---------> 父類型都為pom類型

 

  jar ---------> 內部調用或者是作服務使用

 

  war ---------> 需要部署的項目


3、POM是最簡單的打包類型。不像一個JAR,SAR,或者EAR,它生成的構件只是它本身。沒有代碼需要測試或者編譯,也沒有資源需要處理。打包類型為POM的項目的默認目標

生命周期階段        目標

package               site:attach-descriptor

install                   install:install

deploy                 deploy:deploy


4、pom 項目里沒有java代碼,也不執行任何代碼,只是為了聚合工程或傳遞依賴用的。

5、可以理解成是將多個model合并

(2) <properties></properties>標簽作用?

eg:

<properties>
  <mybatis-plus.version>3.0.5</mybatis-plus.version>
  <velocity.version>2.0</velocity.version>
  <swagger.version>2.7.0</swagger.version>
  ....
</properties>
 
<!-- 配置<dependencyManagement>鎖定依賴的版本 -->
<dependencyManagement><!--mybatis-plus 持久層-->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>${mybatis-plus.version}</version>
    </dependency>

    <!-- velocity 模板引擎, Mybatis Plus 代碼生成器需要 -->
    <dependency>
        <groupId>org.apache.velocity</groupId>
        <artifactId>velocity-engine-core</artifactId>
        <version>${velocity.version}</version>
    </dependency>
    
    <!--swagger-->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>${swagger.version}</version>
    </dependency>
    ....
</dependencyManagement>

通過<properties>元素用戶可以自定義一個或多個Maven屬性,然后在POM的其他地方使用${屬性名}的方式引用該屬性,這種做法的最大意義在于消除重復和統一管理。

(3)<dependencyManagement>標簽作用?、

 

dependencyManagement的使用場景:


           隨著微服務的火爆,導致了我們現在的項目由多個微服務模塊組成,列如一個電商的項目會被分割成諸如:訂單微服務,庫存微服務,商品微服務等模塊,為了保證項目中的各個模塊所使用的包保持一致性,我們需要在最頂層(父項目)中進行版本號的鎖定。假如我們使用的springboot的版本為2.X,那么我們的springcloud版本也就隨之確定為Finchley版本。換言之,我們所有的子微服務必須使用相同的springcloud版本,這個時候dependencyManagement的作用就體現出了,只需要在頂層項目中加入

 <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring‐cloud‐dependencies</artifactId>
                <version>Finchley.M9</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
  </dependencyManagement>

這段代碼后,假如訂單模塊使用springcloud時,只需要引入如下代碼,無須再引用版本號等信息,因為springcloud版本號已被鎖定

<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring‐cloud‐starter‐netflix‐eurekaserver</artifactId>
        </dependency>
</dependencies>

  dependencies的使用場景

     如果頂層模塊引入到一個jar,那么所有他的子模塊都會繼承這個jar包。
    dependencies和dependencyManagement的區別

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

中文无码妇乱子二区三区_久久亚洲精品无码福利播放_毛片一级_日韩aⅴ无码久久精品免费

<b id="wionh"></b>

<u id="wionh"><address id="wionh"><meter id="wionh"></meter></address></u>

<