spring boot 项目打成其他项目用的jar包时一些坑,记录一下

本文详细介绍了SpringBoot项目打包的步骤与注意事项,包括去除测试方法、修改Maven配置、包扫描及配置文件处理等,避免在引用jar包时遇到常见问题。

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

springboot 项目打包的时候一些坑,记录一下

 

当我们想将我们打的jar包放到别人项目的时候需要做的步骤:

1、去掉所有的test方法 

2、将pom文件的

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

改为 

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

这样就不会将多余的文件打到jar包中,方便引用

3、包扫描

在spring boot的main方法中 的类中加入

@ComponentScan({"....."})//你引用的包的扫描地址
@MapperScan({".....mapper"})//你引用的jar包中的mapper地址

4、配置文件需要将jar包的配置全部注销,放置到当前项目的配置中即可

爬过的坑。。。

不要试图提前加载运行jar包中的方法,,如果里面有引用配置文件属性,就会读取为空的!!!

当时用的@PostConstruct 注解直接运行,然后找了一早上的空指针,

最后发现是因为配置文件是在这个@PostConstruct 注解后才加载的!!!

吐了好几升的血。。。。

 

 

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

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

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

### 构建父子POM结构的Spring Boot项目为单一JAR文件 对于具有父子`pom.xml`结构的Spring Boot项目,要将其构建成一个单独的可执行JAR文件,需注意项目的模块化设计以及Maven生命周期管理。当父级项目采用`spring-boot-starter-parent`作为其父级依赖,这有助于统一管理和简化版本控制。 #### 设置父级POM配置 确保父级`pom.xml`中指定了正确的继承关系,并且含了必要的插件设置: ```xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.0</version> <relativePath/> <!-- lookup parent from repository --> </parent> <packaging>pom</packaging> <modules> <module>child-module-name</module> </modules> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> ``` 此部分定义了整个多模块项目的公共构建行为[^1]。 #### 子模块的具体配置 针对希望被打成独立运行的应用程序的那个特定子模块,在对应的`pom.xml`内应指定该应用的主要入口类路径,即启动应用程序所需的主方法所在位置。如果尝试在一个不含任何Java源码或不存在main-class属性的情况下调用`mvn package`命令,则会遇到错误提示找不到主要类别[^3]。 ```xml <properties> <start-class>com.example.demo.DemoApplication</start-class> </properties> ``` 另外,还需确认子模块自身的打方式设为了`jar`而非默认的`pom`: ```xml <packaging>jar</packaging> ``` 最后,保持子模块也声明了相同的`spring-boot-maven-plugin`插件实例,以便能够利用Spring Boot提供的增强功能完成最终制品组装过程。 #### 使用Maven进行打操作 一旦上述准备工作就绪,可以通过终端进入根目录并执行标准的Maven生命周期阶段来触发完整的编译、测试直至封装流程: ```bash mvn clean install ``` 这条命令不仅会对所有子模块实施相应的处理动作,还会自动解析各层之间的相互依赖关系,从而实现一次性产出预期的目标产物——带有嵌入式Tomcat服务器支持的全量版Web应用程序JAR文件[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值