niagara編譯的那些事

一直對${niagara_home}/lib/devkit.properties文件的“javac.classpath”預定義變量不清楚,這次有時間好好研究了一番。

還是在該目錄下,有一個build.jar文件,看來它應該是負責具體的編譯了,反編譯之。有看點的是3個類:Main, Env和JarCommand。

Main裏調用了initEnv,因爲是靜態函數的原因,沒有顯示擁有類,猜測是Env。

initEnv初始化各種環境變量,調用buildEditions完成針對不同edition的classpath的設定,可以在buid的時候加上參數-v,查看輸出

但是javac.classpath還是沒有看到,看來應該是在編譯時了,通過查看輸出

Java Compile [com.cat.redis]
D:\Program Files\Java\jdk1.8.0_111\bin\javac.exe -target 1.5 -source 1.5 -classpath "D:\Program Files\Niag

有這樣一個靜態字符串“Java Compile”,於是在JarCommand中查找,找到關鍵函數compilePackage

devkit.properties中的預定義變量都有了。

PS:如果在引用第三方庫(放在ext文件夾下)並開啓-v後看到如下的warning,不需要擔心,它是niagara在對BClass類型(BRedis)做驗證,能否運行還是要實際測試(本例中可以)。如果你把引用的第三方類放在非BClass中,則該warning不再出現。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章