Spring Boot Maven Plugin -- repackage鐩?爣

本文详细介绍了 Spring Boot Maven 插件的使用方法,包括如何配置插件以实现 Jar 包重新打包、排除依赖、设置 Main-Class 以及使用不同的布局类型等。此外还讲解了如何指定 classifier 生成不同类型的包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

绠€浠?/span>

銆€銆€Spring Boot Maven Plugin鎻掍欢鎻愪緵spring boot鍦╩aven涓殑鏀寔銆傚厑璁镐綘鎵撳寘鍙繍琛岀殑jar鍖呮垨war鍖呫€?/p>

銆€銆€鎻掍欢鎻愪緵浜嗗嚑涓猰aven鐩爣鍜孲pring Boot 搴旂敤涓€璧峰伐浣溿€傛€荤殑鏈夛細

  • spring-boot:repackage
  • spring-boot:run
  • spring-boot:start and spring-boot:stop 
  • spring-boot:build-info

銆€銆€repackage锛氬垱寤轰竴涓嚜鍔ㄥ彲鎵ц鐨刯ar鎴杦ar鏂囦欢銆傚畠鍙互鏇挎崲甯歌鐨刟rtifact锛屾垨鑰呯敤涓€涓崟鐙殑classifier闄勫睘鍦╩aven鏋勫缓鐨勭敓鍛藉懆鏈熶腑銆?/p>

銆€銆€涓嬮潰鎴戜滑璇︾粏鐪嬩笅repackage杩欎釜鐩爣銆?/p>

涓€銆佺畝鍗曞紩鐢?/span>

 銆€銆€鐢ㄤ簡閲嶆柊鎵撳寘搴旂敤绋嬪簭锛屾垜浠渶瑕佸湪pom.xml鏂囦欢涓姞涓€涓畝鍗曠殑寮曠敤鍒癝pring Boot Maven Plugin鎻掍欢涓紝浠g爜濡備笅锛歳epaceage 鏈€绠€鍗曠殑缁撴瀯

 1 <build>
 2   ...
 3   <plugins>
 4     ...
 5     <plugin>
 6       <groupId>org.springframework.boot</groupId>
 7       <artifactId>spring-boot-maven-plugin</artifactId>
 8       <version>1.5.7.RELEASE</version>
 9       <executions>
10         <execution>
11           <goals>
12             <goal>repackage</goal>
13           </goals>
14         </execution>
15       </executions>
16     </plugin>
17     ...
18   </plugins>
19   ...
20 </build>
repaceage 鏈€绠€鍗曠殑缁撴瀯

浜屻€佸墧闄や笉闇€瑕佺殑渚濊禆

銆€銆€杩欎釜渚嬪瓙閲嶆柊鎵撳寘浜嗕竴涓猨ar鍖呮垨war鍖咃紝杩欎釜jar鍖呮垨war鍖呰鏋勫缓浜巑aven鐢熷懡鍛ㄦ湡鐨刾ackage闃舵锛屽寘鎷畾涔夊湪宸ョ▼涓殑浠讳綍渚濊禆锛堝寘鎷瑂cope涓簆rovided锛夈€傚鏋滄湁涓€浜涗緷璧栨ā鍧楅渶瑕佽鎺掗櫎鎺夛紝鍙互浣跨敤涓€涓猠xclude鐨勯€夐」銆?/p>

銆€銆€榛樿鎯呭喌涓嬶紝repackage鍜宺un杩欎袱涓猰aven鐩爣浼氬寘鎷畾涔夊湪宸ョ▼涓殑浠讳綍渚濊禆銆備竴浜涗緷璧栬瑕佹眰浠庡彲鎵цjar鍖呬腑鎺掗櫎銆備笅闈㈡湁涓夌鏂瑰紡鍙互鍦ㄥ寘杩愯鏃舵帓闄や緷璧栨ā鍧椼€?/p>

銆€銆€鏂瑰紡1锛?鎺掗櫎涓€涓叿浣撶殑maven 妯″潡锛岄€氳繃鍞竴鐨刧roupId鍜宎rtifactId缁勫悎鏉ュ疄鐜般€傦紙濡傛灉鏈夊繀瑕侊紝鍙互鍔犲叆classifier鏉ュ敮涓€纭銆傦級

 1 <project>
 2   ...
 3   <build>
 4     ...
 5     <plugins>
 6       ...
 7       <plugin>
 8         <groupId>org.springframework.boot</groupId>
 9         <artifactId>spring-boot-maven-plugin</artifactId>
10         <version>1.5.6.RELEASE</version>
11         <configuration>
12           <excludes>
13             <exclude>
14               <groupId>com.foo</groupId>
15               <artifactId>bar</artifactId>
16             </exclude>
17           </excludes>
18         </configuration>
19         ...
20       </plugin>
21       ...
22     </plugins>
23     ...
24   </build>
25   ...
26 </project>
鎺掗櫎涓€涓叿浣撶殑maven妯″潡

銆€銆€鏂瑰紡2锛氭帓闄ゅ拰鈥滄寚瀹氱殑artifactId鈥濈浉绗︾殑鎵€鏈塵aven妯″潡銆?/p>

 1 <project>
 2   ...
 3   <build>
 4     ...
 5     <plugins>
 6       ...
 7       <plugin>
 8         <groupId>org.springframework.boot</groupId>
 9         <artifactId>spring-boot-maven-plugin</artifactId>
10         <version>1.5.6.RELEASE</version>
11         <configuration>
12           <excludeArtifactIds>my-lib,another-lib</excludeArtifactIds>
13         </configuration>
14         ...
15       </plugin>
16       ...
17     </plugins>
18     ...
19   </build>
20   ...
21 </project>
鎺掗櫎鍜屾寚瀹氱殑artifactId椤圭洰鐨勬墍鏈塵aven妯″潡

銆€銆€鏂瑰紡3锛氭帓闄ゅ睘浜庘€滄寚瀹氱殑groupId鈥濈殑鎵€鏈塵aven妯″潡銆?/p>

 1 <project>
 2   ...
 3   <build>
 4     ...
 5     <plugins>
 6       ...
 7       <plugin>
 8         <groupId>org.springframework.boot</groupId>
 9         <artifactId>spring-boot-maven-plugin</artifactId>
10         <version>1.5.6.RELEASE</version>
11         <configuration>
12           <excludeGroupIds>com.foo</excludeGroupIds>
13         </configuration>
14         ...
15       </plugin>
16       ...
17     </plugins>
18     ...
19   </build>
20   ...
21 </project>
鎺掗櫎灞炰簬鎸囧畾鐨刧roupId鐨勬墍鏈塵aven妯″潡

涓夈€侀噸鍐檓anifest銆€

銆€銆€杩欎釜鎻掍欢杩樺彲浠ラ噸鍐欓」鐩殑manifest 锛堝彲杩愯jar鍖呯殑MANIFEST.MF锛夛紝鐗瑰埆鏄鐞哅ain-Class鍜孲tart-Class鍚姩绫汇€傚鏋滈粯璁ょ殑閰嶇疆涓嶈兘婊¤冻闇€姹傦紝鎴戜滑鍙互鍦ㄨ繖閲屽仛閰嶇疆銆傞€氳繃鎻掍欢鐨?span style="color: #ff0000">layout灞炴€у彲浠ョ‘瀹炲湴鎺у埗Main-Class銆?/p>

 1 <build>
 2   ...
 3   <plugins>
 4     ...
 5     <plugin>
 6       <groupId>org.springframework.boot</groupId>
 7       <artifactId>spring-boot-maven-plugin</artifactId>
 8       <version>1.5.7.RELEASE</version>
 9       <configuration>
10         <mainClass>${start-class}</mainClass>
11         <layout>ZIP</layout>
12       </configuration>
13       <executions>
14         <execution>
15           <goals>
16             <goal>repackage</goal>
17           </goals>
18         </execution>
19       </executions>
20     </plugin>
21     ...
22   </plugins>
23   ...
24 </build>
repackage mainClass

銆€銆€鎵ц鎵撳寘鍛戒护锛歮vn package spring-boot:repackage銆傛敞鎰忥細杩欓噷涓嶈兘鍐欐垚mvn spring-boot:repackage銆傚惁鍒欎細鎶ource must refer to an existing file寮傚父銆?a href="http://blog.youkuaiyun.com/taiyangdao/article/details/75519166">

銆€銆€layout灞炴€ч粯璁ゆ牴鎹產rchive type锛坖ar or war锛夎€屽畾銆傛€荤殑鏈?涓被鍨嬶細

  • JAR锛氬父瑙勭殑鍙墽琛宩ar鍖呯殑甯冨眬銆?/li>
  • WAR锛氬彲鎵цwar鍖呯殑甯冨眬銆?/li>
  • ZIP锛堝拰DIR涓€鏍凤級锛氬拰浣跨敤PropertiesLauncher鐨刯ar鍖呭竷灞€涓€鏍枫€?/li>
  • MODULE:鍖呮嫭渚濊禆鍖咃紙鎺掗櫎scope涓簆rovided鐨勪緷璧栧寘锛夊拰椤圭洰璧勬簮
  • NONE:鍖呮嫭鎵€鏈夌殑渚濊禆鍖呭拰椤圭洰璧勬簮銆?/li>

鍥涖€佸埄鐢╟lassifier鍒嗙浠g爜鍖呭拰渚濊禆鍖?/span>

銆€銆€褰撹嚜宸卞啓椤圭洰闇€瑕佸彂甯冨嚭鍘荤粰鍒汉渚濊禆鏃讹紝灏卞彧闇€瑕佽嚜宸卞啓鐨勪唬鐮佹墦鍖咃紝渚濊禆鐨勫寘涓嶈兘鎵撹繘鏉ャ€傚惁鍒欐渶鍚庡埆浜哄湪鐢ㄤ綘鎻愪緵鐨勫寘鏃讹紝灏变細鍑虹幇閲嶅鍖咃紝瀵艰嚧鏈€鍚庢墦鍖呮椂鍖呬細闈炲父宸ㄥぇ銆?/p>

銆€銆€鍦ㄨ繖涓猄pring Boot Maven Plugin杩欎釜鎻掍欢涓嬶紝鎴戜滑鍙渶瑕佹彁渚沜lassifier鍗冲彲瀹炵幇杩欎釜鍔熻兘銆傚叿浣撳涓嬶細

 1 <project>
 2   ...
 3   <build>
 4     ...
 5     <plugins>
 6       ...
 7       <plugin>
 8         <groupId>org.springframework.boot</groupId>
 9         <artifactId>spring-boot-maven-plugin</artifactId>
10         <version>1.5.7.RELEASE</version>
11         <executions>
12           <execution>
13             <goals>
14               <goal>repackage</goal>
15             </goals>
16             <configuration>
17               <classifier>exec</classifier>
18             </configuration>
19           </execution>
20         </executions>
21         ...
22       </plugin>
23       ...
24     </plugins>
25     ...
26   </build>
27   ...
28 </project>
repackage classifier

 

銆€銆€鍠滄璇峰叧娉ㄦ垜鐨勫崥瀹?-澹.鐔娿€?/p>

 

<think>好的,我现在需要回答用户关于`spring-boot-maven-plugin`的功能和用途的问题。首先,我需要回忆一下之用户提供的引用内容,尤其是引用[1]、[2]和[3],这些内容提到了该插件在Spring Boot项目中的作用,比如打包、解决配置问题以及与其他插件的区别。 用户的问题很明确,想知道这个插件的功能和用途。根据引用[1],当注释掉这个插件后,可能无法正确打包可执行的JAR,这说明它的主要作用之一是与打包相关。引用[3]提到它专门用于Spring Boot项目,生成可执行的fat JAR,包含所有依赖项,而maven-jar-plugin生成的是普通JAR。所以需要强调这个插件的打包功能,特别是创建可执行JAR的能力。 另外,引用[2]中提到了版本配置的问题,如果未指定版本可能会报错,这说明插件版本管理的重要性,可能需要提到版本继承或指定版本号的方法。但用户的问题主要是功能和用途,所以这部分可能作为补充信息。 接下来,我需要组织回答结构。首先,概述插件的作用,然后分点详细说明每个功能,比如打包可执行JAR、依赖管理、自定义配置、版本管理等。每个功能点需要结合引用中的例子,比如引用[1]中的配置示例,说明插件在pom.xml中的配置方式。 同时,用户可能想知道为什么需要使用这个插件而不是其他插件,如maven-assembly-plugin。根据引用[3],需要比较这些插件的不同,指出spring-boot-maven-plugin的优势在于专为Spring Boot设计,自动处理依赖和启动器,而其他插件需要更多配置。这部分可以作为功能点之一,说明其自动化优势。 还需要注意用户可能遇到的常见问题,比如配置错误导致插件报红,如引用[2]中的情况,这时需要正确的版本配置。虽然用户的问题不直接涉及错误处理,但提到版本管理可以增强回答的全面性。 最后,总结插件的核心作用,并生成相关问题,比如与其他插件的区别、配置方法、常见错误处理等,引导用户进一步了解。相关问题需要参考之用户提问的模式,如比较类、配置类、优化类问题。 需要确保回答符合系统级指令,使用正确的中文,行内公式用$...$,但在这个问题中可能涉及较少数学内容,但如果有代码块或配置示例,需要用反引号包裹。同时,引用标识要自然地添加在相关段落末尾,如引用[^1]、[^2]、[^3]。 现在,整合这些信息,确保结构清晰,分点说明,每个功能点结合引用中的例子,并自然地添加引用标记。最后生成的相关问题要围绕插件的功能、比较、配置和优化展开。</think>### spring-boot-maven-plugin 的功能及作用 `spring-boot-maven-plugin` 是 Spring Boot 项目的核心构建插件,专为简化 Spring Boot 应用的打包、运行和部署流程设计。以下是其核心功能和用途: --- #### 1. **生成可执行 Fat JAR** - **功能**:将项目代码、依赖库、资源文件及内嵌服务器(如 Tomcat)打包成一个独立的、可执行的 *Fat JAR* 文件。用户可直接通过 `java -jar` 命令运行此文件,无需额外配置外部服务器或依赖路径。 - **对比普通 JAR**:传统 `maven-jar-plugin` 生成的 JAR 仅包含项目自身的代码和资源,缺少依赖库[^3]。 - **配置示例**: ```xml <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${project.parent.version}</version> <!-- 版本继承 --> </plugin> </plugins> </build> ``` 若未指定版本(如引用[2]),可能导致依赖解析失败,需显式声明版本号或继承父项目配置[^2]。 --- #### 2. **依赖管理自动化** - **自动内嵌依赖**:插件通过 `<executable>true</executable>` 配置,自动将 `spring-boot-starter` 系列依赖内嵌到 JAR 中,避免手动处理依赖冲突或路径问题。 - **启动类识别**:自动识别 `main` 方法所在的启动类,无需在 `MANIFEST.MF` 中手动指定。 --- #### 3. **提供 Spring Boot 专属构建命令** - **Maven 生命周期集成**:支持以下命令: - `mvn spring-boot:run`:直接运行 Spring Boot 应用,适用于开发调试。 - `mvn spring-boot:repackage`:重新打包已存在的 JAR,生成可执行版本(覆盖原文件)。 --- #### 4. **自定义打包配置** - **排除特定依赖**:通过 `<excludes>` 标签移除不必要的依赖,例如: ```xml <configuration> <excludes> <exclude> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclude> </excludes> </configuration> ``` - **分层打包优化**(Layer Tools):将依赖、资源、应用代码分层打包,提升 Docker 镜像构建效率。 --- #### 5. **版本管理与兼容性** - **与 Spring Boot 版本绑定**:插件版本通常与 Spring Boot 父项目版本一致(通过 `${project.parent.version}` 继承),避免兼容性问题[^1]。 - **解决配置报错**:如引用[2]中未指定版本导致报红,需检查版本是否缺失或与 Spring Boot 版本不匹配。 --- ### 总结 `spring-boot-maven-plugin` 的核心价值在于为 Spring Boot 应用提供 **“开箱即用”** 的构建支持,简化从开发到部署的全流程。其生成的 Fat JAR 是微服务架构中容器化部署的基础[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值