首先我的这份文章只是提高一种解决思路,我不能保证它一定正确,只是作为一种思路来为大家解决maven项目报错。
我在学习SSM框架的时候,我的Maven项目中我引用的依赖项频繁报错,我在网上寻找解决方案,找到的是比较普遍性的错误。而我报的错误比较特殊,所以就发出了供给各位参考一下。
IDEA版本:
2021.2.1版本(初步使用且报错的版本)
2018.3.6版本(后来使用且没报错的版本)
Maven版本:
3.5.4
1、我原来报错的POM.XML
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.at.mybatis</groupId>
<artifactId>mybatis_helloworld</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<!-- 这个是我感觉导致maven无法正确下载依赖的原因 -->
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<!-- 这个是我感觉导致maven无法正确下载依赖的原因 -->
<!-- 这个是我尝试的解决方法-->
<build>
<defaultGoal>install</defaultGoal>
</build>
<!-- 这个是我尝试的解决方法-->
<dependencies>
<!-- 这下面这些是我尝试引用的依赖,但是依赖项会报错 -->
<!-- Mybatis核心 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.10</version>
</dependency>
<!-- junit测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- MySQL驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
</dependencies>
</project>
我找到解决方法是受到了一个解决方案的启发。
2、这个是我们可以正常下载依赖且不报错的POM.XML(2018的IDEA的POM.XML的基础下)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.at.mybatis</groupId>
<artifactId>ssm_mybatis</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 这一块我是没有写的,可能是后来加载依赖的时候自己加载进来的 -->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
<!-- 这一块我是没有写的,可能是后来加载依赖的时候自己加载进来的 -->
<!-- 设置打包格式为jar包 -->
<packaging>jar</packaging>
<dependencies>
<!-- Mybatis核心 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.10</version>
</dependency>
<!-- junit测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- MySQL驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
</dependencies>
</project>
3、这个是2018版本的POM.XML
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.at.maven</groupId>
<artifactId>demo01</artifactId>
<version>1.0-SNAPSHOT</version>
</project>
4、这个是我认为导致出错的代码块
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
总结一下:
具体的解决方法我认为是把第三份代码块覆盖你的POM.XML,然后参考第二份代码块的POM.XML来重写你的依赖。当然了,也有可能是因为高版本的IDEA不适配比较低版本的Maven,但是这个的可能性比较低。
首先我的这份文章只是提高一种解决思路,我不能保证它一定正确,只是作为一种思路来为大家解决maven项目报错。
顺便提供一下我的一些项目设置。
其中第三张这个红色圈起来的这个选项在IDEA2020以后的版本好像已经没有了,如果你是2020及以后的版本也不用担心,这个的影响应该不大。