Eclipse对于多个Java项目的支持并不友好!
本文吐槽!
如果我們創建兩個Java項目。一個叫StatsReader。把數據從網上下載到本地數據庫里。一個叫StatsViewer。把數據從數據庫里拿出來呈現給用戶。這兩個項目都要用同一個外部類庫mysql-connector-java-5.0.8-bin.jar。
Eclipse能夠創建一個工作集。內含多個Java項目,但工作集僅僅是一個概念,與項目的實際存儲位置無關。
可是我們能夠把兩個項目放在同一個文件夾里,比方D:\Source Code\NBA\StatsReader和D:\Source Code\NBA\StatsViewer。
如果有個需求,要求reader讀完數據后自己主動打開viewer。我們能夠用改動.project文件添加鏈接目錄的方式把StatsReader的編譯位置從D:\Source Code\NBA\StatsReade\bin轉移到D:\Source Code\NBA\bin,即..\bin。相同StatsViewer也這樣轉移。
Java編譯爛就爛在在文件級別上源碼與二進制一一相應,我有a.java。它就編出a.class。所以,萬一StatsReader和StatsReader有某個文件重名就會出錯。
我從C#出身的,在Java里我習慣把包括main函數的文件起名為Program.java,所以有StatsReader/Program.java和StatsViewer/Program.java。編譯后bin里僅僅會有一個Program.class,我也不知道是reader的還是viewer的!
那行吧。幸虧我還能把java程序打包成jar。
比方我reader先調試好了,打包成StatsReader.jar,放到bin里。然后開始調試viewer。
由于reader的program.class在bin里面,我在eclipse的viewer項目里點擊執行。實際上執行的還是reader!
我要又一次編譯reader,不行的!
說要清理項目狀態然后編譯。清理項目狀態事實上就把bin里的全部文件都清除了,我剛打包好的StatsReader.jar沒了!
Visual Studio支持就好多了!VS創建一個項目,這個項目就自己主動處在一個解決方式里,從一開始就告訴你一個解決方式能夠包括多個項目。而不特別去查的話不會知道Eclipse有工作集這個玩意兒。
VS能夠強制又一次編譯項目。無論代碼文件有沒有改過,它都給你編譯一遍。VS也能夠清理解決方式,就跟Eclipse清理項目狀態差點兒相同。但VS它不是一股腦地整個刪除bin目錄里的文件,它僅僅會刪除它生成的文件。
像我剛才描寫敘述的兩個項目,在VS里面我想就非常好做。結構清晰。管理簡單。
有人不服氣了,說Eclipse有Ant自己主動構建大神,還有maven大神、Gradle大神,但我這僅僅是簡單的需求就要動用到還有一項專門技術?Eclipse里菜單是有“Ant自己主動構建”之類的選項,但我怎么知道這是什么意思?
我也不知道Eclipse能不能執行“編譯前動作”“編譯后動作”,這似乎是ant負責的事。能不能編譯到D:\Source Code\NBA\StatsReade\bin。打包成jar放到D:\Source Code\NBA\bin,執行D:\Source Code\NBA\bin的jar?看起來非得搞懂自己主動構建才行!
VS編譯前編譯后動作就非常明顯,在項目屬性窗體里,點幾下就能看到。雖然編譯前編譯后動作屬于自己主動構建領域,但VS不引進這個概念,我直接看到我想要的就用了。不知不覺。“原來這就是自己主動構建呀。”VS也支持編譯后把非代碼文件拷貝到編譯文件夾。
在我的樣例里,reader和viewer都要連接數據庫,我想把連接字符串存在一個文件中,比方connection.txt,與兩個程序放在同級文件夾。
因為上面清理項目狀態的問題。這個txt常常被刪掉。在VS里就方便了,txt與代碼放一起,但設置編譯后拷貝到編譯文件夾。這樣即可了。
要說VS有沒有類似ant大神的自己主動構建工具,我不知道,但其csproj文件就具有一定的編程能力。
結論就是。Visual Studio比Eclipse好用!
歡迎拍磚。
總結
以上是生活随笔為你收集整理的Eclipse对于多个Java项目的支持并不友好!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu16禁用utc时间
- 下一篇: [转]Java加密算法