我真傻,真的。java
最近要在一个对日的java项目中作一些开发。spring
这个项目有十多年了,java工程开发一直用的eclipse + maven1。对,你没有看错,就是那个官方连文档都已经再也不提供的maven1。。。更无语的是,咱们本地开发不能连外网,以前也没有搭建maven私服,因此开发环境事实上是把maven的本地仓库拷贝到本地,而后在eclipse工程中设置一个叫MAVEN_REPO
的环境变量,从这个变量导入全部的依赖包。。。emmmm。。。尽情吐槽懒惰的咱们吧。。。eclipse
而后,自从我开始使用IDEA社区版之后,就不再想用eclipse了。。。此次回到对日项目,为了开心地写代码,我天然而然萌生了把eclipse的工程导入到idea中的想法。idea自己就有导入eclipse工程的功能,but,事情固然不会像傻傻的我想象的那样顺利。。。maven
原本嘛,既然工程是maven工程,直接做为maven工程导入是最简单也最靠谱的。。。但是就像一开始说的,由于咱们没有maven私服,因此还须要先搭建个支持maven1私服,这个简单,搭建一个nexus2服务就是。(nexus3不支持maven1仓库。。。)ide
以后,找人手动上传了依赖jar包到咱们的maven1私服。。。可是。。。若是我想把工程做为maven工程导入idea(idea与maven有版本兼容问题,如今的idea支持的基本都是maven3.x),我还得再作一个maven2仓库,再找人把那些jar转到maven2仓库(苦苦寻找maven1仓库直接转为maven2仓库的办法,包括用maven2代理maven1之类的,可耻的失败了。。。),而后还得把全部工程(十几个)的maven1的配置文件(maven.xml+project.xml)转为pom文件。。。总以为很麻烦。。。svn
因此,和历史上永远不用上策的主公们同样,最靠谱的办法,被无奈地pass掉了。。。
上策暂不可用,那么就暂时仍是用classpath环境变量MAVEN_REPO
凑活着吧。。。emmmm。。。url
原来是一个eclipse的workspace下的十几个project,idea对应的是一个project下十几个module。来吧骚年。。。idea
Checkout from version control
-> subversion
从svn仓库下载十几个工程到project目录下,引导过程的最后,不要打开module,选No
File
-> New
-> Module from existing sources
导入project目录下的原eclipse工程做为idea的Module此处须要注意原来的工程之间若是有依赖关系,最好从依赖最底层开始导入Module。
MAVEN_REPO
的依赖包都找不到。到此为止,用上策仍是下策都是同样同样的。。。
File
-> settings
-> Appearence & Behavior
-> Path Variables
中添加环境变量MAVEN_REPO
,指向本地maven1仓库,而后别忘了重启IDEA;External Libraries
了,开心吧。。。呵呵,吐样吐森破。。。你会发现你的代码中仍是不少import失败,对应依赖包的类仍是找不到。。。WTF。。。file://
,就像下面这样:<orderEntry type="module-library" exported=""> <library name="commons-net-2.0.jar"> <CLASSES> <root url="file://$MAVEN_REPOSITORY$/commons-net/jars/commons-net-2.0.jar" /> </CLASSES> <JAVADOC /> <SOURCES /> </library> </orderEntry>
上面的环境变量之因此是MAVEN_REPOSITORY
而不是MAVEN_REPO
,我猜啊,是由于IDEA的maven插件会使用MAVEN_REPOSITORY
这个环境变量指向maven2本地仓库,而我本地maven1仓库与maven2仓库固然是一个目录了。因此这里应该是idea把MAVEN_REPO
替换成了MAVEN_REPOSITORY
。。。至于IDEA为啥会替换这个,我猜想的缘由对不对。。。唉,你爱信不信,反正我信了。。。
<orderEntry type="module-library" exported=""> <library name="commons-net-2.0.jar"> <CLASSES> <root url="file://$MAVEN_REPOSITORY$/commons-net/jars/commons-net-2.0.jar" /> <root url="jar://$MAVEN_REPOSITORY$/commons-net/jars/commons-net-2.0.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES /> </library> </orderEntry>
用这个下策吧,真的也很麻烦,由于你得改每一个iml的每一个依赖包的url。。。固然,若是你是一个一个module导入的,后面的module导入时自动生成的iml里的依赖包的url彷佛都是jar协议了。。。仍然让傻傻的我以为有点懵逼。。。spa
固然更low的仍是添加MAVEN_REPO
这个环境变量,用来指向拷贝到本地的maven1仓库,而后idea又神奇的给你换成了MAVEN_REPOSITORY
。。。感受在被嘲笑。。。插件
settings
的Appearence & Behavior
-> Path Variables
中添加,而后不要忘记重启;jar://xxxxxx/xxxx!/
,不要忘记最后的!/
;