maven pom配置

pom.xml常用的標簽

通常在父pom的標簽

<dependencyManagement>

dependencyManagement 和 dependencies區(qū)別:

1)Dependencies相對于dependencyManagement,所有生命在dependencies里的依賴都會自動引入,并默認被所有的子項目繼承。

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

modules 聚合(或多模塊)

為了能一次構建兩個(或多個)模塊,就需要再創(chuàng)建一個pom.xml來對多個模塊進行集中的操作,也就是聚合。

案例

spring boot maven pom依賴

spring-boot-starter-web (pom packaging)-> spring-boot-parent (pom packaging)? ->spring-boot-dependencies (pom packaging)

一個百人團隊的maven 依賴的架構

module (jar packaging)-> (pom packaging) project? -> common-dependencies (pom packaging) 公司級別公共的jar包管理

子pom的常用標簽

<parent> 對父pom的依賴。

<distributionManagement> 指定Maven分發(fā)構件(deploy)的位置

案例

<distributionManagement>? ?

? ? <repository>? ?

? ? ? <id>nexus-releases</id>? ?

? ? ? <name>Nexus Release Repository</name>? ?

? ? ? <url>http://127.0.0.1:8080/nexus/content/repositories/releases/</url>? ?

? ? </repository>? ?

? ? <snapshotRepository>? ?

? ? ? <id>nexus-snapshots</id>? ?

? ? ? <name>Nexus Snapshot Repository</name>? ?

? ? ? <url>http://127.0.0.1:8080/nexus/content/repositories/snapshots/</url>? ?

? ? </snapshotRepository>? ?

? </distributionManagement>? ?


<build> 用于編譯配置。

案例

<build>

  <!-- 項目的名字 -->

  <finalName>WebMavenDemo</finalName>

  <!-- 描述項目中資源的位置 -->

  <resources>

    <!-- 自定義資源1 -->

    <resource>

      <!-- 資源目錄 -->

      <directory>src/main/java</directory>

      <!-- 包括哪些文件參與打包 -->

      <includes>

        <include>**/*.xml</include>

      </includes>

      <!-- 排除哪些文件不參與打包 -->

      <excludes>

        <exclude>**/*.txt</exclude>

          <exclude>**/*.doc</exclude>

      </excludes>

    </resource>

  </resources>

  <!-- 設置構建時候的插件 -->

  <plugins>

    <plugin>

      <groupId>org.apache.maven.plugins</groupId>

      <artifactId>maven-compiler-plugin</artifactId>

      <version>2.1</version>

      <configuration>

        <!-- 源代碼編譯版本 -->

        <source>1.8</source>

        <!-- 目標平臺編譯版本 -->

        <target>1.8</target>

      </configuration>

    </plugin>

    <!-- 資源插件(資源的插件) -->?

    <plugin>?

      <groupId>org.apache.maven.plugins</groupId>?

      <artifactId>maven-resources-plugin</artifactId>?

      <version>2.1</version>?

      <executions>?

        <execution>?

          <phase>compile</phase>?

        </execution>?

      </executions>?

      <configuration>?

        <encoding>UTF-8</encoding>?

      </configuration>

    </plugin>

    <!-- war插件(將項目打成war包) -->?

    <plugin>?

      <groupId>org.apache.maven.plugins</groupId>?

      <artifactId>maven-war-plugin</artifactId>?

      <version>2.1</version>?

      <configuration>

        <!-- war包名字 -->?

        <warName>WebMavenDemo1</warName>

      </configuration>?

    </plugin>?

  </plugins>

</build>


<profile>

簡單說一下,maven的profile可以讓我們定義一系列的配置信息,然后指定其激活條件。這樣我們就可以定義多個profile,然后每個profile對應不同的激活條件和配置信息,從而達到不同環(huán)境使用不同配置信息的目的。


maven依賴沖突

所謂的依賴沖突,舉例說明,工程A依賴B和C,但是B和C分別依賴不同版本的D。那么對于工程A來說,到底是依賴了哪個版本的D呢?

解決依賴沖突有2個基本的原則:

短路優(yōu)先原則。 比如存在如下的兩個依賴路徑,那么A最終會依賴version2的X版本。

A->B->C->X(version1)

A->D->X(version2)

如果路徑長度相同,那么先聲明先解析。

dependencyManagement 和 dependencies區(qū)別:

https://blog.csdn.net/yuyecsdn/article/details/90229024

maven中的distributionManagement的作用

https://blog.csdn.net/qq_31924435/article/details/53745811

maven pom項目結構

https://zhuanlan.zhihu.com/p/88159905

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容