2013-09-08 3 views
0

Я хотел бы быть в состоянии собрать все Java-файлы во всех подкаталогах от того, что я работаю в.Компиляция Java-файлы в подкаталогах

Я знаю, как собрать все Java-файлы в том же каталоге, но как это сделать для всех подкаталогов (и подкаталогов этих и т. д.)?

+0

Какой IDE или инструмент для сборки вы используете? Я бы не предложил вам использовать командную строку, если вам не нравится делать все возможное. (В этом случае вы не одиноки) –

+0

Я использую командную строку. – user473973

+0

Я использую maven и IntelliJ. Когда я хочу запустить программу, мне не нужно думать о том, какие файлы/каталоги нужно перекомпилировать, я просто нажимаю 'Run' для запуска или' Debug' для отладки. –

ответ

0

Есть несколько способов сделать это.

Использование JAVAC

Вы должны знать все каталоги заранее, или быть в состоянии использовать подстановочные знаки. Команда идет так:

javac dir1/*.java dir2/*.java dir3/dir4/*.java dir3/dir5/*.java dir6/*src/*.java 

(OR)

Если вы можете создать список всех * .java файлов в вашем проекте, это легко:

Linux

$ find -name "*.java" > sources.txt 
$ javac @sources.txt 

Окна

> dir /s /B *.java > sources.txt 
> javac @sources.txt 

Используя инструмент сборки

Это всегда лучше использовать инструмент, который был разработан для создания программного обеспечения.

Использование Ant

Если создать простой файл build.xml, который описывает, как создать программное обеспечение:

<project default="compile"> 
    <target name="compile"> 
     <mkdir dir="bin"/> 
     <javac srcdir="src" destdir="bin"/> 
    </target> 
</project> 

вы можете скомпилировать все программное обеспечение, выполнив следующую команду:

$ ant

Теперь, когда вы знаете все способы (по крайней мере, большинство способов), выбор за вами! :-)

+0

Спасибо! Так будет работать 'javac * /. Java'? Однако это будет работать только на одном уровне каталогов. – user473973

+0

отредактировал ответ с дополнительной информацией. Если ответ помог, пожалуйста, поддержите, и «принимайте как ответ». Он помогает новичкам, таким как я @stackoverflow :-) – VictorCreator

+0

Для нескольких каталогов я предлагаю вам использовать скрипт ant. Однако, если вы хотите, чтобы все было просто, вы можете использовать опцию «find» или «dir» (я упомянул об этом в своем ответе). Это работает для всех подкаталогов! – VictorCreator

0

попробовать с помощью муравьиного сценария, дать базовый реж исходного файла для SRCDIR

<target name="compile"> 
    <javac srcdir="src" destdir="build/classes"/> 
</target>