作为一个经常学习交流的人,或者工作需要,我们都或多或少会把别人写好的代码拷贝过来学习或编辑,大多数时候都是把整个项目拿过来;但是往往把代码拿到之后放在自己电脑用 idea 打开的时候就会出现 pom.xml 文件红线报错,然后倒入的包全部不能用,导致 java 文件引用的类报错,下面就是刚导入的 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">
<parent>
<artifactId>maven_project</artifactId>
<groupId>com.zmj</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>J3spring02</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.5.RELEASE</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<!--aop的实现有好几种,最好用就是aspectj-->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.2</version>
</dependency>
<dependency>
<groupId>aopalliance</groupId>
<artifactId>aopalliance</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</project>
然而我们看到的样子确实这样的:
别人都能跑的代码,为什么我拿来就报错了呢,电脑问题还是人品不好呢??
- 首先我们明白,idea 中的 project 和 module 的区别,project 相当于是个工作空间,而 module 则是属于 project 以下的项目模块;
- 然而我们拷贝的项目呢一般情况下是一个 module ,也就是我上面的代码;而 module 中是有一个标签的不知道大家发现没,没错就是那个报错的<parent>标签,这个标签的意思呢就是在创建 module 的时候,会用这个标签指定 module 的工作空间,parent 嘛父亲嘛,也就是说这个 module 属于某个空间项目;
- 我们导入项目呢一般是新开一个窗口,新开一个窗口基本上就说明是一个 project ,project 本身就是一个父项目的存在,那这个时候 pom.xml 文件夹里面再有 parent 标签是不是不合适呢?没错不合适,所以就报错了嘛;
- 那存在不合适我们把它消灭了(删除)是不是就好了呢,答案是 nonono ,因为任何project项目也好, module 项目也罢,都必须有一些标签的(不然就报错),其中必须有的就有 groupid,version 标签;所以在删除parent标签的同时还得給 pom.xml 文件加上这两个标签,groupid 可以自己命名,version 标签用默认的 1.0-SNAPSHOT 就好了;
修改后的 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>
<artifactId>J3spring02</artifactId>
<groupId>com.bdqn.zxw</groupId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.5.RELEASE</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<!--aop的实现有好几种,最好用就是aspectj-->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.2</version>
</dependency>
<dependency>
<groupId>aopalliance</groupId>
<artifactId>aopalliance</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</project>
改完之后,刷新一下maven项目就好了
idea导入maven项目(别人的项目)中的坑 - 简书 (jianshu.com)