使用DOS命令行,用javac編譯多目錄下(包)的JAVA源程序

新年快樂!

 

經常看到有人問,如何用javac編譯多個子目錄,現在呈上。

 

按習慣,不廢話,直接上源碼。

 

先說一下目錄結構:

 

%CD%/src---------------------源碼目錄

    /webroot/------------輸出目錄

         /lib---------依賴的.jar

         /classes---編譯輸出目錄

 

 

 

 

主文件:build_compile_batch.cmd


@ECHO OFF

REM 生成自動編譯的批處理文件名
SET BAT=_compile_auto.cmd
REM 包含運行
SET WITH_RUN=1

REM SETLOCAL enableDelayedExpansion

ECHO @ECHO OFF>%BAT%

REM 編譯後要運行的主類

ECHO SET mainclass=org.mega.MyDemoProgram>>%BAT%
ECHO SETLOCAL enableDelayedExpansion>>%BAT%
ECHO.>>%BAT%
ECHO SET CUR=%%CD%%>>%BAT%
REM 輸出目錄
ECHO SET OUTPUT=%%CUR%%/webroot>>%BAT%
ECHO CD %%OUTPUT%%>>%BAT%
REM 編譯的輸出目錄
ECHO REM RMDIR /s /q classes>>%BAT%
ECHO IF NOT EXIST classes MKDIR classes>>%BAT%
ECHO CD %%CUR%%>>%BAT%

ECHO.>>%BAT%
ECHO SET CP=%%OUTPUT%%/classes>>%BAT%

REM 準備源碼的子目錄(包)
ECHO FOR %%%%a IN ( %%OUTPUT%%/lib/*.jar ) DO SET CP=!CP!;%%%%a>>%BAT%
ECHO.>>%BAT%
ECHO SET OPT=-d %%OUTPUT%%/classes -cp %%CP%% -encoding utf-8>>%BAT%

FOR /d %%a IN ( src/*.* ) DO cmd /c build_compile_batch-sub.cmd %%a
ECHO.>>%BAT%

ECHO ECHO 正在編譯...>>%BAT%
ECHO javac %%OPT%% %%JFILES%%>>%BAT%
ECHO.>>%BAT%

ECHO IF "%%errorlevel%%" equ "0" (>>%BAT%

ECHO ECHO 編譯成功,正在拷貝資源文件...>>%BAT%
ECHO xcopy /i /y src/*.* %%OUTPUT%%/classes>>%BAT%
IF "%WITH_RUN%" EQU "1" (
ECHO SET CP=.;!CP!>>%BAT%
ECHO CD %%OUTPUT%%/classes>>%BAT%
ECHO cd>>%BAT%
ECHO REM ECHO !CP!>>%BAT%
ECHO ECHO 編譯完成,正在運行...>>%BAT%
ECHO java -cp !CP! %%mainclass%%>>%BAT%
)
ECHO pause>>%BAT%
ECHO ) ELSE (>>%BAT%
ECHO pause>>%BAT%
ECHO )>>%BAT%


PAUSE

 

 

輔助文件:

build_compile_batch-sub.cmd

 

@ECHO OFF

IF "%1" NEQ "" (
echo %1

IF EXIST %1/*.java (

REM 如果有.java文件,則添加到編譯列表
ECHO SET JFILES=%%JFILES%% %1/*.java>>%BAT%
)

REM 處理更深層的包

FOR /d %%b IN ( %1/*.* ) DO cmd /c "build_compile_batch-sub.cmd %%b"

)

 

 

 

 

執行 build_compile_batch.cmd 後,生成 _compile_auto.cmd。

再執行 _compile_auto.cmd,就進行編譯、編譯後自動運行程序。

 

 

稍修改一下 build_compile_batch.cmd 即可適合其它的項目。 希望有人會喜歡。

 

 

 

 

 

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