Как я могу построить график компиляции для файлов Java? - PullRequest
0 голосов
/ 20 июня 2009

У меня есть большое количество классов в проекте, и я хотел бы собрать их все из скрипта. Дело в том, что классы должны быть скомпилированы в определенном порядке, например: у меня есть класс с именем A , который зависит от класса с именем B . Допустим, класс B зависит от класса с именем C . Для того, чтобы я скомпилировал класс A, мне нужно сначала скомпилировать B и C.

Есть ли какой-нибудь инструмент, который я мог бы использовать, чтобы установить порядок компиляции классов, чтобы мне не приходилось анализировать каждый класс и определять это самому? Я предпочел бы, чтобы инструмент мог сохранить файл с порядком файлов, которые должны быть скомпилированы, чтобы я мог разобрать это из своего сценария.

Спасибо!

Ответы [ 3 ]

6 голосов
/ 20 июня 2009

Если вы скомпилируете их все одновременно (в одном и том же вызове javac), вам не нужно делать ничего из того, что вы описываете. javac достаточно умен, чтобы компилировать все файлы, которые вы ему даете, одновременно, поэтому у него нет проблем с компиляцией не по порядку.

2 голосов
/ 20 июня 2009

Компилятор Java (Javac) уже создает список зависимостей всех файлов классов, которые вам нужно скомпилировать. Реальная зависимость здесь находится между пакетами - не отдельными java-файлами в одном пакете (об этом автоматически заботится компилятор ).

Используйте такой инструмент, как Ant или Maven , чтобы указать и скомпилировать все файлы в различных пакетах и ​​создать окончательный дистрибутив.

Если вы используете IDE, например NetBeans, он автоматически сделает это за вас. В качестве альтернативы, если использовать такой инструмент, как JDepend

1 голос
/ 20 июня 2009

Подобные проблемы упорядочения DAG обычно решаются с помощью топологической сортировки. См. Википедия для описания. Я не знаю, есть ли такой инструмент, как тот, который вы ищете, но реализовать его самостоятельно не должно быть так сложно.

...