使用xargs编译Java文件列表

时间:2011-10-11 13:58:01

标签: bash xargs

我有一个包含多个java文件的目录树。例如:

top
 |-- src1
 |    |--- folder A
 |    |--- folder B
 |-- src2
 |    |--- folder A
 |    |--- folder B
...

我想编译这些文件夹中的所有文件,并将编译后的文件相应地移动到相应folder A-bin文件夹中的folder B-binsrc。我已经读过我可以使用xargs实用程序执行此操作,但我无法通过手动输入进行正面或反面。

有人可以指点我吗?

2 个答案:

答案 0 :(得分:1)

您是否有义务使用xargs编译这些?

为什么不看看java Makefiles? 在构建项目时,它们将使您的生活更轻松
另外,还有一条建议,我建议您查看Apache Maven。当您的Java项目及时变大时,易于使用且非常轻松。 这是Maven的quick guide

基本Makefile:

JC=javac
JR=java

build: ref.java
        $(JC) ref.java

run: ref.class
        $(JR) ref

clean:
        rm -f *.class

另一个例子:(取自上面的指南)

JFLAGS = -g
JC = javac
.SUFFIXES: .java .class
.java.class:
        $(JC) $(JFLAGS) $*.java

CLASSES = \
        Foo.java \
        Blah.java \
        Library.java \
        Main.java 

default: classes

classes: $(CLASSES:.java=.class)

clean:
        $(RM) *.class 

答案 1 :(得分:0)

如果你想坚持使用bash + javac,另一个选择是使用find来识别.java文件,将结果存储在变量中,然后检查变量是否为空。

SRC=`find src -name "*.java"`
if [ ! -z $SRC ]; then
    javac -classpath $CLASSPATH -d obj $SRC
    # stop if compilation fails
    if [ $? != 0 ]; then exit; fi
fi