`
kanpiaoxue
  • 浏览: 1777367 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

springboot的多module打包问题(repackage)

 
阅读更多

 

 

我有个java的项目是maven管理的。maven的module结构如下:

 

hello
    |—— commons
    |—— dao
    |—— service
    |—— hello-web
    |—— hello-api

其中 hello-web 是非springboot的程序,普通的war的形式。

而 hello-api 则是基于springboot创建的。

要想使 hello-api 被打包成springboot的可执行jar,需要在 hello-api 的pom.xml添加如下的内容:

 

<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>2.0.7.RELEASE</version>
				<!-- <configuration>
					<mainClass>com.xx.webapps.api.main.WebappsApiBidMain</mainClass>
				</configuration> -->
				<executions>
					<execution>
						<goals>
							<goal>repackage</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>

 

这样运行 mvn clean package 的时候,hello-api 会被打包成springboot的执行jar,hello-web也不会受到影响,还是war的形式。

 

在springboot的官网里面对于repackage有说明,如下:

地址: https://docs.spring.io/spring-boot/docs/2.0.7.RELEASE/reference/htmlsingle/#build-tool-plugins-repackage-implementation

 

 

11.5 Creating an Executable Jar

We finish our example by creating a completely self-contained executable jar file that we could run in production. Executable jars (sometimes called “fat jars”) are archives containing your compiled classes along with all of the jar dependencies that your code needs to run.

To create an executable jar, we need to add the spring-boot-maven-plugin to our pom.xml. To do so, insert the following lines just below the dependencies section:

<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
		</plugin>
	</plugins>
</build>
[Note]

The spring-boot-starter-parent POM includes <executions> configuration to bind the repackage goal. If you do not use the parent POM, you need to declare this configuration yourself. See the plugin documentation for details.

Save your pom.xml and run mvn package from the command line, as follows:

$ mvn package

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building myproject 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] .... ..
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ myproject ---
[INFO] Building jar: /Users/developer/example/spring-boot-example/target/myproject-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:2.0.7.RELEASE:repackage (default) @ myproject ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

If you look in the target directory, you should see myproject-0.0.1-SNAPSHOT.jar. The file should be around 10 MB in size. If you want to peek inside, you can use jar tvf, as follows:

$ jar tvf target/myproject-0.0.1-SNAPSHOT.jar

You should also see a much smaller file named myproject-0.0.1-SNAPSHOT.jar.original in the target directory. This is the original jar file that Maven created before it was repackaged by Spring Boot.

To run that application, use the java -jar command, as follows:

$ java -jar target/myproject-0.0.1-SNAPSHOT.jar

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::  (v2.0.7.RELEASE)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.536 seconds (JVM running for 2.864)

As before, to exit the application, press ctrl-c.

 

 

参考资料:

https://www.cnblogs.com/thinking-better/p/7827368.html

https://www.baeldung.com/spring-boot-multiple-modules

https://blog.csdn.net/taiyangdao/article/details/75303181

https://docs.spring.io/spring-boot/docs/current/maven-plugin/repackage-mojo.html

https://docs.spring.io/spring-boot/docs/current/reference/html/build-tool-plugins.html#build-tool-plugins-maven-plugin

 

分享到:
评论

相关推荐

    springboot+maven打包demo【将依赖与配置文件打包到jar包外部】

    在Spring Boot项目中,通常依赖会被打包到最终的jar文件内部,这在大多数情况下是没问题的。但有时,为了方便部署和管理,我们希望依赖和配置文件能够独立于jar包存在。这可以通过Maven的`maven-jar-plugin`和`maven...

    SpringBoot项目没有把依赖的jar包一起打包的问题解决

    SpringBoot 项目依赖 jar 包一起打包问题解决 SpringBoot 项目在打包时,经常会遇到依赖的 jar 包没有被一起打包的问题,这个问题的解决方案将在本文中详细介绍。解决这个问题的关键在于在 pom.xml 文件中添加正确...

    springboot 打包war包

    同时,确保`&lt;executions&gt;`部分包含`&lt;goal&gt;repackage&lt;/goal&gt;`,以确保Spring Boot的应用被正确地打包。 5. **父POM引用**:在子模块的`pom.xml`中,添加对父POM的引用,这样子模块就能继承父POM中的配置。 6. **...

    springboot + jsp 打包教程

    在本文中,我们将深入探讨如何将一个整合了Spring Boot和JSP的项目打包成可执行的JAR文件。Spring Boot简化了Java应用的创建、配置和部署,而JSP(JavaServer Pages)则是一种用于创建动态网页的技术。下面,我们将...

    springboot用maven打包1

    这个插件提供了如`repackage`这样的目标,它会创建一个可执行的JAR或WAR文件,包含了所有必要的依赖,并且能够直接运行。 当使用Maven的`package`目标来生成JAR文件时,如果不进行特殊配置,生成的JAR通常无法直接...

    SpringBoot项目打包成exe文件操作手册

    将SpringBoot项目打包成exe文件是一项常见的需求,尤其是对于那些希望提供给非开发人员简单易用的桌面应用的开发者。这篇文档将详细阐述如何将SpringBoot项目转化为可执行的exe文件。 首先,理解为什么要把...

    一文解决springboot打包成jar文件无法正常运行的问题

    Spring Boot 打包成 Jar 文件无法正常运行的问题解决方案 在本文中,我们将会详细介绍 Spring Boot 打包成 Jar 文件无法正常运行的问题,并提供了详细的解决方案。本文适合需要解决该问题的开发者和学习者。 一、...

    深入SpringBoot(十四):jar-war打包解决方案.docx

    描述:本文档旨在解决 SpringBoot 项目打包问题,提供了详细的 jar 和 war 打包解决方案,并对不同使用方式下的 jar 和 war 打包操作进行了详细的介绍。 标签:技术方案 本文档中,我们将详细介绍如何将 ...

    SpringBoot瘦身打包部署的实现

    "SpringBoot瘦身打包部署的实现" 本文主要介绍了SpringBoot瘦身打包部署的实现,通过示例代码对大家的学习或者工作具有一定的参考学习价值。下面是对标题、描述、标签和部分内容的详细解释: 标题和描述 ...

    [SpringBoot2.X]29- SpringBoot项目打包与多环境配置

    本文将详细介绍如何打包Spring Boot项目以及如何实现多环境配置。 ### 1. Spring Boot的打包插件 Spring Boot项目通常使用Maven或Gradle作为构建工具,它们都提供了方便的插件来帮助我们打包应用。对于Maven,我们...

    Idea打包springboot项目没有.original文件解决方案

    4. 检查Maven的版本是否与项目兼容,有时候升级或降级Maven版本也可以解决打包问题。 5. 如果使用IDEA的`build artifacts`,确保配置正确,选择正确的输出格式为"Jar",并勾选"Build on make"选项,以确保每次构建...

    【小QのSpringBoot】打包可部署的War包DEMO

    exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat' } } springBoot { mainClassName = 'your.package.name.Application' // 指定Spring Boot主类 } ``` 完成上述配置后,执行`...

    Springboot项目正确打jar包maven版pom.rar

    本资源"Springboot项目正确打jar包maven版pom.rar"是针对SpringBoot项目使用Maven打包成可执行JAR文件的配置示例。 在SpringBoot项目中,我们通常使用Maven作为构建工具,因为它提供了强大的依赖管理和构建生命周期...

    springboot集成generator自定义插件.rar

    在这个"springboot集成generator自定义插件.rar"项目中,我们看到的重点是如何在Spring Boot项目中集成MyBatis Generator,并且自定义注释。这通常涉及到以下几个关键知识点: 1. **Spring Boot与MyBatis集成**:...

    Springboot 项目打包,配置和依赖包分开 启动批处理文件(linux和windows)

    &lt;goal&gt;repackage ``` 对于Windows和Linux系统,启动批处理文件的创建有所不同。在Windows上,我们可以创建一个`.bat`文件,而在Linux上,我们需要一个`.sh`脚本。这些文件将用来启动Spring Boot应用。 ...

    SpringBoot项目使用maven配置文件

    - SpringBoot项目通常使用spring-boot-maven-plugin插件,它提供了如repackage目标,将应用打包成可执行的jar或war。 - 使用spring-boot:start目标可以启动SpringBoot应用,方便在开发过程中快速调试。 7. 依赖...

    使用maven将Java程序打包成exe文件并制作成Windows系统服务之springboot打包(一)项目代码

    总的来说,将Spring Boot应用打包成exe并作为Windows服务,是Java开发中的一项实用技能,它结合了Maven、Spring Boot、`exec-maven-plugin`、`launch4j`和`winsw`等多个工具,实现了从源代码到服务化的完整流程。...

    前端开源库-repackage

    "前端开源库-repackage"项目就是一个专注于优化和重新打包开源库的实践,目的是提升开发效率并确保跨平台兼容性。 首先,我们要理解什么是“repackage”。在软件工程中,"repackage"通常指的是将现有的软件包进行...

    spring boot打包成可执行jar包

    然而,在将 Spring Boot 应用程序打包成可执行 JAR 包时,可能会遇到一些问题。本文将介绍如何解决这些问题,并将 Spring Boot 应用程序打包成可执行 JAR 包。 问题描述 在使用 Spring Boot 进行打包时,可能会出现...

    SpringBoot之瘦身部署的详细步骤

    SpringBoot 之瘦身部署的详细步骤 SpringBoot 之瘦身部署是指在部署 SpringBoot 项目时,如何减少 Jar 包的体积,使其更小、更轻,以提高部署效率和速度。本篇文章将详细介绍 SpringBoot 之瘦身部署的详细步骤。 ...

Global site tag (gtag.js) - Google Analytics