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

全面詳解Maven打包及其相關(guān)插件和高級(jí)特性

 更新時(shí)間:2023年05月10日 11:38:46   作者:阿Qoder  
這篇文章主要為大家介紹了Maven打包及其相關(guān)插件和高級(jí)特性的全面詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

正文

在Java項(xiàng)目開(kāi)發(fā)中,Maven是非常重要的構(gòu)建工具之一,它可以幫助我們管理項(xiàng)目的依賴、構(gòu)建和發(fā)布。本文將通過(guò)以下兩個(gè)方面來(lái)介紹Maven打包相關(guān)的內(nèi)容:

  • Maven打包相關(guān)的相關(guān)插件
  • Maven構(gòu)建的高級(jí)特性

1. Maven打包相關(guān)插件

1.1 maven-jar-plugin

maven-jar-plugin是用于將Java項(xiàng)目編譯、打包生成JAR文件的插件,它是Maven構(gòu)建生命周期中的一個(gè)默認(rèn)插件。在項(xiàng)目的pom.xml文件中,你可以配置該插件的相關(guān)參數(shù),例如:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-jar-plugin</artifactId>
      <version>3.2.0</version>
      <configuration>
        <finalName>${project.artifactId}-${project.version}</finalName>
      </configuration>
    </plugin>
  </plugins>
</build>

1.2 maven-shade-plugin

maven-shade-plugin可以將項(xiàng)目的所有依賴和資源文件打包成一個(gè)“胖”JAR文件,這種JAR文件包含了項(xiàng)目運(yùn)行所需的所有組件,方便于部署和運(yùn)行。在pom.xml文件中,你可以配置該插件的相關(guān)參數(shù),例如:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-shade-plugin</artifactId>
      <version>3.2.4</version>
      <executions>
        <execution>
          <phase>package</phase>
          <goals>
            <goal>shade</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

可能大家對(duì)這個(gè)不是很了解,這個(gè)jar包很有意思,一般我們多用于打包SDK給別人用時(shí),可以用這個(gè)打包。他可以干什么事情呢?

  • 解決依賴項(xiàng)沖突

當(dāng)您的項(xiàng)目中有多個(gè)依賴項(xiàng),其中一些依賴項(xiàng)可能存在版本沖突,這時(shí)Maven Shade Plugin可以幫助您解決這些沖突。為此,您需要將插件配置添加到您的pom.xml文件中,并使用relocations元素來(lái)重定向依賴項(xiàng)。例如:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-shade-plugin</artifactId>
      <version>3.2.1</version>
      <configuration>
        <createDependencyReducedPom>false</createDependencyReducedPom>
        <relocations>
          <relocation>
            <pattern>org.slf4j</pattern>
            <shadedPattern>com.example.shaded.slf4j</shadedPattern>
          </relocation>
        </relocations>
      </configuration>
      <executions>
        <execution>
          <phase>package</phase>
          <goals>
            <goal>shade</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

在上面的配置中,我們使用relocations元素將所有來(lái)自org.slf4j包的依賴項(xiàng)重定向(替換)到com.example.shaded.slf4j包中。

  • 排除無(wú)用的類和資源

Maven Shade Plugin還可以排除無(wú)用的類和資源,以減少打包后的文件大小。為此,您需要使用artifactSet元素來(lái)指定要排除的依賴項(xiàng),使用filters元素來(lái)指定要排除的類和資源。例如:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-shade-plugin</artifactId>
      <version>3.2.1</version>
      <configuration>
        <createDependencyReducedPom>false</createDependencyReducedPom>
        <artifactSet>
          <excludes>
            <exclude>org.apache.logging.log4j:log4j-core</exclude>
          </excludes>
        </artifactSet>
        <filters>
          <filter>
            <artifact>*:*</artifact>
            <excludes>
              <exclude>**/*.class</exclude>
              <exclude>**/*.properties</exclude>
            </excludes>
          </filter>
        </filters>
      </configuration>
      <executions>
        <execution>
          <phase>package</phase>
          <goals>
            <goal>shade</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

在上面的配置中,我們使用artifactSet元素將org.apache.logging.log4j:log4j-core依賴項(xiàng)排除在打包范圍之外,并使用filters元素將所有.class和.properties文件排除在打包范圍之外。

1.3 spring-boot-maven-plugin

spring-boot-maven-plugin是Spring Boot項(xiàng)目專用的構(gòu)建插件,它可以將項(xiàng)目打包成一個(gè)可執(zhí)行的JAR文件,內(nèi)置了一個(gè)嵌入式的Servlet容器,方便于開(kāi)發(fā)、測(cè)試和部署。在pom.xml文件中,你可以配置該插件的相關(guān)參數(shù),例如:

<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
      <version>2.5.5</version>
      <executions>
        <execution>
          <goals>
            <goal>repackage</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

2. Maven構(gòu)建的高級(jí)特性

2.1 使用profiles

Maven的profiles功能允許我們根據(jù)不同的環(huán)境(如開(kāi)發(fā)、測(cè)試、生產(chǎn)等)定制不同的構(gòu)建配置。在項(xiàng)目的pom.xml文件中,你可以定義多個(gè)profiles,例如:

<profiles>
  <profile>
    <id>dev</id>
    <activation>
      <activeByDefault>true</activeByDefault>
    </activation>
    <!-- 配置開(kāi)發(fā)環(huán)境的構(gòu)建參數(shù) -->
  </profile>
  <profile>
    <id>prod</id>
    <!-- 配置生產(chǎn)環(huán)境的構(gòu)建參數(shù) -->
  </profile>
</profiles>

在構(gòu)建時(shí),你可以通過(guò)-P參數(shù)激活指定的profile,例如:mvn clean package -Pprod。

2.2 profiles的傳遞性

Maven的profiles具有傳遞性,當(dāng)一個(gè)項(xiàng)目依賴于另一個(gè)項(xiàng)目時(shí),可以將profiles從依賴的項(xiàng)目傳遞到當(dāng)前項(xiàng)目。為了實(shí)現(xiàn)這一功能,需要在依賴項(xiàng)目的pom.xml文件中定義profiles,并在當(dāng)前項(xiàng)目的pom.xml文件中引用這些profiles,例如:

<!-- 依賴項(xiàng)目的pom.xml -->
<profiles>
  <profile>
    <id>shared</id>
    <properties>
      <shared.property>value</shared.property>
    </properties>
  </profile>
</profiles>
<!-- 當(dāng)前項(xiàng)目的pom.xml -->
<profiles>
  <profile>
    <id>dev</id>
    <activation>
      <activeByDefault>true</activeByDefault>
    </activation>
    <properties>
      <shared.property>${shared.property}</shared.property>
    </properties>
  </profile>
  <profile>
    <id>prod</id>
    <properties>
      <shared.property>${shared.property}</shared.property>
    </properties>
  </profile>
</profiles>

2.3 打包時(shí)過(guò)濾文件

在項(xiàng)目構(gòu)建過(guò)程中,我們可以通過(guò)Maven的資源過(guò)濾功能對(duì)資源文件進(jìn)行處理。例如,根據(jù)不同的環(huán)境替換配置文件中的變量。在項(xiàng)目的pom.xml文件中,可以配置資源過(guò)濾規(guī)則:

<build>
  <resources>
    <resource>
      <directory>src/main/resources</directory>
      <filtering>true</filtering>
    </resource>
  </resources>
  <filters>
    <filter>src/main/filters/${env}.properties</filter>
  </filters>
</build>

在上述配置中,${env}.properties文件包含了不同環(huán)境下的變量定義。在構(gòu)建時(shí),使用-Denv=xxx參數(shù)指定環(huán)境,如:mvn clean package -Denv=prod。

結(jié)論

Maven是一個(gè)功能強(qiáng)大的Java項(xiàng)目構(gòu)建工具。通過(guò)使用不同的Maven插件,可以輕松地將項(xiàng)目打包成JAR文件,無(wú)論是普通的JAR還是包含所有依賴的“胖”JAR。此外,Maven還提供了高級(jí)特性,如profiles和資源過(guò)濾,以便根據(jù)不同的環(huán)境定制構(gòu)建配置。

在實(shí)際項(xiàng)目中,我們可以根據(jù)需要選擇適當(dāng)?shù)牟寮团渲?,以?shí)現(xiàn)高效的項(xiàng)目管理和構(gòu)建。希望本文能為你在使用Maven打包時(shí)提供一些有益的參考。

希望大家能夠喜歡我的文章,以上內(nèi)容就到這里,感謝各位看官老爺們的觀看,如果覺(jué)得寫得好,給個(gè)贊支持一下哈?。?!

更多關(guān)于Maven打包插件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java實(shí)戰(zhàn)之校園外賣點(diǎn)餐系統(tǒng)的實(shí)現(xiàn)

    Java實(shí)戰(zhàn)之校園外賣點(diǎn)餐系統(tǒng)的實(shí)現(xiàn)

    這篇文章主要介紹了如何利用Java實(shí)現(xiàn)簡(jiǎn)易的校園外賣點(diǎn)餐系統(tǒng),文中采用的技術(shù)有:JSP、Spring、SpringMVC、MyBatis 等,感興趣的可以了解一下
    2022-03-03
  • MyBatis中多對(duì)一和一對(duì)多數(shù)據(jù)的處理方法

    MyBatis中多對(duì)一和一對(duì)多數(shù)據(jù)的處理方法

    這篇文章主要介紹了MyBatis中多對(duì)一和一對(duì)多數(shù)據(jù)的處理,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-01-01
  • mybatis查詢匹配機(jī)制圖文詳解

    mybatis查詢匹配機(jī)制圖文詳解

    這篇文章主要給大家介紹了關(guān)于mybatis查詢匹配機(jī)制的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Java運(yùn)算符從見(jiàn)過(guò)到掌握下

    Java運(yùn)算符從見(jiàn)過(guò)到掌握下

    計(jì)算機(jī)的最基本用途之一就是執(zhí)行數(shù)學(xué)運(yùn)算,作為一門計(jì)算機(jī)語(yǔ)言,Java也提供了一套豐富的運(yùn)算符來(lái)操縱變量,本篇對(duì)大家的學(xué)習(xí)或工作具有一定的價(jià)值,緊接上篇,需要的朋友可以參考下
    2021-09-09
  • java 非常好用的反射框架Reflections介紹

    java 非常好用的反射框架Reflections介紹

    這篇文章主要介紹了java 反射框架Reflections的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • Kotlin內(nèi)存陷阱inline使用技巧示例詳解

    Kotlin內(nèi)存陷阱inline使用技巧示例詳解

    這篇文章主要為大家介紹了Kotlin內(nèi)存陷阱inline使用技巧示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • Springboot中的自定義攔截器及原理詳解

    Springboot中的自定義攔截器及原理詳解

    這篇文章主要介紹了Springboot中的自定義攔截器及原理詳解,攔截器主要是用于在用戶請(qǐng)求控制中,對(duì)于請(qǐng)求識(shí)別,鑒權(quán),以及區(qū)分資源是否可以被目標(biāo)方法調(diào)用的安全機(jī)制,需要的朋友可以參考下
    2023-12-12
  • Java 中HashCode作用_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java 中HashCode作用_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要介紹了Java 中HashCode作用以及hashcode對(duì)于一個(gè)對(duì)象的重要性,對(duì)java中hashcode的作用相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧
    2017-05-05
  • SpringBoot獲取yml和properties配置文件的內(nèi)容

    SpringBoot獲取yml和properties配置文件的內(nèi)容

    這篇文章主要為大家詳細(xì)介紹了SpringBoot獲取yml和properties配置文件的內(nèi)容,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Spring中的事務(wù)傳播行為示例詳解

    Spring中的事務(wù)傳播行為示例詳解

    這篇文章主要給大家介紹了關(guān)于Spring中事務(wù)傳播行為的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08

最新評(píng)論