爲什麼要複製module?
1.module中有大量相同的重複代碼(多爲測試的時候),一個個複製文件太麻煩;
2.網速慢,新建maven項目常常要下載好多包,構建耗費大量的時間;
3.版本問題。如springboot項目,idea只提供最近的幾個版本的可選項,現在都是2.x版本,想新建springboot1.x版本的module,需要先選擇一個2.x的版本,然後等創建完成後在手動改爲1.x版本。這樣會造成不必要的下載,更重要的是2.x的自動生成測試類和1.x的不同,編譯運行時會報錯,需要手動改,很麻煩。
所以如果有一個已經存在的module,採用複製的方法往往更加方便快捷。
idea複製maven項目,可以直接ctrl+c,crtl+v粘貼,如下圖:
shiro-test-copy是複製之後的項目,可以看到該項目並沒有加粗,說明還沒有被識別爲module。
如果是新建的module,則默認會將module寫入父工程的pom配置文件;而複製的項目則不會,所以應該手動的將module寫入配置文件。如下圖:
上圖,在父工程的pom文件中增加了module,可以看到左側項目的module是“shiro-test(1)”,而右側有兩個shiro-test,證明module已經被項目識別,但是module名稱沒有改變,所以下一步要修改module名稱。
修改爲與目錄名稱相同的module名,我這裏修改爲shiro-test-copy,就可以看到複製的項目被加粗了。
到此,複製項目已經被識別爲module,我們也修改了module名稱使之與項目名對應,也修改了對應的pom文件的artifactId。
打開項目,發現新的問題出現了:
新項目的source root是shiro-test,這樣會導致The root already belongs to module "XXX"的錯誤。
解決方法:
打開project structure,找到被複制項目(這裏是shiro-test),將複製後新加的source文件夾刪除即可。如下圖:
source root消失,可以碼代碼了。。。