美文网首页
如何使用javac手动编译web项目

如何使用javac手动编译web项目

作者: 李兴华的简书 | 来源:发表于2018-07-25 22:11 被阅读0次

    问题描述

    最近发现eclipse下编译的class文件和linux平台下面编译的class文件大小不一样。究其原因,是因为eclipse编译的时候应该自动带-g选项而且不带-O选项,即类增加了编译信息而又没有做编译优化。于是,想在linux下面写一个程序编译java文件,不想用ant,希望用javac简单点。

    问题解决

    web项目的java文件往往不止一个,一个一个的列举不现实,因此,可以用find命令生成一个list。

    properties等配置文件需要一并拷贝到目标文件夹。

    应该选用-O选项来编译,希望能够减少启动时间。

    于是,脚本来了:

    #!/bin/sh

    TARGET_DIR=~/tmp/target/

    SRC_DIR=~/tmp/src/main/java/

    RESOURCE_DIR=~/tmp/src/main/resource/

    LIB_PATH="."

    LIB_DIR=[对应你的项目的lib的路径,我们这里是weblogic的lib文件夹]

    rm -f ${SRC_DIR}sources.list

    find $SRC_DIR  -name "*.java" -type f > ${SRC_DIR}sources.list

    rm -rf $TARGET_DIR

    mkdir ${TARGET_DIR}

    for jar_file in `find $LIB_DIR -name "*.jar" -type f`

    do

        LIB_PATH="${LIB_PATH}:${jar_file}"

    done

    javac -d $TARGET_DIR -sourcepath ${SRC_DIR} -classpath $LIB_PATH @${SRC_DIR}sources.list

    cp -r $RESOURCE_DIR $TARGET_DIR

    后记:

    javac好像在1.6及以前的版本不支持@java源文件列表的参数形式,这时候,我们可以采用以下命令代替。

    find ${SRC_DIR} -name "*.java" -type f | xargs -I {} javac -d $TARGET_DIR -sourcepath ${SRC_DIR} -classpath $LIB_PATH 

    后记二:

    因为Spring涉及到很多annotation的使用,所以,以上方法编译结果有问题。最后还是选用了ant来build项目。

    相关文章

      网友评论

          本文标题:如何使用javac手动编译web项目

          本文链接:https://www.haomeiwen.com/subject/cacmmftx.html