IDEA 中导入Eclipse 的 maven 项目,及 IDEA 将SpringBoot 打成 jar 包
背景:本人使用MacBook Air 做开发,内存比较小,只有4G。开始用Eclipse的时候还是非常流畅的,但随着时间的流逝 Eclipse越来越卡,代码有变动的情况下,每次保存都需要十秒朝上的事件,对于一名程序员来讲,真的是太浪费时间。早就听说IDEA 非常好用,所以这次就来试试怎么样。
版本:由于第一次使用,所以直接就下载了最新的版本,也是为了了解IDEA相对于Eclipse的优势在哪里。由于此软件收费,网上找了很长时间才找到有效的**的方法。
一、IDEA导入Eclipse的maven项目
由于使用Eclipse太卡,所以换的编译器,那么首先就是导入之前的项目继续撸代码。
- 第一步就是把之前的代码导入到IDEA中。
事先准备,因为是maven项目,所以基本的maven tomcat等要先配置好,当然也是网上百度到的。
导入项目之后,基本的环境配置好之后,开始启动项目。启动过程中没有包任何的错误,但当登录系统的时候,总是报登录失败,查看控制台信息发现如下信息:
Authentication failed for token submission [org.apache.shiro.authc.UsernamePasswordToken - admin, rememberMe=false]. Possible unexpected error? (Typical or expected login exceptions should extend from AuthenticationException).
说实话,看到这个问题真是一脸懵逼,意思是认证失败,第一感觉就是用户名和密码错误才会有这个错吧,不过这种事情不可能出现啊,毕竟每天都在登录,更甚者之前所有的项目开发时都是用的这套用户名和密码。在网上百度了很久才知道原来IDEA编译后是自动忽略java下面的配置文件的(比如dao接口映射的xml文件)。点开编译后的文件果然是没有看到。通过百度解决方法是在pom文件中加入一下内容:
<build>
<resources>
<!-- mapper.xml文件在java目录下 -->
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
继续测试,又发现一个问题。加入上面的内容之后,编译后的文件中是能够看到xml文件了,但是resources中的配置文件有没有了,没有办法只有继续百度,得到继续加入以下内容得以解决:
<build>
<resource>
<directory>src/main/resources</directory>
</resource>
</build>
这样的话,就可以得到resources中的配置文件了,整个项目能够正常的运行了。为了以后能够正常的使用这个编译器只能继续尝试,现在微服务挺火的,决定创建一个SpringBoot项目,来看看各种功能有什么不同。
二、IDEA 中 SpringBoot 项目打包问题
SpringBoot项目是在Spring官网直接下载的demo,启动什么的自然是没有什么问题。SpringBoot项目一般都是打成jar包进行启动,感觉更方便。但是在打包的时候遇到了一个问题:
首先展示一个网上最多的打包方式:
1.点击File-->Project Structure...
2.在弹出框中选择 + ---> JAR ---> From modules with ...
3.Module 表示你的项目名称 一般都会自动填上,Main Class 就是我们的启动类,点击????图标选择即可,最后需要选择META-INF文件放入到resources文件夹下,同样点击????图标选择。
4.选好之后全部点击 OK。然后按照如下图示一次点击
点击后就开始创建我们需要的jar包了。在 根目录中 out 文件夹下能够找到我们刚才创建的jar包。如下所示:
但是有个问题,在使用Eclipse中,直接使用 install 命令就能够在target文件夹下生成我们所需要的jar包,其中包含所有的依赖,为什么IDEA打包,却没有把需要的依赖也打进去呢,如果这样在生产环境中的话肯定非常不好。经过一系列的百度找到我所需要的打包方式,就是在右侧maven中双击 package 就能在target 文件夹中生成一个jar包并包含所有的依赖。
到此,两个项目遇到的问题基本算是告一段落了。毕竟第一次用,区别还是蛮大的,不过说真的,感觉IDEA 还是挺好用的,一点也不卡,也可能是我刚开始使用,缓存什么还比较少。长时间使用后卡不卡,后期再看吧!!!