我正在研究一個構建系統,這個系統在很長一段時間內堆積在其他不好的實踐上,並且正在重寫構建過程。涉及的語言是C/C++,Fortran,Ada和Java,並且暫時我堅持使用GNU風格的makefile - 雖然我們正在考慮其他替代方案,如SCons。構建Java代碼的快速,易維護和可並行化的方式?
雖這麼說,我正在尋找一些具體建議 - 而不是形式的建議「使用不同的構建系統」等
誰寫的特定的makefile我看現在有計劃在Java代碼順序構造,看起來是這樣的:
LIST_OF_JAVA_FILES = file1.java
LIST_OF_JAVA_FILES += file2.java
LIST_OF_JAVA_FILES += file3.java
...
LIST_OF_JAVA_FILES += fileN.java
all: ${LIST_OF_JAVA_FILES}
${LIST_OF_JAVA_FILES} : %.class : %.java
${JAVAC} ${CLASSPATH} ${<}
只要你在串行執行的構建,這工作正常。然而,一旦依賴關係混入其中,就會變得更加成問題。
- C/C++編譯器擁有用於依賴生成的內置選項......對Java有類似的功能嗎?
- 是否有必要使用第三方工具(如Jikes)來生成依賴關係?
- 通常來說,如果一個團隊正在使用makefile來構建與java相關的任何東西,更典型的方式是調用java編譯器一次,在一個命令行中列出所有
.java
文件-vs-每個.class
文件都有一個目標?- 如果這更爲常見,這是嚴格爲了簡單起見還是有更深的原因?
- 注:據我所知,對於一個連續的構建,這將是更快的選擇,但我想要的答案,並行做實證檢驗構建
你確定自動依賴解析嗎?我可能會做錯事;假設Main.java依賴於從Blah.java生成的類文件,執行上述操作會抱怨丟失的符號,除非我先編譯Blah.java。 –
我很確定,它一直爲我工作。假設Blah。當然可以找到java。 – maaartinus