Spring 5.1.5.RELEASE+Mybatis3.5.0+druid1.1.13项目(非web项目) main方法运行

项目描述

前天群友提出问题maven+spring+mybatis +swing  但是用注解@Autowired 的一直提示UserService 为null,

之前也做过类似的项目,但是没有用注解试过,一直用的applicationContext.getBean("xx") 这种方法获取的bean,觉得值得研究一下,后来经过尝试,发现可以的  前提是 main方法所在的类 必须交给 spring管理,贴下代码吧

这种配置适合 swing+spring+mybatis项目,除此之外不知道还能用哪里,哈哈 毕竟springboot这么优秀

运行环境

jdk8+mysql+maven+eclipse

spring+mybatis

数据库就不传了 就一个user表 俩个字段 ,自己创建一下就行了

作者qq248786960

<think>我们正在处理一个Maven构建Spring Boot项目时的插件执行失败问题。错误信息是: "Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:5.1.5.RELEASE: Error executing plugin for spring-core version 5.1.5.RELEASE" 根据引用的内容,我们注意到类似的问题可能插件的配置有关。特别是引用[1]和引用[4]都提到了`spring-boot-maven-plugin`插件执行失败的情况。 分析可能的原因: 1. **主类未找到**:引用[4]中提到了“Unable to find main class”,这通常是因为插件尝试重新打包(repackage)时找不到主类。在Spring Boot项目中,主类必须被正确指定,并且通常位于可以扫描到的位置(比如根包下)。 2. **插件版本Spring Boot版本不匹配**:错误信息中提到了插件的版本5.1.5.RELEASE,而引用的内容中出现了1.5.18.RELEASE(引用[2])和2.2.5.RELEASE(引用[4]),说明版本不一致可能导致问题。我们需要确保`spring-boot-maven-plugin`的版本Spring Boot的版本一致。 3. **多模块项目配置问题**:引用[3]描述了一个多模块项目springboot-module-demo),其中包含product-common和product-web模块。在common模块中,可能不需要打包成可执行jar(因为它可能是一个库模块),而应该只在web模块(应用模块)中使用`spring-boot-maven-plugin`。 解决方案: 1. **检查主类**:确保在应用模块(通常是包含main方法的模块)的pom.xml中,正确配置了主类。可以通过以下方式配置: ```xml <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>com.example.MainApplication</mainClass> </configuration> </plugin> </plugins> </build> ``` 其中`com.example.MainApplication`是你的启动类。 2. **检查插件版本**:确保`spring-boot-maven-plugin`的版本项目中使用的Spring Boot版本一致。在Spring Boot项目中,通常不需要显式指定插件版本,因为从父pom继承而来。检查父pom是否使用了正确的Spring Boot版本,例如: ```xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>5.1.5.RELEASE</version> <!-- 插件版本一致 --> </parent> ``` 3. **多模块项目中的配置**:如果项目是多模块的,确保`spring-boot-maven-plugin`只配置在需要打包成可执行jar的模块(通常是启动模块)中,而不是在公共库模块中。在公共模块(如product-common)中不应该使用该插件,因为公共模块通常被打包成普通的jar(作为依赖库)。 在公共模块的pom.xml中,移除`spring-boot-maven-plugin`插件。 4. **检查依赖冲突**:引用[2]中提到了`spring-javaformat-maven-plugin`,这可能是Spring Boot项目的一个格式化插件,但通常不会导致构建失败。不过,如果存在依赖冲突,也可能导致问题。可以使用`mvn dependency:tree`命令查看依赖树,排除冲突。 5. **清理和重新构建**:尝试清理项目并重新构建: ```bash mvn clean install ``` 根据引用[4]中的错误,我们特别关注在公共模块(product-common)中执行repackage目标失败,所以重点检查公共模块是否错误地配置了`spring-boot-maven-plugin`。在公共模块中,我们不应该使用这个插件,因为它不是可执行的应用。 因此,解决方案的核心步骤是:在公共模块中移除`spring-boot-maven-plugin`插件,只在需要打包成可执行jar的应用模块中保留。 如果问题仍然存在,请检查主类是否正确配置,以及Spring Boot版本和插件版本是否一致。 希望这些步骤能帮助你解决问题。 §§相关问题§§ 1. 如何正确配置Spring Boot多模块项目? 2. `spring-boot-maven-plugin`的主要作用是什么? 3. 如何解决Maven构建中出现的依赖冲突问题?</think>### 解决Maven构建Spring Boot项目时`spring-boot-maven-plugin`执行失败问题 根据错误信息`Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:5.1.5.RELEASE`,结合引用内容分析,以下是常见原因和解决方案: --- ### **原因分析解决方案** #### 1. **模块类型配置错误**(最常见) 在**多模块项目**中,`spring-boot-maven-plugin`不应配置在**公共库模块**(如`product-common`),而应仅用于**可执行应用模块**(如`product-web`)。引用[4]显示`product-common`模块执行repackage失败: ```xml <!-- 错误:公共模块不应配置此插件 --> <project> <artifactId>product-common</artifactId> <build> <plugins> <plugin> <!-- 移除这部分 --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> ``` **修复方案**: 1. 从公共模块的`pom.xml`中移除`spring-boot-maven-plugin` 2. 仅在启动类所在的模块(如`product-web`)保留该插件 --- #### 2. **主类缺失或未指定** 当插件找不到`main()`方法时会出现此错误(引用[4]): ```bash [ERROR] Unable to find main class ``` **解决方案**: - 显式指定主类路径: ```xml <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>com.yourpackage.MainApplication</mainClass> </configuration> </plugin> ``` - 确保启动类满足: - 类上有`@SpringBootApplication` - 包含`public static void main(String[] args)`方法 - 位于根包下(如`com.example`) --- #### 3. **版本冲突**(引用[2][3]) 插件版本Spring Boot版本不匹配会导致兼容性问题: ```xml <!-- 检查父POM中的版本声明 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.0</version> <!-- 必须插件版本一致 --> </parent> ``` **修复步骤**: 1. 统一版本号:确保`<parent>`版本插件版本相同 2. 或在插件中显式指定版本: ```xml <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.7.0</version> <!-- 父POM一致 --> </plugin> ``` --- #### 4. **构建命令错误** 错误使用`mvn package`而标准构建命令(引用[4]): ```bash # 正确命令(包含编译和打包) mvn clean install ``` --- ### **验证方案** 1. **检查模块配置**: ```bash mvn help:effective-pom | grep "spring-boot-maven-plugin" ``` 确认插件仅存在于应用模块 2. **清理缓存**: ```bash mvn clean install -U ``` 3. **查看依赖树**: ```bash mvn dependency:tree -Dincludes=org.springframework.boot ``` > **重要提示**:若问题仍未解决,请检查`spring-core`的依赖冲突(错误中提到的`spring-core version 5.1.5.RELEASE`)。使用`mvn dependency:tree`排查是否存在多个不同版本的`spring-core`[^3][^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值