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

问题描述

最近发现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项目)