亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringBoot項目構(gòu)建Maven標(biāo)簽及屬性用法詳解

 更新時間:2024年08月26日 14:21:33   作者:想做一個小孩的楊先生  
在?Spring?Boot?項目中,Maven?是最常用的構(gòu)建工具之一,本文將詳細(xì)介紹?Maven?依賴管理中的主要標(biāo)簽及其使用方法,幫助開發(fā)者更好地理解和使用?Maven?構(gòu)建工具,感興趣的朋友跟隨小編一起看看吧

一、序言

在 Spring Boot 項目中,Maven 是最常用的構(gòu)建工具之一。通過 Maven,我們可以輕松地管理項目的依賴、構(gòu)建流程和插件。本文將詳細(xì)介紹 Maven 依賴管理中的主要標(biāo)簽及其使用方法,幫助開發(fā)者更好地理解和使用 Maven 構(gòu)建工具。

二、Maven標(biāo)簽介紹

在 Maven 項目中,用于描述項目信息的標(biāo)簽通常位于 pom.xml 文件的<project>根元素下。這些標(biāo)簽幫助 Maven 構(gòu)建工具和其他開發(fā)者了解項目的基本信息、項目開發(fā)者、組織、許可證等。以下是 Maven 中常見的用于項目描述的標(biāo)簽:

項目描述類標(biāo)簽

1. <modelVersion>標(biāo)簽

描述: 指定 POM 文件的模型版本。對于 Maven 2 和更高版本,通常為 4.0.0。

<modelVersion>4.0.0</modelVersion>

2. <groud>標(biāo)簽

描述: 項目的組標(biāo)識符,通常表示組織或公司名稱。與 <artifactId> 共同唯一標(biāo)識項目。

<groupId>com.example</groupId>

3. <artifactId>標(biāo)簽

描述: 項目的工件標(biāo)識符,通常是模塊或項目的名稱。與 <groupId> 共同唯一標(biāo)識項目。

<artifactId>my-project</artifactId>

4. <version>標(biāo)簽

描述: 項目的版本號。可以是 1.0.0-SNAPSHOT 表示開發(fā)中的版本,或者1.0.0表示正式版本。

<version>1.0.0-SNAPSHOT</version>

5. <packaging>標(biāo)簽

描述: 定義項目的打包方式。常見的值有 jar, war, pom 等,默認(rèn)為 jar。

<packaging>jar</packaging>

6. <name>標(biāo)簽

描述: 項目的名稱。

<name>My Project</name>

7. <description>標(biāo)簽

描述: 對項目的簡要描述。通常用于進(jìn)一步解釋項目的功能或目的。

<description>This is a sample project to demonstrate Maven project descriptors.</description>

8. <url>標(biāo)簽

描述: 目的主頁或相關(guān)文檔的 URL??梢允琼椖康墓倬W(wǎng)地址或代碼托管平臺的鏈接。

<description>This is a sample project to demonstrate Maven project descriptors.</description>

9. <inceptionYear>標(biāo)簽

描述: 項目的啟動年份,通常用于版權(quán)聲明中。

<inceptionYear>2024</inceptionYear>

10. <organization>標(biāo)簽

描述: 定義項目所屬的組織信息,包括組織名稱和 URL。

<organization>
    <name>Example Corp</name>
    <url>https://www.example.com</url>
</organization>

11. <licenses>標(biāo)簽

描述: 描述項目使用的許可證信息。包括許可證名稱、URL、分發(fā)方式等。

<licenses>
    <license>
        <name>Apache License, Version 2.0</name>
        <url>https://www.apache.org/licenses/LICENSE-2.0</url>
        <distribution>repo</distribution>
    </license>
</licenses>

12. <developers>標(biāo)簽

描述: 列出項目的開發(fā)人員及其相關(guān)信息,如 ID、姓名、電子郵件等。

 <developers>
        <developer>
            <id>123</id> <!-- 開發(fā)者ID -->
            <name>yjp</name> <!-- 姓名 -->
            <email>yjp@example.com</email>  <!-- 郵箱 -->
            <organization>sis</organization> <!-- 組織 -->
            <roles> <!-- 角色 -->
                <role>Developer</role> 
            </roles>
        </developer>
    </developers>

13. <contributors>標(biāo)簽

描述: 列出對項目做出貢獻(xiàn)的人員及其相關(guān)信息,類似于 ,但通常不是核心開發(fā)人員。

   <!-- 貢獻(xiàn)者信息 -->
    <contributors>
        <contributor>
            <name>Jane Smith</name> <!-- 姓名 -->
            <email>janesmith@example.com</email> <!-- 郵箱 -->
            <organization>Example Corp</organization> <!-- 組織 -->
        </contributor>
    </contributors>

14. <issueManagement>標(biāo)簽

描述: 項目的問題管理系統(tǒng)的信息,如 JIRA、GitHub Issues 等。通常包括系統(tǒng)的類型和 URL。

<issueManagement>
    <system>GitHub Issues</system>
    <url>https://github.com/example/my-project/issues</url>
</issueManagement>

15. <scm>標(biāo)簽

描述: 項目的源碼管理(Source Code Management)信息。包括版本控制系統(tǒng)的類型和訪問 URL。

 <scm>
    <url>https://github.com/example/my-project</url>
    <connection>scm:git:git://github.com/example/my-project.git</connection>
    <developerConnection>scm:git:ssh://git@github.com/example/my-project.git</developerConnection>
    <tag>HEAD</tag>
</scm>

依賴管理類標(biāo)簽

1. <dependencyManagement>標(biāo)簽

描述: <dependencyManagement>標(biāo)簽用于集中管理依賴的版本號和范圍。它不會直接引入依賴,而是為項目中的其他模塊提供版本號的定義,避免在各模塊中重復(fù)定義版本號。子項目可以在使用這些依賴時,不必再次聲明版本號。

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.5.4</version>
        </dependency>
    </dependencies>
</dependencyManagement>

2. <dependencies><dependency> 標(biāo)簽

  • <dependencies>:該標(biāo)簽是一個容器,用于包含項目中所需的所有依賴。每個依賴項由<dependency>標(biāo)簽來定義。
  • <dependency>:定義了一個具體的依賴項。通常包含以下幾個子標(biāo)簽:
    • <groupId>:依賴的組織標(biāo)識符,通常代表某個組織或公司名稱。
    • <artifactId>:依賴的工件標(biāo)識符,通常是模塊或項目的名稱。
    • <version>:依賴的版本號。
    • <scope>:依賴的作用域(稍后詳細(xì)介紹)。
    • <optional>:指定該依賴是否為可選依賴,默認(rèn)值為 false。
    <dependencyManagement> <!-- 依賴管理 -->
        <dependencies> 
            <dependency> 
                <groupId>cn.iocoder.boot</groupId> <!-- 組織ID -->
                <artifactId>yjp-dependencies</artifactId> <!-- 項目名稱 -->
                <version>${revision}</version> <!-- 版本號 -->
                <type>pom</type> <!-- 導(dǎo)入類型:pom 表示該依賴是一個POM類型,而不是一個標(biāo)準(zhǔn)的Java庫(如JAR)。POM類型通常用于依賴管理或繼承。 -->
                <scope>import</scope>  <!-- 導(dǎo)入范圍:import 表示該依賴將導(dǎo)入另一個POM文件,而不是直接作為一個庫。 -->
                <optional>false</optional> <!-- 可選依賴:optional 表示該依賴是可選的,即在使用該依賴時,可以選擇性地導(dǎo)入。 -->
            </dependency>
        </dependencies>
    </dependencyManagement>

3. <scope> 標(biāo)簽

描述: <scope>屬性用于指定依賴的作用域,決定了該依賴在構(gòu)建生命周期的哪些階段可用,以及它是否會被傳遞給依賴它的項目。Maven支持的主要作用域包括以下幾種:

(1) compile (默認(rèn)作用域)

  • 說明: 這是默認(rèn)的作用域,如果沒有顯式指定<scope>,Maven會將其視為compile。
  • 適用范圍: 編譯、測試和運(yùn)行時都可用。
  • 傳遞性: 會傳遞給依賴此項目的所有項目。
<dependency>
    <groupId>org.example</groupId>
    <artifactId>example-lib</artifactId>
    <version>1.0.0</version>
    <!-- compile是默認(rèn)的,不需要顯式指定 -->
</dependency>

(2) provided

  • 說明: 依賴在編譯和測試階段可用,但運(yùn)行時不包含該依賴。通常用于由運(yùn)行環(huán)境(如Servlet容器、應(yīng)用服務(wù)器)提供的依賴。
  • 適用范圍: 編譯和測試時可用,但運(yùn)行時不包含。
  • 傳遞性: 不會傳遞給依賴此項目的其他項目。
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
    <scope>provided</scope>
</dependency>

(3) runtime

  • 說明: 依賴在運(yùn)行時和測試階段可用,但在編譯時不可用。通常用于那些僅在運(yùn)行時需要的庫。
  • 適用范圍: 測試和運(yùn)行時可用,編譯時不可用。
  • 傳遞性: 會傳遞給依賴此項目的其他項目。
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.30</version>
    <scope>runtime</scope>
</dependency>

(4) test

  • 說明: 依賴僅在測試編譯和測試運(yùn)行時可用,不會包含在最終的構(gòu)建成果中。
  • 適用范圍: 僅測試時可用,編譯和運(yùn)行時不可用
  • 傳遞性: 不會傳遞給依賴此項目的其他項目。
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.13.2</version>
    <scope>test</scope>
</dependency>

(5) system

  • 說明: 依賴類似于provided作用域,但必須顯式提供依賴的路徑(通過systemPath元素),不會從Maven倉庫中下載該依賴。通常不推薦使用。
  • 適用范圍: 編譯和測試時可用,運(yùn)行時不包含。
  • 傳遞性: 不會傳遞給依賴此項目的其他項目。
<dependency>
    <groupId>com.example</groupId>
    <artifactId>example-lib</artifactId>
    <version>1.0.0</version>
    <scope>system</scope>
    <systemPath>${basedir}/libs/example-lib.jar</systemPath>
</dependency>

(6) import

  • 說明: 這個作用域僅用于依賴管理(通常是BOM文件- Bill of Materials),可以將指定POM文件中的依賴版本管理導(dǎo)入到當(dāng)前項目中。
  • 適用范圍: 僅用于<dependencyManagement>內(nèi)的依賴聲明,不能用于常規(guī)依賴。
  • 傳遞性: 導(dǎo)入的版本管理會影響當(dāng)前項目及其子模塊。
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.5.4</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

這些作用域幫助開發(fā)者在構(gòu)建過程中有效管理依賴的使用范圍和傳遞性,根據(jù)具體場景選擇合適的作用域可以避免不必要的依賴引入,提高項目的可維護(hù)性和構(gòu)建效率。

4. <exclusions> 標(biāo)簽

描述: 當(dāng)一個依賴引入了不需要的傳遞依賴時,我們可以使用 <exclusions> 標(biāo)簽將其排除。每個 <exclusion> 元素定義一個要排除的依賴,通常包含<groupId> <artifactId> 子標(biāo)簽。

  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.5.4</version>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>

5. <optional> 標(biāo)簽

描述: <optional> 標(biāo)簽用于標(biāo)記一個依賴是否為可選??蛇x依賴不會自動傳遞給依賴此項目的其他項目。

<dependency>
    <groupId>com.example</groupId>
    <artifactId>example-lib</artifactId>
    <version>1.0.0</version>
    <optional>true</optional>
</dependency>

項目構(gòu)建類標(biāo)簽

1. <build>標(biāo)簽

**描述:**定義項目的構(gòu)建配置,如構(gòu)建目錄、插件、資源、配置文件等。

    <build>
        <!-- 設(shè)置構(gòu)建的 jar 包名 -->
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <!-- 打包 -->
            <plugin>
                <groupId>org.springframework.boot</groupId> 
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring.boot.version}</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal> <!-- 將引入的 jar 打入其中 -->
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

2. <sourceDirectory>標(biāo)簽

描述: 定義項目的主源代碼目錄。默認(rèn)情況下,該目錄為 src/main/java。如果你的源代碼存放在其他目錄中,可以通過該標(biāo)簽進(jìn)行修改。

 <sourceDirectory>src/main/java</sourceDirectory>

3. <testSourceDirectory>標(biāo)簽

描述: 定義項目的測試源代碼目錄。默認(rèn)情況下,該目錄為 src/test/java。如果你的測試代碼存放在其他目錄中,可以通過該標(biāo)簽進(jìn)行修改。

<testSourceDirectory>src/test/java</testSourceDirectory>

4. <outputDirectory>標(biāo)簽

描述: 指定編譯后的主代碼輸出目錄。默認(rèn)值為 target/classes。

<outputDirectory>target/classes</outputDirectory>

5. <finalName>標(biāo)簽

描述: 定義構(gòu)建輸出的最終名稱,不包括文件擴(kuò)展名。默認(rèn)情況下,Maven 會將輸出文件命名為 ${artifactId}-${version}。你可以通過此標(biāo)簽自定義輸出文件的名稱。

<finalName>my-custom-name</finalName>

6. <resources>標(biāo)簽

描述: 定義項目的資源目錄及資源文件。資源文件會被打包到最終的構(gòu)建產(chǎn)物中(如 JAR 包)。通常資源目錄為 src/main/resources,該標(biāo)簽允許你自定義資源的路徑和處理方

<resources>
    <resource>
        <directory>src/main/resources</directory>
        <includes>
            <include>**/*.properties</include>
        </includes>
    </resource>
</resources>

7. <plugins>標(biāo)簽

描述: 定義 Maven 構(gòu)建生命周期中的插件。插件是 Maven 的核心組件,用于執(zhí)行各種任務(wù)(如編譯、打包、測試、部署等)。你可以在此標(biāo)簽中配置和使用不同的插件。

<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>
</plugins>

8. <executions>標(biāo)簽

描述: 用于配置特定插件在構(gòu)建生命周期中的不同階段執(zhí)行的行為。每個 <executions> 元素可以包含多個 <execution> 子元素,這些子元素定義了插件的一個執(zhí)行任務(wù),包括其執(zhí)行的階段、目標(biāo)和其他配置。

<build>
    <plugins>
        <plugin>
            <!-- 插件的基本信息 -->
            <groupId>...</groupId>
            <artifactId>...</artifactId>
            <version>...</version>
            <!-- 執(zhí)行配置 -->
            <executions>
                <execution>
                    <id>execution-id</id> <!-- 可選:執(zhí)行的標(biāo)識符,用于區(qū)分多個執(zhí)行 -->
                    <phase>phase-name</phase> <!-- 可選:指定該執(zhí)行應(yīng)綁定的構(gòu)建生命周期階段 -->
                    <goals>
                        <goal>goal-name</goal> <!-- 必須:定義要執(zhí)行的目標(biāo)(可以有多個) -->
                    </goals>
                    <configuration>
                        <!-- 可選:插件特定的配置項 -->
                    </configuration>
                </execution>
                <!-- 可以有多個 <execution> 元素 -->
            </executions>
        </plugin>
    </plugins>
</build>

9. <execution>子標(biāo)簽解釋

<id>: 可選的執(zhí)行標(biāo)識符,用于唯一標(biāo)識每個執(zhí)行。這在多個 元素存在時特別有用。
<phase>: 指定執(zhí)行綁定到 Maven 構(gòu)建生命周期中的特定階段。比如,compile、test、packageinstall、deploy 等。如果沒有指定 <phase>,插件的執(zhí)行目標(biāo)(goal)不會自動綁定到任何生命周期階段,必須手動調(diào)用。
<goals>: 一個或多個 <goal> 標(biāo)簽,指定插件的具體目標(biāo)(或任務(wù)),如 compile、test、package 等。
<configuration>: 為該執(zhí)行配置插件的特定參數(shù)。配置項會覆蓋 <plugin> 元素中的<configuration>部分。

10.項目構(gòu)建總結(jié) (1)<repackage> 目標(biāo)的作用

(1)重新打包現(xiàn)有的 JAR 或 WAR:它將現(xiàn)有的 JAR 或 WAR 文件重新打包成一個可執(zhí)行的 JAR 或 WAR。這意味著這個 JAR 或 WAR 包包含了所有的應(yīng)用程序代碼和依賴,并且可以通過 java -jar 命令直接運(yùn)行。

(2)添加 Spring Boot 啟動器:repackage 目標(biāo)會在生成的 JAR 中添加一個 Spring-Boot-Loader 作為啟動器,這個啟動器負(fù)責(zé)處理應(yīng)用程序的啟動和依賴加載。

(3)簡化部署:通過創(chuàng)建一個可執(zhí)行的 JAR 文件,可以大大簡化 Spring Boot 應(yīng)用程序的部署過程,因為不需要將應(yīng)用程序部署到外部的應(yīng)用服務(wù)器中。

(2)repackage目標(biāo)的常用配置參數(shù)

在使用 <goal>repackage</goal> 時,可以通過<configuration>元素進(jìn)行多種配置。以下是一些常用的配置參數(shù):

  • <classifier>: 生成可執(zhí)行 JAR 的分類器(例如:exec)。這會影響最終 JAR 文件的名稱。
  • <mainClass>: 指定主類(即 public static void main(String[] args) 所在的類)。如果沒有指定,插件會嘗試自動檢測。
  • <layout>: 指定重新打包 JAR 的布局(例如:JAR、WAR、ZIP、DIR 等)。默認(rèn)為 JAR。
  • <outputDirectory>: 指定重新打包的 JAR 文件的輸出目錄。默認(rèn)為項目的構(gòu)建目錄。
  • <skip>: 如果設(shè)置為 true,則跳過重新打包階段。
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>3.1.2</version>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal> <!-- 這是 repackage 目標(biāo) -->
                    </goals>
                    <configuration>
                        <mainClass>com.example.MyApplication</mainClass> <!-- 指定主類 -->
                        <classifier>exec</classifier> <!-- 設(shè)置生成的可執(zhí)行 JAR 文件的分類器 -->
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

11.基礎(chǔ)打包構(gòu)建示例

    <build>
        <!-- 設(shè)置構(gòu)建的 jar 包名 -->
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <!-- 打包 -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring.boot.version}</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal> <!-- 將引入的 jar 打入其中 -->
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

到此這篇關(guān)于SpringBoot項目構(gòu)建Maven標(biāo)簽及屬性用法詳解的文章就介紹到這了,更多相關(guān)SpringBoot Maven標(biāo)簽內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論