Использование xargs для составления списка файлов Java - PullRequest
0 голосов
/ 11 октября 2011

У меня есть дерево каталогов с несколькими файлами Java. Пример:

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

Я хочу скомпилировать все файлы в этих папках и переместить скомпилированные файлы в folder A-bin или folder B-bin соответственно в соответствующую папку src. Я прочитал, что я могу сделать это с помощью утилиты xargs, но я не могу сделать голову или хвост из ручного ввода.

Может кто-нибудь указать мне путь?

Ответы [ 2 ]

1 голос
/ 11 октября 2011

Вы обязаны использовать xargs для их компиляции?

Почему бы не взглянуть на Java Makefiles ? Они облегчат вашу жизнь при создании проекта.

Кроме того, еще один совет, я рекомендую вам взглянуть на Apache Maven . Простой в использовании и очень полезный, когда ваш Java-проект становится больше со временем. Вот краткое руководство к Maven.

Основной 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 
0 голосов
/ 25 апреля 2014

Другой вариант, если вы хотите придерживаться 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
...