Я работаю над системой сборки, в которой долгое время накапливаются плохие практики и другие плохие практики, и сейчас я переписываю сборку. Используются следующие языки: C / C ++, Fortran, Ada и Java, и в настоящее время я придерживаюсь make-файлов в стиле GNU - хотя мы рассматриваем другие альтернативы, такие как SCons.
С учетом вышесказанного я ищу некоторые конкретные рекомендации, а не рекомендации в форме "использовать другую систему сборки" и т. Д.
Кто бы ни писал конкретный make-файл, на который я сейчас смотрю, планировал последовательную сборку кода Java, который выглядит примерно так:
LIST_OF_JAVA_FILES = file1.java
LIST_OF_JAVA_FILES += file2.java
LIST_OF_JAVA_FILES += file3.java
...
LIST_OF_JAVA_FILES += fileN.java
all: ${LIST_OF_JAVA_FILES}
${LIST_OF_JAVA_FILES} : %.class : %.java
${JAVAC} ${CLASSPATH} ${<}
При условии, что вы выполняете сборку в серийном режиме, это прекрасно работает Однако, как только зависимости попадают в смесь, это становится более проблематичным.
- Компиляторы C / C ++ имеют встроенные опции для генерации зависимостей ... существует ли подобное средство для Java?
- Нужно ли использовать сторонние инструменты (например, Jikes) для создания зависимостей?
- Как правило, если команда использовала make-файлы для создания чего-либо, связанного с java, более типично вызывать java-компилятор один раз, перечисляя все
.java
файлы в одной командной строке -vs- по одной цели для каждого .class
файл?
- Если это более распространено, это просто для простоты или есть более глубокая причина?
- примечание: я понимаю, что для последовательной сборки это будет более быстрый вариант, но я хочу получить ответ на эмпирические тесты для параллельных сборок