最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

maven的5種打包方式小結(jié)

 更新時(shí)間:2024年06月03日 11:45:05   作者:????????健康平安的活著  
本文主要介紹了maven的5種打包方式小結(jié),主要是幾種插件打包,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

一 問(wèn)題闡述

1.1 概述 

在講打包方式之前,首先來(lái)說(shuō)最近踩到的坑,在idea新建的maven項(xiàng)目,在pom文件中會(huì)自動(dòng)生成一段插件的管理器:

2.我使用maven打包插件maven-assembly-plugin,將其配置添加到<plugManagement><plugs>.. ..</plugs></plugManagement>中間。

3.執(zhí)行maven 打包后:報(bào)沒(méi)有主清單,如下圖所示:

將網(wǎng)上查找了個(gè)遍,痛苦到懷疑人生,也沒(méi)有發(fā)現(xiàn)什么端倪,感覺(jué)配置的很正確,并且在eclipse中都在項(xiàng)目中用過(guò)。

1.2 原因

先來(lái)了解一下pluginManagement:

pluginManagement是表示插件聲明,即你在項(xiàng)目中的pluginManagement下聲明了插件,Maven不會(huì)加載該插件,pluginManagement聲明可以被繼承。

pluginManagement一般是用來(lái)在父POM中定義,提供給子POM使用,子POM也可以覆蓋這個(gè)定義,而且你在父POM中定義了版本之后,子模塊中直接應(yīng)用groupId和artifactId,而不用指定版本,同時(shí)也方便統(tǒng)一管理;而在父POM中的pluginManagement并不會(huì)介入到Maven的生命周期。

plugins就是直接引入一個(gè)plugin,而且可以綁定到Maven相關(guān)的生命周期上。

pluginManagement主要是為了統(tǒng)一管理插件,確保所有子POM使用的插件版本保持一致,類(lèi)似dependencies和dependencyManagement。

總結(jié)一句話(huà):pluginManagement標(biāo)簽中聲名的plug插件不參與maven的生命周期,不會(huì)被加載,但可以通過(guò)子類(lèi)繼承后,子類(lèi)應(yīng)用來(lái)使用。

這就是為何在plugManagemnet中配置maven-assembly-plugin插件后不起作用,找不到主類(lèi)的原因。

http://www.fzitv.net/program/322128g7x.htm

1.3 解決辦法

1.將plugManagement標(biāo)簽里內(nèi)容清空,自定義的的打包插件配置在</plugmanagement>標(biāo)簽之外。

2.重新打包,執(zhí)行jar包

執(zhí)行成功ok!

二 Maven常用打包插件

2.1 maven-assembly-plugin插件打包

作用:將自己項(xiàng)目中的代碼和資源,還包含了所有依賴(lài)包的內(nèi)容打成一個(gè)jar包。

1.pom文件的配置:如果有plugManagemnet則在其外面添加如下代碼

<!--自定義打包方式-->
<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.5.5</version>
    <configuration>
      <archive>
        <manifest>
          <mainClass>com.ljf.test.Ha</mainClass>
        </manifest>
      </archive>
      <descriptorRefs>
        <descriptorRef>jar-with-dependencies</descriptorRef>
      </descriptorRefs>
    </configuration>
    <executions>
      <execution>
        <id>make-assembly</id>
        <phase>package</phase>
        <goals>
          <goal>single</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
</plugins>

2.截圖如下: 

2.生成jar包的結(jié)構(gòu)

打包后會(huì)在target目錄下生成一個(gè)xxx-jar-with-dependencies.jar文件,這個(gè)文件不但包含了自己項(xiàng)目中的代碼和資源,還包含了所有依賴(lài)包的內(nèi)容。所以可以直接通過(guò)java -jar來(lái)運(yùn)行。

2.2 maven-shade-plugin插件打包

作用:和maven-assembly-plugin插件的作用一樣,將自己項(xiàng)目的代碼資源以及依賴(lài)第三方的資源一起打成一個(gè)jar包,不過(guò)如果項(xiàng)目中用到spring Framework,用maven-assembly-plugin這種方式打出來(lái)的包運(yùn)行時(shí)會(huì)出錯(cuò),使用maven-shade-plugin插件可以處理這個(gè)問(wèn)題

1.pom文件的配置:如果有plugManagemnet則在標(biāo)簽外,添加如下代碼

<!--自定義打包方式-->
<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>2.4.1</version>
    <executions>
      <execution>
        <phase>package</phase>
        <goals>
          <goal>shade</goal>
        </goals>
        <configuration>
          <transformers>
            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
              <mainClass>com.ljf.test.Ha</mainClass>
            </transformer>
          </transformers>
        </configuration>
      </execution>
    </executions>
  </plugin>
</plugins>

2..執(zhí)行jar包后的結(jié)構(gòu)

3.執(zhí)行打包后在target目錄下會(huì)生成兩個(gè)jar包,注意不是original-xxx.jar文件,而是另外一個(gè)。和maven-assembly-plugin一樣,生成的jar文件包含了所有依賴(lài),所以可以直接運(yùn)行。

2.3 maven-jar-plugin和maven-dependency-plugin插件打包

作用:將執(zhí)行jar包和依賴(lài)包分開(kāi)(依賴(lài)包放在lib目錄下),且位于同一級(jí)目錄

2.3.1 插件功能介紹

1.maven-jar-plugin用于生成META-INF/MANIFEST.MF文件的部分內(nèi)容,<mainClass>com.xxg.Main</mainClass>指定MANIFEST.MF中的Main-Class,<addClasspath>true</addClasspath>會(huì)在MANIFEST.MF加上Class-Path項(xiàng)并配置依賴(lài)包,<classpathPrefix>lib/</classpathPrefix>指定依賴(lài)包所在目錄。

2.maven-dependency-plugin插件:maven-jar-plugin用于生成META-INF/MANIFEST.MF文件的部分內(nèi)容,只是生成MANIFEST.MF文件還不夠,maven-dependency-plugin插件用于將依賴(lài)包拷貝到<outputDirectory>${project.build.directory}/lib</outputDirectory>指定的位置,即lib目錄下。

2.3.2 pom文件的配置

1.pom文件的配置:如果有plugManagemnet標(biāo)簽,則在標(biāo)簽后面添加如下代碼

<!--自定義打包方式-->
<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.6</version>
    <configuration>
      <archive>
        <manifest>
          <addClasspath>true</addClasspath>
          <classpathPrefix>lib/</classpathPrefix>
          <mainClass>com.ljf.test.Ha</mainClass>
        </manifest>
      </archive>
    </configuration>
  </plugin>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.10</version>
    <executions>
      <execution>
        <id>copy-dependencies</id>
        <phase>package</phase>
        <goals>
          <goal>copy-dependencies</goal>
        </goals>
        <configuration>
          <outputDirectory>${project.build.directory}/lib</outputDirectory>
        </configuration>
      </execution>
    </executions>
  </plugin>
</plugins>

注意:${project.build.directory}/lib 這個(gè)配置不需要修改,拿來(lái)即用。這個(gè)地方是配置依賴(lài)包存儲(chǔ)的位置。“${project.build.directory}“ maven內(nèi)置的設(shè)置無(wú)需理會(huì)。

2.執(zhí)行jar包后的結(jié)構(gòu):執(zhí)行jar包后會(huì)在target目錄下生成jar包,并將依賴(lài)包拷貝到target/lib目錄下

3. 指定了Main-Class,有了依賴(lài)包,那么就可以直接通過(guò)java -jar xxx.jar運(yùn)行jar包。

2.4 appassembler-maven-plugin插件打包 

作用: 利用Maven的appassembler-maven-plugin插件,就可以實(shí)現(xiàn)自動(dòng)打包成可運(yùn)行的腳本,還可以跨平臺(tái)。(Windows/linux)

1.pom文件的配置

<plugins>
  <!-- 支持java1.8 -->
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
      <source>1.8</source>
      <target>1.8</target>
    </configuration>
  </plugin>
  <!-- -使用UTF-8編碼處理資源文件 -->
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <configuration>
      <encoding>UTF-8</encoding>
    </configuration>
  </plugin>
  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>appassembler-maven-plugin</artifactId>
    <version>1.2</version>
    <executions>
      <execution>
        <id>make-assembly</id>
        <phase>package</phase>
        <goals>
          <goal>assemble</goal>
        </goals>
      </execution>
    </executions>
    <configuration>
      <repositoryLayout>flat</repositoryLayout>
      <configurationDirectory>conf</configurationDirectory>
      <configurationSourceDirectory>src/main/resources</configurationSourceDirectory>
      <copyConfigurationDirectory>true</copyConfigurationDirectory>
      <includeConfigurationDirectoryInClasspath>true</includeConfigurationDirectoryInClasspath>
      <assembleDirectory>${project.build.directory}/${projectname}</assembleDirectory>
      <extraJvmArguments>-Xms256m -Xmx1024m -Xss1024k -XX:PermSize=128M
        -XX:MaxNewSize=256m -XX:MaxPermSize=128m</extraJvmArguments>
      <binFileExtensions>
        <unix>.sh</unix>
      </binFileExtensions>
      <platforms>
        <platform>windows</platform>
        <platform>unix</platform>
      </platforms>
      <repositoryName>lib</repositoryName>
      <programs>
        <program>
          <mainClass>${mainfunction}</mainClass>
          <name>startup</name>
        </program>
      </programs>
    </configuration>
  </plugin>
</plugins>

2.執(zhí)行mave package操作

3. 查看打包結(jié)果:

4.進(jìn)入bin目錄下

5.Windows 下執(zhí)行startup.bat,linux下執(zhí)行startup.sh,如下圖:

6.執(zhí)行腳本時(shí)候 后面可以添加參數(shù)。

2.5 Springboot+Maven:spring-boot-maven-plugin

 針對(duì)springboot和maven集成的項(xiàng)目,打成jar包,則需要使用springboot和maven集成好的打包插件:spring-boot-maven-plugin,例如特別是含有@SpringBootApplication注解的入口啟動(dòng)程序。截圖如下:

2.pom文件的配置

<plugins>
  <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>1.3.5.RELEASE</version>
    <configuration>
      <mainClass>com.springboot.data.es.App</mainClass>
    </configuration>
    <executions>
      <execution>
        <goals>
          <goal>repackage</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
</plugins>

3.截圖

 4.使用maven打成jar包:mvn clean package

5.打成jar包的結(jié)構(gòu),如下

6.執(zhí)行jar包:

參考網(wǎng)址:   http://www.fzitv.net/article/197968.htm

2.6 總結(jié)

不管通過(guò)何種方式打成jar包執(zhí)行,要想jar包能直接通過(guò)java -jar xxx.jar運(yùn)行,需要滿(mǎn)足:

1、在jar包中的META-INF/MANIFEST.MF中指定Main-Class,這樣才能確定程序的入口在哪里;

2、要能加載到依賴(lài)包。

到此這篇關(guān)于maven的5種打包方式小結(jié)的文章就介紹到這了,更多相關(guān)maven 打包 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 微信小程序 springboot后臺(tái)如何獲取用戶(hù)的openid

    微信小程序 springboot后臺(tái)如何獲取用戶(hù)的openid

    這篇文章主要介紹了微信小程序 springboot后臺(tái)如何獲取用戶(hù)的openid,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • 如何用java編寫(xiě)微信小程序消息提醒推送

    如何用java編寫(xiě)微信小程序消息提醒推送

    最近參與開(kāi)發(fā)的項(xiàng)目有用到微信模板消息推送,在這離記錄一下,下面這篇文章主要給大家介紹了關(guān)于如何用java編寫(xiě)微信小程序消息提醒推送的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • 一篇文章帶你入門(mén)Java Script

    一篇文章帶你入門(mén)Java Script

    這篇文章主要介紹了新手入門(mén)JavaScript的的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2021-08-08
  • Spring Boot 中的默認(rèn)異常處理機(jī)制解析(如 /error 接口)

    Spring Boot 中的默認(rèn)異常處理機(jī)制解析(如 /error 接口)

    SpringBoot通過(guò)/error接口默認(rèn)處理異常,使用BasicErrorController返回結(jié)構(gòu)化JSON或HTML錯(cuò)誤頁(yè)面,支持自定義ErrorAttributes、ControllerAdvice及錯(cuò)誤模板,配置項(xiàng)可調(diào)整錯(cuò)誤路徑和格式,本文給大家介紹Spring Boot 中的默認(rèn)異常處理機(jī)制解析,感興趣的朋友一起看看吧
    2025-07-07
  • Maven Plugins報(bào)錯(cuò)的正確解決方案

    Maven Plugins報(bào)錯(cuò)的正確解決方案

    文章介紹了如何解決Maven插件報(bào)錯(cuò)的問(wèn)題,建議在本地Maven倉(cāng)庫(kù)目錄中刪除報(bào)錯(cuò)的插件文件,然后在IDEA中刷新Maven以重新加載,同時(shí),作者還提到了一個(gè)無(wú)效的方法,即通過(guò)修改Maven的setting.xml文件添加鏡像源
    2026-03-03
  • spring集成mybatis實(shí)現(xiàn)mysql數(shù)據(jù)庫(kù)讀寫(xiě)分離

    spring集成mybatis實(shí)現(xiàn)mysql數(shù)據(jù)庫(kù)讀寫(xiě)分離

    本文通過(guò)實(shí)例代碼給大家介紹了spring集成mybatis實(shí)現(xiàn)mysql數(shù)據(jù)庫(kù)讀寫(xiě)分離,需要的朋友可以參考下
    2017-08-08
  • SpringBoot中Filter?bean如何添加到Servlet容器

    SpringBoot中Filter?bean如何添加到Servlet容器

    這篇文章主要介紹了SpringBoot中Filter bean是怎么被添加到Servlet容器中的,本文分步驟結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • Java中object類(lèi)常用方法及應(yīng)用場(chǎng)景詳解

    Java中object類(lèi)常用方法及應(yīng)用場(chǎng)景詳解

    這篇文章主要介紹了Java中object類(lèi)常用方法及應(yīng)用場(chǎng)景的相關(guān)資料,正確重寫(xiě)這些方法是面向?qū)ο笤O(shè)計(jì)的基本要求,有助于避免踩坑并提高代碼質(zhì)量,需要的朋友可以參考下
    2025-04-04
  • Java中泛型總結(jié)(推薦)

    Java中泛型總結(jié)(推薦)

    這篇文章主要介紹了Java中泛型總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • MyBatis版本升級(jí)導(dǎo)致OffsetDateTime入?yún)⒔馕霎惓?wèn)題復(fù)盤(pán)

    MyBatis版本升級(jí)導(dǎo)致OffsetDateTime入?yún)⒔馕霎惓?wèn)題復(fù)盤(pán)

    這篇文章主要介紹了MyBatis版本升級(jí)導(dǎo)致OffsetDateTime入?yún)⒔馕霎惓?wèn)題復(fù)盤(pán),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08

最新評(píng)論

建始县| 新宁县| 麻江县| 嘉义市| 昌乐县| 萍乡市| 自贡市| 平原县| 阜城县| 二手房| 呼图壁县| 兴隆县| 年辖:市辖区| 贵阳市| 陈巴尔虎旗| 东至县| 华坪县| 合水县| 攀枝花市| 霍城县| 冷水江市| 自贡市| 尼玛县| 昭苏县| 哈尔滨市| 综艺| 北京市| 金门县| 卢湾区| 武安市| 霍州市| 平武县| 大名县| 盐津县| 谷城县| 柳州市| 宜阳县| 镇江市| 瑞丽市| 马龙县| 竹溪县|