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

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

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

正文

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

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

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

1.1 maven-jar-plugin

maven-jar-plugin是用于將Java項目編譯、打包生成JAR文件的插件,它是Maven構(gòu)建生命周期中的一個默認(rèn)插件。在項目的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可以將項目的所有依賴和資源文件打包成一個“胖”JAR文件,這種JAR文件包含了項目運行所需的所有組件,方便于部署和運行。在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>

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

  • 解決依賴項沖突

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

<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元素將所有來自org.slf4j包的依賴項重定向(替換)到com.example.shaded.slf4j包中。

  • 排除無用的類和資源

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

<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依賴項排除在打包范圍之外,并使用filters元素將所有.class和.properties文件排除在打包范圍之外。

1.3 spring-boot-maven-plugin

spring-boot-maven-plugin是Spring Boot項目專用的構(gòu)建插件,它可以將項目打包成一個可執(zhí)行的JAR文件,內(nèi)置了一個嵌入式的Servlet容器,方便于開發(fā)、測試和部署。在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)建的高級特性

2.1 使用profiles

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

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

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

2.2 profiles的傳遞性

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

<!-- 依賴項目的pom.xml -->
<profiles>
  <profile>
    <id>shared</id>
    <properties>
      <shared.property>value</shared.property>
    </properties>
  </profile>
</profiles>
<!-- 當(dā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 打包時過濾文件

在項目構(gòu)建過程中,我們可以通過Maven的資源過濾功能對資源文件進行處理。例如,根據(jù)不同的環(huán)境替換配置文件中的變量。在項目的pom.xml文件中,可以配置資源過濾規(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)建時,使用-Denv=xxx參數(shù)指定環(huán)境,如:mvn clean package -Denv=prod。

結(jié)論

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

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

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

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

相關(guān)文章

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

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

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

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

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

    mybatis查詢匹配機制圖文詳解

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

    Java運算符從見過到掌握下

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

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

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

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

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

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

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

    Java 中HashCode作用_動力節(jié)點Java學(xué)院整理

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

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

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

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

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

最新評論