Какую версию Make использовать для Java? - PullRequest
2 голосов
/ 25 июля 2010

У меня есть make (Windows SDK), nmake (Visual Studio) и make (CodeGear)

Какую версию make я использую для компиляции приложений Java? Где я могу получить это "сделать"? Я скачал JDK, и нет никакой марки. Я искал что-то для компиляции Java-файла сборки.

Что вы используете, если у вас есть MAKEFILE и некоторые * .java файлы?

Ответы [ 4 ]

8 голосов
/ 25 июля 2010

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 вместо этого, на мой взгляд.

4 голосов
/ 25 июля 2010

Используйте любую версию, которая обрабатывает ваш make-файл.Make не делает никакой компиляции, это всего лишь система сценариев, разработанная для создания программного обеспечения.Он просто собирается делегировать javac или что-то еще для компиляции ваших файлов Java.

Я бы попробовал все три в вашей системе.

3 голосов
/ 25 июля 2010

Есть два ответа.

A1: Если вы хотите использовать MAKEFILE, вам нужно посмотреть документацию по сборке, которая поставляется с программным обеспечением, чтобы выяснить, какую версию make использовать.Если нет документации по сборке, относящейся к вашей платформе, посмотрите документацию для платформы, на которой изначально было реализовано программное обеспечение.За прошедшие годы было много разных версий Make, и у каждой версии есть свои особенности.

Другая проблема, с которой вы можете столкнуться при использовании MAKEFILE, заключается в том, что make-файлы не являются переносимыми.Обычно в правилах есть все виды зависимостей от платформы;например, имена команд, пути к командам и т. д.Если вы пытаетесь построить на другой платформе, эти проблемы могут потребовать взлома MAKEFILE.(Кроме того: в мире C / C ++ существует лабиринтный набор инструментов GNU, называемый automake / autoconf, который предназначен для решения этой проблемы. Но, судя по всему, у вас просто есть ванильный make-файл.)

В итоге, если вы хотите придерживаться make, делайте то, что говорится в документации по сборке, и в отсутствие какой-либо соответствующей документации по сборке просто попробуйте любую версию make и посмотрите, что произойдет.И будьте готовы изучить "make-ese" и взломать make-файлы, если есть проблемы, связанные с платформой.

A2: IMO, лучшей альтернативой этому было бы отказаться от существующего MAKEFILE и создать свой собственный файл сборки, используя либоМуравей или Мавен.

1 голос
/ 25 июля 2010

Если вы хотите исполняемый JAR, не используйте make-файл, просто следуйте этим командным приглашениям:

javac DiveLog.java
jar cvfm yourjarname.jar manifest allyourcompiledclasses.class

И чтобы запустить банку из консоли, вы набираете:

java -jar yourjarname.jar
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...