我有一个包含多个java文件的目录树。例如:
top
|-- src1
| |--- folder A
| |--- folder B
|-- src2
| |--- folder A
| |--- folder B
...
我想编译这些文件夹中的所有文件,并将编译后的文件相应地移动到相应folder A-bin
文件夹中的folder B-bin
或src
。我已经读过我可以使用xargs
实用程序执行此操作,但我无法通过手动输入进行正面或反面。
有人可以指点我吗?
答案 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