zoukankan      html  css  js  c++  java
  • bat 编译子目录文件

    引用:http://blog.csdn.net/cangwu_lee/article/details/6172034

    新年快乐!

    经常看到有人问,如何用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 即可适合其它的项目。 希望有人会喜欢。

  • 相关阅读:
    设计模式读书笔记
    effective_c++(第三版)读书笔记
    CS-Notes 操作系统读书笔记
    数据库笔记
    后台开发核心技术与应用读书笔记
    python3.7安装numpy pandas失败的处理方案
    线段树模板
    KMP算法
    离散实验——欧拉图的判定和应用
    堆排序算法及其实现
  • 原文地址:https://www.cnblogs.com/sode/p/2356656.html
Copyright © 2011-2022 走看看