使用idea将普通项目转换为maven项目(超详细) |
您所在的位置:网站首页 › idea如何更新maven项目 › 使用idea将普通项目转换为maven项目(超详细) |
本篇博客要点如下:
为什么要将普通项目转换为maven项目 如何将普通项目转换为maven项目 idea安装和使用导入项目并创建pom.xml文件按照标准的maven工程创建目录结构导入项目需要的依赖对项目进行编译打包删除多余的目录转换过程中遇到的一些问题 一. 为什么要使用maven进行项目管理? 你是否曾经被jar包冲突支配? 你是否有过一个jar包死活不知道该在哪里下载的苦恼? 你是否曾经在使用的jar包进行版本升级的时候束手无策? 你是否曾经在svn,git上面拉取项目的时候要同时拉取几百兆的依赖包而想骂娘? 你是否遇到过在项目打包上线时, 有些依赖需要打到jar包,有些不需要?如果这些问题你碰到过一个或者多个,那么你就有必要把普通的项目转成maven项目. 对maven不太了解的,也可以参照我之前写过的博客了解maven基本用法,博客链接如下: maven的使用和爬过的坑 二. idea如何将普通项目转为maven项目?接下来就以我之前学习编程,进行练习的测试项目举例: idea的使用: 关于idea的使用,不太熟悉的童鞋可以参照我之前写过的博客,博客详细介绍了idea的安装使用和配置,博客链接如下: IntelliJ IDEA操作总结 导入项目并新建pom.xml文件 导入项目 : 鼠标右键: File --> open --> 选择项目路径项目本身的目录格式是这样的: 创建pom.xml文件 : 在项目的根目录下执行: File --> new --> File–>pom.xmlpom.xml文件标准格式如下 : 4.0.0 java-practice JavaPractice 1.0-SNAPSHOT按照maven项目目录格式创建目录结构 有以下两个关键目录: Java类文件标准目录: src/main/java 把之前的代码移动到该目录下 在java目录下,鼠标右键 Mark Directory as -->Sources Root资源文件(配置)标准目录: src/main/resources 资源配置文件移动到resouces目录下 在resouces目录下,鼠标右键 Mark Directory as -->Resources Root导入项目依赖 这部分是重点: 在pom.xml导入相关jar包依赖: 有的童鞋可能要问了,我的项目依赖的jar包非常多,在lib上面有上百个(比如说我举例的这个项目),可以看到,非常多的依赖?那么我怎么知道怎么导入相关jar包的依赖呢? 首先,你要对你自己使用的jar包和版本有一个最基本的了解,比如说我的项目里用了hadoop, 版本是2.7.1,为此,我引入了下面的依赖: org.apache.hadoop hadoop-common 2.7.1如下图所示 : 可以看到, 这么简单的配置,就导入了好几十个jar包, 所以基本上你上百个jar包,几个依赖配置就搞定了 那么如果实在不知道该怎么导入某些jar包的依赖该怎么办呢?别慌 我随便找个jar包举例:netty-3.7.0.Final.jar 用压缩工具打开任意一个jar包,进入它的META-INF目录,里面有一个maven文件夹,进入该文件夹,一直往里面点 最底层会有一个pom.xml文件,如下图所示: 打开这个pom.xml文件, 我们就能找到相应的配置啦! 把上图标注的几个关键的东西抄到自己的pom.xml里面,然后import changes,再去看我们的依赖: 可以看到, 修改过的pom.xml已经导入了这个jar包 必要的话,可以直接把他的爸爸抄过来,也就是上面的Parent里面的东西 接下来,如法炮制,把所有需要的依赖全部导入进来对项目进行编译: 接下来执行mvn clean install 对项目进行编译 也可以使用mvn clean install -DskipTests跳过单元测试在idea端操作方法如下图 : 如下图所示: 代表编译成功! 删除多余的目录: 打包编译成功之后,就可以把不必要的目录干掉了! 主要是bin目录和lib目录最终的目录结构如下图所示,还是非常清爽的! 三. 遇到的问题 编译时报错 : [ERROR] /E:/softWare/office/idea/myJob/JavaPractice/src/main/java/pers/xmr/java/liuyi/DayFifteen.java:[54,56] -source 1.5 中不支持 diamond 运算符 [ERROR] (请使用 -source 7 或更高版本以启用 diamond 运算符) [ERROR] /E:/softWare/office/idea/myJob/JavaPractice/src/main/java/pers/xmr/java/liuyi/casedemo/util/DBUtil.java:[61,33] -source 1.5 中不支持 multi-catch 语句 [ERROR] (请使用 -source 7 或更高版本以启用 multi-catch 语句) [ERROR] /E:/softWare/office/idea/myJob/JavaPractice/src/main/java/pers/xmr/test/Test.java:[13,32] -source 1.5 中不支持静态接口方法 [ERROR] (请使用 -source 8 或更高版本以启用静态接口方法) [ERROR] /E:/softWare/office/idea/myJob/JavaPractice/src/main/java/pers/xmr/java/liuyi/DayTwentyOne.java:[13,39] -source 1.5 中不支持 diamond 运算符 [ERROR] (请使用 -source 7 或更高版本以启用 diamond 运算符) [ERROR] /E:/softWare/office/idea/myJob/JavaPractice/src/main/java/pers/xmr/java/liuyi/DayEighteen.java:[56,47] -source 1.5 中不支持 diamond 运算符报错原因 : 虽然我的jdk设置的是1.8 但是从报错来看明显是它是按照jdk1.5的语法识别的. 我的代码里用到了jdk7和jdk8的语法特性, 导致其无法识别而报错.解决办法 : 网上找的办法基本上是在idea进行如下设置: File-->Settings-->Build,Execution,Deployment-->Complier-->Java Compiler --> 把Project bytecode version设置为1.7或者更高版本设置方法如下图: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DQfbbPTj-1601033237036)(https://i.loli.net/2019/05/10/5cd4c6874a5b8.png)] 但是这种方法并没有解决我的问题. 后面我想到了我刚刚使用maven的时候好像做过类似的配置来避免这个问题(记忆力实在太差~~) 在pom.xml文件里project标签下面添加如下配置,表示按照jdk8的语法规则来编译和打包 org.apache.maven.plugins maven-compiler-plugin 3.3 1.8 1.8加入了改配置之后,这个报错得到解决! maven的使用还会碰到其他问题, 我在之前写的博客里有涉及到我遇到的一些问题: 感兴趣的可以参考,博客链接如下: maven遇到的问题总结 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |