我真傻,真的。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!/
,不要忘記最後的!/
;