前陣子幫同事處理一個不知道怎樣自動化編譯的 Java 專案,因為該專案沒有建置工具(Build Tools)輔助,完全依賴 Eclipse 內建的建置工具,所以工程師就不知道怎樣進行 CI 自動建置了。其實在網路上可以找到許多 Shell 環境下的解決方案,但很少有 Windows 環境下的解決方案,為了這個問題,我寫了一段自動化的腳本來解決這個問題,這個腳本幾乎可以適用任何簡易類型的 Java 專案。

使用批次檔腳本自動建置專案下所有 Java 檔
假設我們的專案有個 src/
資料夾,用來儲存所有 Java 的原始碼 (*.java
),但是散落在各個不同 packages 的資料夾下,此時你可以用以下命令將所有 **/*.java
編譯到 bin/
目錄下:
@ECHO OFF
SET filelist=%temp%\filelist-%random%.txt
dir /s /b src\*.java > %filelist%
javac @%filelist% -sourcepath src -cp ".;lib" -d bin\
del %filelist%
這裡我假設你還有其他 *.jar
檔放在 lib/
目錄下,若有其他的 class path 需要參考,可以自行新增。
使用 PowerShell 自動建置專案下所有 Java 檔
假設我們的專案有個 src/
資料夾,用來儲存所有 Java 的原始碼 (*.java
),但是散落在各個不同 packages 的資料夾下,此時你可以用以下 PowerShell 命令將所有 **/*.java
編譯到 bin/
目錄下:
$filelist = New-TemporaryFile
Get-ChildItem -Recurse *.java | foreach { $_.FullName } | Out-File -Encoding utf8 $filelist
javac "@$($filelist.FullName)" -sourcepath src -cp ".;lib" -d bin\
Remove-Item $filelist
這裡我假設你還有其他 *.jar
檔放在 lib/
目錄下,若有其他的 class path 需要參考,可以自行新增。
相關連結