欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于Maven pom文件使用分析

 更新時間:2024年12月13日 16:11:03   作者:騎個小蝸牛  
本文詳細介紹了Maven項目的核心配置文件pom.xml的結(jié)構(gòu)和各個元素的用途,包括項目基礎信息、依賴管理、倉庫配置、構(gòu)建配置、版本控制、分發(fā)和報告配置等,幫助讀者全面了解Maven項目的構(gòu)建和管理過程

project

Maven 是一個強大的構(gòu)建和依賴管理工具,pom.xml 文件是 Maven 項目的核心配置文件,用于定義項目的構(gòu)建、依賴關(guān)系、插件、目標等。它是 Maven 構(gòu)建過程的基礎,所有的構(gòu)建配置都需要在該文件中進行定義。

project元素代表整個Maven項目,是POM文件中最外層的元素。

一個完整的 pom.xml 文件大致包括以下幾個部分:

  • 項目基礎信息
  • 組織與許可信息
  • 自定義屬性信息
  • 模塊配置
  • 項目依賴配置
  • Maven依賴倉庫信息
  • Maven插件倉庫信息
  • 構(gòu)建配置
  • 版本控制信息
  • 分發(fā)信息
  • 報告配置
  • 環(huán)境配置

子元素分類

項目基礎信息

元素名稱描述
parent指定父POM文件的坐標,繼承父項目的配置
modelVersionPOM模型的版本,通常為4.0.0
groupId唯一標識項目的組織或公司名稱
artifactId唯一標識項目的模塊名
name項目的名稱
version項目的版本號
packaging項目的打包類型,如jar、war、pom等
description項目的簡短描述
url項目主頁的URL地址
inceptionYear項目開始年份
- parent

parent元素用于定義當前項目的父項目信息,即當前項目所在的模塊繼承自哪個模塊。可被繼承的信息包括但不限于:dependencies、plugins、build、reporting等。常用于項目中許多模塊都存在共性配置的情況。

通過parent元素從父級POM文件繼承屬性,可以使子模塊重用父級組件中定義的配置和元素等,同時方便子模塊修改和覆蓋繼承的內(nèi)容。

  • 一個完整的parent元素應該至少包含兩個必需的子元素:groupId和artifactId,分別表示父項目的groupId和artifactId。
  • 另外,還可以使用version元素指定父項目的版本號。如果省略了版本,則Maven會自動搜索本地倉庫和遠程倉庫以查找最新版本。

Maven先查找本地倉庫,然后去中央倉庫下載指定的父級artifactId和groupId的POM文件,通過繼承父POM文件,可以避免在子模塊中重復定義相同的屬性。

屬性:

  • groupId:父項目的GroupId。
  • artifactId:父項目的ArtifactId。
  • version:定義繼承自父級的版本號。
  • relativePath:為確定父級POM的位置提供一個可選的相對路徑。當該元素未定義時,默認從本地倉庫和Maven中央倉庫搜索。

繼承父級的限制:

  • 發(fā)布你自己的項目時,使用繼承層次結(jié)構(gòu)作為中心庫不是一個好的設計選擇。盡管這樣做會更方便,但它強制了許多限制。
  • 如果依賴于某個庫,并且發(fā)現(xiàn)該庫沒有定義你需要的一些配置信息,那么你可以通過獨立定義一個父級(調(diào)整相應的部分)點解決問題。
  • 如果某個庫的父級中的管理版本并不符合最新標準,而你又無法通知該項目的作者更新其父級,在這種情況下,你也可以獨立地定義一個POM文件并繼承自期望的目標。

示例:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.6.3</version>
    <relativePath/>
</parent>
- modelVersion

modelVersion元素指定當前POM文件的版本號,用于標識當前POM使用的Maven模型版本。如果該元素未被顯式定義,并且當前POM文件是基于4.0.0或更高版本創(chuàng)建的,那么它將默認采用4.0.0版本。

modelVersion只能使用Maven支持的版本號。一旦確定了版本號,就應該始終使用相同的版本號,除非你有很好的理由來升級它。另外,如果你想要向后兼容其他版本的POM文件,可以保留舊版本并添加新屬性,而不是更新現(xiàn)有元素。

示例:

<modelVersion>4.0.0</modelVersion>
- groupId

groupId 元素定義了該項目所屬組織或公司的唯一標識符。它是 Maven 項目的全局唯一 ID,用于在倉庫中標識項目和依賴項。

通常情況下,groupId 建議以組織或公司的域名倒置為前綴,這樣做可避免命名空間沖突。

  • groupId 的值不應包含空格或其他特殊字符,建議使用小寫字母和連字符作為單詞之間的分隔符。
  • groupId 元素應當在 POM 文件中顯式指定,并且一旦指定,在整個項目中不應發(fā)生更改,否則可能會引起各種不同的問題。
  • maven 對于 groupId 是區(qū)分大小寫的。因此,在同一個項目的不同模塊中,如果將 groupId 寫成了不同的大小寫形式,可能會導致依賴模塊的構(gòu)建失敗。因此,建議在整個項目中保持 groupId 的一致性。

示例:

<groupId>org.xxok.boot</groupId>
- artifactId

artifactId 元素是指當前Maven項目的唯一標識符,用于表示當前構(gòu)建的項目。

artifactId 元素同樣可以讓其他依賴引用到它作為依賴的項目POM文件中。

假如項目B需要依賴A項目的jar包,則需要配置A項目的坐標(groupId、artifactId、version),Maven 就會檢索并下載 A 項目的 jar 包來滿足 B 項目的依賴關(guān)系。

示例:

<artifactId>my-project</artifactId>
- name

name元素定義項目名稱。該元素是一個可選項,但強烈建議在每個POM中都使用它來描述當前項目,以便更容易地理解和識別項目的作用。在Maven生命周期、插件等其他各個地方,也會經(jīng)常使用到該屬性。

需要注意的是,在IDE或其他Maven工具中使用時,name元素可以幫助用戶識別并區(qū)分不同的模塊,以及幫助用戶快速找到文檔或其他相關(guān)信息。

示例:

<name>My App Name</name>
- version

version元素表示當前項目的版本號,它用于唯一標識項目和管理依賴項。

在Maven中,通常存在三種類型的版本號:

  • SNAPSHOT:開發(fā)版本,表示還處于開發(fā)過程中,會隨著開發(fā)的進行不斷更新;
  • RELEASE:穩(wěn)定版本,表示已經(jīng)完成開發(fā)工作,可以正式發(fā)布使用;
  • 其他自定義版本號:根據(jù)具體需要自行指定。

version元素可以定義在以下幾個位置:

  • 外部父POM文件中的version元素:如果您正在使用一個外部的父POM來管理項目,那么版本號可以從那里定義。
  • 項目自身的version元素:如果您沒有使用一個外部的父POM,那么您可以在項目自身的pom.xml文件中定義版本號。
  • 依賴項中的version元素:在項目的依賴項中也可以指定版本號。優(yōu)先級最高的是直接在依賴項中指定的版本號,其次是繼承自父POM文件、再次是項目自身定義的版本號。

示例:

<version>1.0-SNAPSHOT</version>
- packaging

packaging元素指定了項目打包的類型。

packaging的可選值:

  • jar:以JAR形式打包,默認值
  • war:以Web應用程序形式打包
  • ear:以Enterprise應用程序形式打包
  • pom:僅作為依賴項存在,不生成輸出文件

Maven將按照packaging元素指定的類型對項目進行打包,并將輸出內(nèi)容保存到目標目錄中(默認為target目錄)。

- description

description元素用于描述該項目的簡短說明。description元素并不影響項目的構(gòu)建和部署過程,只是作為一個文本描述的附加信息存在。

通常情況下,description元素緊隨groupId、artifactId和version元素之后,位于pom.xml文件的頂部。

示例:

<description>This project description</description>
- url

url元素用于指定項目的URL地址。 該元素通常用于指定項目主頁、文檔位置或者源代碼倉庫的地址等。

示例:

<url>https://github.com/username/projectname</url>
- inceptionYear

inceptionYear元素代表了項目的創(chuàng)建年份。

示例:

<inceptionYear>2010</inceptionYear>

組織與許可信息

元素名稱描述
organization項目的組織信息,如公司或開發(fā)者團隊
licenses項目所使用的開源許可證信息
developers項目開發(fā)人員的列表
contributors提供貢獻但未參與開發(fā)的人員列表
mailingLists項目的郵件討論列表
- organization

organization元素代表了項目所屬的組織信息。

這個元素是可選的,主要用作標識項目所屬機構(gòu)的相關(guān)信息,例如組織名稱、組織URL等。如果指定了organization元素,Maven會使用該信息生成默認的開發(fā)者和組織元素。

示例:

<organization>
    <name>ACME Corporation</name>
    <url>http://www.acme.com</url>
</organization>
- licenses

licenses元素用于指定項目相關(guān)的許可證信息。

該元素通常包含多個license元素,每個license元素對應一個許可證信息。

示例:

<licenses>
    <license>
      <name>The Apache Software License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
    </license>
    ...
</licenses>
- developers

developers元素用于列出項目的開發(fā)者和其聯(lián)系方式。

通常情況下,developers元素緊隨description元素之后,位于pom.xml文件的頂部。developers元素提供的信息不會直接影響項目的構(gòu)建和部署過程,只是作為一個文本描述的附加信息存在。

示例:

<developers>
  <developer>
    <id>john_doe</id>
    <name>John Doe</name>
    <email>john.doe@example.com</email>
  </developer>
  <developer>
    <id>jane_doe</id>
    <name>Jane Doe</name>
    <email>jane.doe@example.com</email>
  </developer>
</developers>
- contributors

contributors元素可以用來列舉該項目的貢獻者列表。元素可以包含多個contributor元素。

每個contributor元素應該至少包含name元素用于指定貢獻者的姓名或昵稱,可選地,還可以包含email、url和organization等子元素以提供更詳細的貢獻者信息。

示例:

<contributors>
    <contributor>
      <name>John Doe</name>
      <email>johndoe@example.com</email>
      <url>http://example.com</url>
      <organization>Acme Organization</organization>
      <organizationUrl>http://acme.org</organizationUrl>
    </contributor>
    <contributor>
      <name>Jane Smith</name>
    </contributor>
  </contributors>
- mailingLists

mailingLists元素用于指定項目相關(guān)的郵件列表信息。該元素通常包含多個mailingList元素,每個mailingList元素對應一個郵件列表信息。

通常情況下,mailingLists元素緊隨developers元素之后,位于pom.xml文件的頂部。mailingLists元素提供的信息不會直接影響項目的構(gòu)建和部署過程,只是作為一個文本描述的附加信息存在。

示例:

<mailingLists>
  <mailingList>
    <name>Developers List</name>
    <subscribe>dev-subscribe@example.com</subscribe>
    <unsubscribe>dev-unsubscribe@example.com</unsubscribe>
    <post>dev-post@example.com</post>
    <archive>http://example.com/mailman/private/dev-list/</archive>
  </mailingList>
</mailingLists>

自定義屬性信息

元素名稱描述
properties定義項目使用的自定義屬性,供整個項目使用
- properties

properties元素用于定義一些可以在該POM及其子項目中重復引用的常量值。該元素通常包含各種 key-value對,其中key代表屬性的名稱,value代表屬性所表示的常量值。

需要注意的是,properties元素的定義僅僅是對屬性進行了聲明或賦值,并沒有定義這些屬性具體用于什么目的。確切的屬性用途,要依據(jù)實際情況而定。

示例:

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

除此之外,Maven還有很多內(nèi)置的屬性。

Maven內(nèi)置屬性:

屬性名描述
${project.version}當前項目的版本號
${project.groupId}當前項目的組 ID
${project.artifactId}當前項目的 artifactId
${project.name}當前項目的名稱
${project.description}當前項目的描述
${project.url}當前項目的網(wǎng)址(主頁)
${project.build.directory}構(gòu)建輸出目錄,默認是 target
${project.build.outputDirectory}編譯后的 .class 文件輸出目錄
${project.build.finalName}構(gòu)建后生成的最終文件名(通常是 <artifactId>-<version>)
${project.build.sourceDirectory}源代碼目錄,默認是 src/main/java
${project.build.testSourceDirectory}測試代碼目錄,默認是 src/test/java
${maven.version}當前使用的 Maven 版本號
${maven.home}Maven 的安裝目錄
${basedir}項目的根目錄路徑,通常與 pom.xml 文件所在目錄相同
${user.home}當前用戶的主目錄路徑
${env.<variable>}獲取系統(tǒng)環(huán)境變量的值,例如 ${env.PATH} 獲取 PATH 環(huán)境變量
${project.build.plugins}當前項目的構(gòu)建插件
${project.build.pluginManagement}項目中插件管理部分
${session}當前 Maven 構(gòu)建會話對象
${settings.localRepository}本地 Maven 倉庫的路徑
${settings.userSettingsFile}用戶的 Maven 配置文件路徑(~/.m2/settings.xml)
${settings.globalSettingsFile}全局 Maven 配置文件路徑
${project.basedir}項目的根目錄路徑
${project.compileSourceRoots}編譯源文件的根目錄列表
${project.testCompileSourceRoots}測試源文件的根目錄列表
${project.testOutputDirectory}測試編譯輸出目錄
${project.reporting.outputDirectory}項目報告輸出目錄(默認 target/site)
${build.timestamp}構(gòu)建時間戳,表示構(gòu)建時間(如 yyyyMMdd-HHmm 格式)
${project.reporting.pluginGroups}報告插件的組 ID
${project.build.extensions}項目的構(gòu)建擴展
${project.distModule}項目的分發(fā)模塊信息
${project.testPlugin}項目的測試插件信息
${project.version}當前項目的版本號
${project.artifactId}當前項目的 artifactId
${project.parent.version}父項目的版本號(如果存在父項目的話)
${project.parent.groupId}父項目的 Group ID
${project.parent.artifactId}父項目的 Artifact ID
${project.parent.relativePath}父項目的 pom.xml 相對路徑

模塊配置

元素名稱描述
modules列出項目包含的子模塊列表
- modules

modules元素用于指定一個多模塊項目的子模塊列表??梢园鄠€module元素。

每個module元素應該只包含一個子元素:一個目錄名或相對路徑(默認相對于父項目的pom.xml文件)。當使用mvn命令執(zhí)行某個多模塊項目時,Maven會根據(jù)modules元素列出的子模塊進行構(gòu)建。

示例:

<modules>
    <module>module-a</module>
    <module>module-b</module>
    <module>module-c</module>
  </modules>

項目依賴配置

元素名稱描述
dependencyManagement統(tǒng)一管理項目依賴版本,避免版本沖突
dependencies項目運行所需的外部依賴庫
- dependencyManagement

dependencyManagement元素提供了一種集中式管理依賴項版本號的機制。該元素包含各種子元素,用于指定項目使用的各種依賴項及其版本。

示例:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.1</version>
      <scope>test</scope>
    </dependency>
    <!-- ... -->
  </dependencies>
</dependencyManagement>

需要注意的是,dependencyManagement元素中的依賴項聲明并沒有直接使用在項目中,他只是定義了版本和相關(guān)配置信息,以供項目的其他模塊繼承使用。

- dependencies

dependencies元素用于列出項目所依賴的外部庫,也就是所謂的“依賴項”。該元素可以包含多個dependency元素。

dependency元素:

  • 一個完整的dependency元素應該至少包括groupId、artifactId和version三個必需的子元素。
  • 當使用Maven構(gòu)建項目時,它會根據(jù)這些元素自動從倉庫下載對應的依賴包到本地存儲庫中。

dependency的子元素:

  • groupId:依賴項所屬的組織或公司的唯一標識符。
  • artifactId:依賴項的名稱,通常由項目名和模塊名組成。
  • version:依賴項的版本號。
  • scope:依賴項的作用范圍,可選值包括compile、provided、runtime、test等。
  • type:依賴項的類型,默認為jar。
  • classifier:用于區(qū)分同一artifactId和version下不同的構(gòu)建版本。
  • optional:指定是否將該依賴項傳遞給項目的依賴項。
  • exclusions:用于排除掉某個依賴項的傳遞依賴項。

示例:

<dependencies>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>5.2.9.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

Maven依賴倉庫信息

元素名稱描述
repositories定義項目依賴的Maven倉庫
- repositories

repositories元素用于定義該項目依賴庫(dependency)從哪里下載,以及下載順序。該元素主要包含了一組子元素,用于指定各種資源庫。該元素可以包含多個repository元素。

repository元素:

repository元素用于指定Maven項目的遠程倉庫信息。repository元素應該至少包含一個id、name和url子元素。

  • id:倉庫ID,用于唯一標識該倉庫。
  • name:倉庫名稱,用于描述該倉庫。
  • url:倉庫URL,指向存儲依賴項的遠程倉庫地址。

多數(shù)情況下,Maven會自動下載所需的依賴項,因為它能夠從本地倉庫中找到這些依賴項。當然,如果某個依賴項需要從遠程倉庫下載,那么就需要先配置好這些倉庫。

示例:

<repositories>
  <repository>
    <id>central</id>
    <url>https://repo1.maven.org/maven2/</url>
  </repository>
  <repository>
    <id>jboss</id>
    <name>JBoss Repository</name>
    <url>https://repository.jboss.org/nexus/content/groups/public/</url>
  </repository>
  <repository>
    <id>snapshots</id>
    <name>Maven Snapshots</name>
    <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
    <releases>
      <enabled>false</enabled>
    </releases>
    <snapshots>
      <enabled>true</enabled>
    </snapshots>
  </repository>
</repositories>

使用maven中央倉庫作為主要軟件庫,并添加了其他兩個外部倉庫

  • 第一個repository元素指定了默認的中央倉庫。
  • 第二個repository元素是一個JBoss庫,它只有元數(shù)據(jù)(pom),將無法下載包。
  • 第三個repository元素是一個Sonatype的快照庫,其中配置了禁用發(fā)布版本和啟用快照版本支持。

需要注意的是,不必在每個pom.xml文件中都重新定義庫。實際上你可以在Maven settings.xml文件中定義多個公共庫(central、jcenter等), 項目會繼承這些已定義的庫。

Maven插件倉庫信息

元素名稱描述
pluginRepositories定義Maven插件的倉庫
- pluginRepositories

pluginRepositories元素用于定義該項目使用到的插件庫(plugins)從哪里下載以及下載順序。

和repositories元素非常相似,pluginRepositories主要包含了一組子元素,用于指定各種插件資源庫。該元素可以包含多個pluginRepository元素。

pluginRepository元素:

pluginRepository元素與repository 元素中的功能類似,pluginRepository 元素用于指定Maven插件庫的位置。pluginRepository 元素可以包含以下子元素:

  • id: 插件倉庫ID,用于唯一標識該倉庫。
  • name: 插件倉庫名稱,用于描述該倉庫。
  • url: 插件倉庫URL,指向存儲插件的遠程倉庫地址。

示例:

<pluginRepositories>
  <pluginRepository>
    <id>central</id>
    <url>https://repo1.maven.org/maven2/</url>
  </pluginRepository>
  <pluginRepository>
    <id>jboss</id>
    <name>JBoss Repository</name>
    <url>https://repository.jboss.org/nexus/content/groups/public/</url>
  </pluginRepository>
  <pluginRepository>
    <id>snapshots</id>
    <name>Maven Snapshots</name>
    <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
    <releases>
      <enabled>false</enabled>
    </releases>
    <snapshots>
      <enabled>true</enabled>
    </snapshots>
  </pluginRepository>
</pluginRepositories>

使用maven中央倉庫作為主要插件庫,并添加了外部插件庫

  • 第一個pluginRepository元素指定了默認的中央倉庫。
  • 第二個pluginRepository元素是一個JBoss庫,它只有元數(shù)據(jù)(pom),將無法下載包。
  • 第三個pluginRepository元素是一個Sonatype的快照庫,其中配置了禁用發(fā)布版本和啟用快照版本支持。

需要注意的是,同樣地,不必在每個pom.xml文件中都需要重新定義插件庫。你可以在Maven settings.xml文件中定義多個公共庫(central、jcenter等), 項目會繼承這些已定義的庫。

構(gòu)建配置

元素名稱描述
build定義項目的構(gòu)建過程,包括插件和生命周期
- build

build元素用于配置一個項目的構(gòu)建選項,主要包括了項目所依賴的插件、資源文件等構(gòu)建相關(guān)信息??梢园鄠€子元素,如plugins、resources等。

元素描述默認值
sourceDirectory指定 Java 源代碼的目錄。src/main/java
scriptSourceDirectory指定腳本文件(如 Groovy)源代碼的目錄。
testSourceDirectory指定測試源代碼的目錄。src/test/java
outputDirectory指定編譯后的 .class 文件的輸出目錄。target/classes
testOutputDirectory指定測試編譯后的 .class 文件的輸出目錄。target/test-classes
finalName指定最終構(gòu)建文件的名稱(不帶擴展名)。${project.artifactId}-${project.version}
resources指定資源文件目錄,資源文件會被復制到構(gòu)建輸出目錄。
plugins配置構(gòu)建插件,用于處理具體的構(gòu)建任務。
pluginManagement集中管理插件的版本和配置。插件配置在此元素下不會直接生效,需在 plugins 元素中引用。
extensions指定 Maven 構(gòu)建過程中的擴展(如插件擴展)。
pluginRepositories指定插件倉庫的位置。
directory為 Maven 指定其他目錄,如編譯文件夾、測試文件夾等。
  • plugins:插件相關(guān)配置,指定插件及插件內(nèi)容,例如:

    • plugin:指定具體插件名稱。
      • groupId:插件所在組 ID
      • artifactId:插件 ID
      • version:插件版本號
      • executions:插件執(zhí)行的配置,定義插件的生命周期綁定。
      • configuration:指定插件的具體參數(shù)和設置。
  • resources:用于指定項目中使用的資源文件,通常包括屬性文件、XML 配置文件和 Spring 配置文件等。

    • resource:表示項目主要的資源路徑。
      • directory:資源文件所在的目錄路徑。
      • includes:包含的資源文件路徑模式,支持通配符。
      • excludes:排除的資源文件路徑模式,支持通配符。
      • filtering:是否對資源文件進行過濾(如替換 ${} 占位符)。默認為 false。
      • targetPath:指定資源文件在構(gòu)建輸出目錄中的目標路徑。
      • encoding:資源文件的編碼方式。默認為平臺相關(guān)編碼。
      • items:指定一個或多個資源項,進一步定義資源文件的行為。
      • nonFiltered:指定不進行過濾的資源文件路徑模式。

示例:

<build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
      </resource>
    </resources>
  </build>
  • 定義了兩個插件:maven-compiler-plugin和spring-boot-maven-plugin,并配置了maven-compiler-plugin的源代碼和目標代碼版本為1.8。
  • 指定了使用src/main/resources目錄下的.properties和.xml文件作為項目資源文件。

版本控制信息

元素名稱描述
scm配置源代碼管理系統(tǒng)(如Git、SVN)的信息
- scm

scm元素用于定義一個項目的源代碼管理(SCM)信息,以便Maven可以從這個倉庫中檢索和構(gòu)建代碼。

一個完整的scm元素至少應該包括兩個必需的子元素:connection和developerConnection,它們分別表示開發(fā)者與版本控制庫之間的連接方式。另外,還可以使用url、tag、branch等其他子元素進一步指定SCM信息。

scm子元素:

  • connection:源代碼倉庫的連接 URL,用于從 SCM 獲取元數(shù)據(jù)。
  • developerConnection:開發(fā)者用來推送代碼的連接 URL,通常是私有的。
  • url:公開的源代碼倉庫訪問 URL,通常用于查看源代碼。
  • tag:源代碼倉庫中的標簽,標識一個特定的版本。
  • branch:源代碼倉庫中的分支名稱,表示開發(fā)或發(fā)布的分支。
  • commit:指定源代碼的某個特定提交(哈希值),確保構(gòu)建時使用正確的代碼。
  • checkoutDirectory:源碼檢出的目錄路徑,默認是項目根目錄,指定了檢出源代碼的具體路徑。

SCM的用途:

  • 通過指定源代碼的版本控制系統(tǒng)信息,使得其他開發(fā)者能夠更輕松地將項目檢出到本地環(huán)境中,并參與項目的開發(fā)。
  • 在項目構(gòu)建期間,Maven可以利用SCM配置來自動從版本控制系統(tǒng)中獲取源代碼,并構(gòu)建項目。
  • 通過指定版本控制系統(tǒng)的分支或標簽信息,Maven可以構(gòu)建特定版本的項目,從而方便項目的發(fā)布和部署。
  • SCM配置還可以用于指定版本控制系統(tǒng)的URL,以便Maven可以自動地為項目生成構(gòu)建信息和版本號等元數(shù)據(jù),這些信息對于跟蹤和管理項目非常重要。

示例:

<scm>
  <connection>scm:git:git://github.com/user/repo.git</connection>
  <developerConnection>scm:git:ssh://github.com/user/repo.git</developerConnection>
  <url>https://github.com/user/repo/tree/master</url>
  <tag>1.0.0</tag>
</scm>

上述代碼中,定義了一個基于Git的源代碼管理信息。

其中,connection元素通過https協(xié)議指定了與代碼庫的連接方式,而developerConnection元素則通過ssh協(xié)議進行連接。除此之外,還指定了代碼庫的URL(即主頁地址)以及打標簽時使用的默認tag。

分發(fā)信息

元素名稱描述
distributionManagement配置項目的分發(fā)方式,如發(fā)布到Maven倉庫或其他服務
- distributionManagement
  • distributionManagement元素用于管理您構(gòu)建后部署(或發(fā)布)到哪里。該元素中包含了各種子元素,用于指定項目的發(fā)行版本部署(或發(fā)布)相關(guān)配置。
  • distributionManagement元素只是用于管理項目的分發(fā)版本部署(或發(fā)布)的相關(guān)配置,而不會影響項目的編譯和構(gòu)建過程。

示例:

<distributionManagement>
  <repository>
    <id>internal.repo</id>
    <name>Internal Repository</name>
    <url>file:///usr/local/repo</url>
  </repository>
</distributionManagement>

在上面的示例中,我們聲明了一個名為"Internal Repository"的倉庫,其地址為本地文件系統(tǒng)上的/usr/local/repo目錄。

一旦定義了這個倉庫之后,可以使用命令 mvn deploy 將此存儲庫作為項目的部署目標,在構(gòu)建過程中上傳并部署項目至該存儲庫。

報告配置

元素名稱描述
reporting配置如何生成項目報告,如代碼質(zhì)量報告、測試報告等
- reporting

reporting元素用于為項目生成一些報告,例如代碼覆蓋率、靜態(tài)代碼分析結(jié)果等。該元素可以包含各種子元素,來配置需要生成哪些報告,以及如何生成這些報告。

reporting元素只是用于配置Maven生成報告的相關(guān)信息,它不影響項目的編譯和構(gòu)建過程,并且生成的報告通常是基于已經(jīng)構(gòu)建好的代碼來進行分析處理的。

示例:

<reporting>
  <plugins>
    <plugin>
      <groupId>org.jacoco</groupId>
      <artifactId>jacoco-maven-plugin</artifactId>
      <version>0.8.6</version>
    </plugin>
    <plugin>
      <groupId>org.sonarsource.scanner.maven</groupId>
      <artifactId>sonar-maven-plugin</artifactId>
      <version>3.9.0.2155</version>
    </plugin>
    <!-- ... -->
  </plugins>
</reporting>

在上面的示例中,我們定義了兩個插件,分別是Jacoco和SonarQube。通過使用這些插件,Maven可以生成有關(guān)代碼覆蓋率、靜態(tài)代碼分析的報告。其他可供選擇的報告插件包括FindBugs、Checkstyle、Javadoc等。

環(huán)境配置

元素名稱描述
profiles定義不同構(gòu)建環(huán)境下的配置文件,可根據(jù)需求啟用不同的構(gòu)建配置
- profiles

profiles元素用于定義一個或多個構(gòu)建“配置”(profile),這些配置與通常的構(gòu)建選項不同,能夠根據(jù)不同的環(huán)境、需求等情況進行靈活地管理不同構(gòu)建環(huán)境下的項目配置和依賴項。

profile

一個profile元素可以包含多個子元素,如id、activation、properties、dependencies等,每個子元素又可以包含具體的配置信息。

  • id(名稱):必需,用于給對應的構(gòu)建配置指定一個名稱。
  • activation(激活條件):用于指定觸發(fā)profile的條件,如:系統(tǒng)屬性、JDK版本、Maven版本、操作系統(tǒng)等。
  • properties(屬性):定義profile中使用的屬性值。這些屬性可以被其他元素引用,以便在不同的環(huán)境下使用不同的值。
  • dependencies(依賴):指定與profile相關(guān)的依賴項。這些依賴項僅在激活profile時才會被添加到項目中。
  • dependencyManagement(依賴管理):類似于dependencies,但是它只定義依賴版本號,而不引入實際依賴。
  • build(構(gòu)建):用于定義與profile相關(guān)的構(gòu)建設置,例如編譯器版本、打包方式等。
  • reporting(報告):指定生成報告時使用的插件和配置。
  • modules(模塊):定義特定的modules,這些modules僅在激活profile時才會被構(gòu)建。
  • repositories(倉庫):指定與profile相關(guān)的倉庫配置。

在POM文件中定義了Profile元素之后,可以根據(jù)所需的構(gòu)建環(huán)境激活或禁用它們。

要激活Profile元素,可以使用命令行選項、環(huán)境變量或其他Maven插件來指定所需的Profile。例如,使用“-P production”命令可以激活包含“production”Profile的POM文件。

示例:

<profiles>
    <profile>
      <id>development</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <properties>
        <jdbc.driverClassName>com.mysql.jdbc.Driver</jdbc.driverClassName>
      </properties>
      <dependencies>
        <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>8.0.23</version>
        </dependency>
      </dependencies>
    </profile>
  </profiles>

上述代碼中,定義了一個名為development的構(gòu)建配置,啟動該配置的條件為默認激活(activeByDefault)。該配置使用MySQL驅(qū)動程序作為依賴項,并設置了jdbc.driverClassName屬性值,以便在開發(fā)環(huán)境中使用正確的數(shù)據(jù)庫連接驅(qū)動。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解Java的Proxy動態(tài)代理機制

    詳解Java的Proxy動態(tài)代理機制

    Java有兩種代理方式,一種是靜態(tài)代理,另一種是動態(tài)代理。對于靜態(tài)代理,其實就是通過依賴注入,對對象進行封裝,不讓外部知道實現(xiàn)的細節(jié)。很多 API 就是通過這種形式來封裝的
    2021-06-06
  • SpringBoot配置Email發(fā)送功能實例

    SpringBoot配置Email發(fā)送功能實例

    本篇文章主要介紹了SpringBoot配置Email發(fā)送功能實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • 使用Java實現(xiàn)加密之AES加解密

    使用Java實現(xiàn)加密之AES加解密

    這篇文章主要介紹了使用Java實現(xiàn)加密之AES加解密,AES為最常見的對稱加密算法,對稱加密算法也就是加密和解密用相同的密鑰,需要的朋友可以參考下
    2023-05-05
  • springboot 啟動如何排除某些bean的注入

    springboot 啟動如何排除某些bean的注入

    這篇文章主要介紹了springboot 啟動如何排除某些bean的注入方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java設計模式之策略模式詳解

    Java設計模式之策略模式詳解

    這篇文章主要為大家詳細介紹了Java設計模式之策略模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • MybatisPlus多數(shù)據(jù)源及事務解決思路

    MybatisPlus多數(shù)據(jù)源及事務解決思路

    這篇文章主要介紹了MybatisPlus多數(shù)據(jù)源及事務解決思路,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • java 創(chuàng)建自定義數(shù)組

    java 創(chuàng)建自定義數(shù)組

    本篇文章是關(guān)于java 如何自己創(chuàng)建自定義數(shù)組,這里給大家一個小實例,希望能幫助有所需要的同學
    2016-07-07
  • Mybatis-Plus中的MetaObjectHandler組件的使用

    Mybatis-Plus中的MetaObjectHandler組件的使用

    MetaObjectHandler是Mybatis-Plus中一個實用組件,專門用于自動處理實體對象中的特定字段,如創(chuàng)建時間、更新時間、創(chuàng)建人和修改人等,該接口允許開發(fā)者在不修改業(yè)務代碼的情況下,實現(xiàn)自動填充功能,極大地簡化了代碼的復雜性,感興趣的可以了解一下
    2024-10-10
  • Java拋出異常與自定義異常類應用示例

    Java拋出異常與自定義異常類應用示例

    這篇文章主要介紹了Java拋出異常與自定義異常類,結(jié)合實例形式分析了Java針對錯誤與異常處理的try、catch、throw等語句相關(guān)使用技巧,需要的朋友可以參考下
    2019-03-03
  • Spring AbstractRoutingDatasource 動態(tài)數(shù)據(jù)源的實例講解

    Spring AbstractRoutingDatasource 動態(tài)數(shù)據(jù)源的實例講解

    本文介紹如何使用 Spring AbstractRoutingDatasource 基于上下文動態(tài)切換數(shù)據(jù)源,因此我們會讓查找數(shù)據(jù)源邏輯獨立于數(shù)據(jù)訪問之外
    2021-07-07

最新評論