Java-проектов редко используют make и make-файлы. Фактически, я только когда-либо видел, чтобы это использовалось один раз на практике, и это было 13 лет назад, до появления инструментов сборки Java. Вместо этого в проектах Java используется один из двух ведущих инструментов сборки.
Исходя из вашего вопроса, я собираюсь предположить, что у вас нет особых причин использовать make (в том смысле, что вы не пытаетесь скомпилировать существующий проект, имеющий только Makefile).
Ant
Ant - это инструмент для построения сценариев на основе XML, который имеет небольшое (но не очень) сходство с концепцией make-файла. Сценарий сборки Ant определит ряд задач. Эти задачи будут зависеть от других задач. Задачи могут включать компиляцию исходных файлов Java, создание jar-файлов и все, что вам действительно нравится.
Ant очень гибок, но в конечном итоге вы снова и снова пишете набор шаблонов (между проектами). Не существует двух одинаково сложных Ant-проектов, и зависимости могут стать огромной проблемой. Под «зависимостями» я говорю не об исходных зависимостях, а о сторонних библиотеках. У Ant есть еще один инструмент под названием Ivy для управления зависимостями.
Maven
Maven - другой распространенный инструмент для сборки. Maven сильно отличается от Ant тем, что Maven определяет типы проектов (архетипы), такие как веб-приложение. Когда вы выбираете один (или более) архетип для своего проекта, он требует достаточно глубокой структуры каталогов. Например:
project-name
+- src/
+- main/
+- java/
+- com/example/project-name/
+- Java source files
+- test/
+- tends to mirror above
+- target/
+- classes/
+- com/example/project-name/
+- Java class files
+- test-classes/
+- tends to mirror above
...etc...
Теперь некоторым людям это не нравится, отчасти потому, что некоторым людям просто не нравится, когда им говорят, что делать (имхо), а также по таким причинам, как наследственные причины и другие факторы. Лично я считаю, что это хорошо, потому что, когда вы ознакомитесь с любым проектом веб-приложения Maven, вы можете перейти к любому другому проекту веб-приложения Maven и найти свой путь.
Maven также предоставит вам множество стандартных команд, таких как компиляция, тестирование, установка и т. Д.
Maven также полезен для зависимостей от сторонних библиотек. Вы объявляете их в своем файле проекта Maven, и они извлекаются из репозиториев в Интернете (и кэшируются локально, если вы не настроили это иначе).
Так что мой совет - используйте один из этих двух. Вы можете использовать Makefiles, если вы пришли из C / C ++, но на самом деле это не Java. Как я уже сказал, у вас может быть причина использовать make с Java, например, как существующий проект, но для любого нового проекта вы должны использовать Ant или Maven вместо этого, на мой взгляд.