Makefile для Java
![]() | Как многие из вас Java программисты имели проблемы компиляции программ? библиотеки из $ CLASSPATH, километрового параметры к компилятор Java. Даже при использовании среды разработки для Java, ситуация не улучшится много. Мы тратим много времени замедления и установить при каждом запуске заполнения отсутствует что-нибудь! |
Вы можете избежать всех этих проблем просто путем организации источника Java и использовании Makefile, написанные для этой цели.
Что такое Makefile
Makefile это файл, который описывает этапы efftuare добраться до файлов, которые мы получим дерево, и все его зависимости. Он используется в Unix-платформ и могут быть использованы для составления каждой из программ типа. Сделать утилиту интерпретирует Makefile и компиляция исходного кода исполняемых программ и библиотек.
Преимущества использования делать
Многие из вас скептически использования Makefile для каждого проекта Java, по той простой причине, что Makefile необходимо указать зависимостей между файлами, которая, несомненно, меняется от проекта к проекту. Так что мы должны писать Makefile друг для друга наш проект. Это ограничение можно преодолеть путем написания Makefile генератор может вычислить все зависимости для проекта, который будет завершен использовать тот же сценарий для всех проектов без moficare ничего в Makefile.
Конечно, не незначительным преимуществом является возможность сделать ровно столько, чтобы заполнить. Пожалуйста, избегайте делать то, что уже завершена, и не был изменен с существенной экономией времени.
Что только Makefile вы можете построить все источники проекта.
Как использовать
Makefile, что я писал для создания Java проекты могут быть использованы без изменений на проекты, которые имеют определенную структуру каталогов. Источник Java должны директория для. Java, 1 файлов. Класса, и кувшин для библиотек.
Например:
| - Src | `- Главная | | - Java | | `- Com | | `- Пример | | | - ExampleA.java | | | - ExampleB.java | | `- ExampleC.java | `- Ресурсы | `- Res.java | - Классы | - Libs | | - Общие | | | - База данных | | | | - DB1.jar | | | `- DB2.jar | `- Вход | `- Log.jar | - Банки
Чтобы его использовать, то просто писать код ниже в Makefile в корневой директории проекта, убедитесь, что имя каталога, указанного в файле (для классов. Класс, для SRC. Libs для Java-банку) и запуска контроль make
вот и все. Если мы хотим сосуд целом проект только запускать make && make jar
Makefiles
# # Makefile # Автор: Данило Abbasciano # # Установите здесь справочников и источников для классов CLASS_DIR = классов Src = SOURCE_DIR JARS_DIR банки = find $ ( SOURCE_DIR ) - name "*.java" - printf % h\\n | sort | uniq | sed 's/$(SOURCE_DIR) \/ \? //' ) Подразделами: = $ (скорлупа найти $ (SOURCE_DIR) - имя "*. Java" - Е% п \ п | рода | Uniq | SED 'S / $ (SOURCE_DIR) \ / \? / /') local / java / bin JAVA_HOME = / USR / местные / Java / бен Поле # компилятор # JDEBUGFLAGS =- г-протест JDEBUGFLAGS = #-O-зависи-nowarn ) / javac СКК = $ (JAVA_HOME) / Javac clean classes compile jar Странной: чистая компиляция банку классов. к: SUBDIRS ) ; do \ @ @ В р $ (подразделами); делать \ p ; \ эхо 'собирать' $ $ р; \ $$ p ; \ Экспорт SubD = $ $ р; \ print - directory compile ; \ делать - нет - печать - собирать каталог \ сделанный Чистота: f * ~ *. class *. bak $ ( foreach dir ,$ ( SUBDIRS ) ,$ ( CLASS_DIR ) /$ ( dir ) /*. class ) - К - Г * ~ *. Бак *. класса $ (Еогеасп каталог, $ (подразделами) $ (CLASS_DIR) / $ (DIR) / *. класс) ) /$ ( SUBDIR ) LOCAL_CLASS_DIR = $ (CLASS_DIR) / $ (SubD) ) /$ ( SUBDIR ) LOCAL_SOURCE_DIR = $ (SOURCE_DIR) / $ (SubD) банке: ) ; jar - cf ../$ ( JARS_DIR ) / project . jar * CD $ (CLASS_DIR) банку - ср .. / $ (JARS_DIR) / проекта. банку * компиляции: классы # Создать каталог целевой класс, если нет. ) : $ (LOCAL_CLASS_DIR): LOCAL_CLASS_DIR ) Mkdir - р $ (LOCAL_CLASS_DIR) Новое правило # для Java . Суффиксы: java . class . Суффиксы:. Java. Класса # Это говорит магические команды сделать, чтобы найти файлы классов в реж Другой class $ ( LOCAL_CLASS_DIR ) VPATH%. $ класса (LOCAL_CLASS_DIR) java $ ( LOCAL_SOURCE_DIR ) VPATH%. Java $ (LOCAL_SOURCE_DIR) # Classpath, олл-ин / Дозы и. / Libs ) :$ ( SOURCE_DIR ) :$ ( subst . jar ,. jar :,$ ( wildcard libs /*. jar libs /*/*. jar libs /*/*/*. jar jars /*. jar ) ) LIBCLASSPATH: = $ (CLASS_DIR): $ (SOURCE_DIR): $ (subst. Jar. Jar: $ (по маске библиотеки / *. библиотеки банку библиотеки /*/*/*. /*/*. банка банки банку / * . кувшин)) # Компилятор командной class : . Java. Класс: ) $ ( JCC ) - nowarn - d $ ( CLASS_DIR ) $ ( JDEBUGFLAGS ) $< CLASSPATH = $ (LIBCLASSPATH) $ (СКК) - nowarn - D $ (CLASS_DIR) $ (JDEBUGFLAGS) $ < # Узнайте целевых файлов $ ( LOCAL_SOURCE_DIR ) /*. java ) PATHFILES = $ (по маске $ (LOCAL_SOURCE_DIR) / *. Java) $ ( LOCAL_SOURCE_DIR ) /,,$ ( PATHFILES ) ) FILES = $ (SUBST $ (LOCAL_SOURCE_DIR) /,, $ (PATHFILES)) java =. class ) классов: $ (FILES:. Java =. класс)
Хорошее компиляции.















Один ответ на "Makefile для Java"
thegamer - 28 августа 2009
Я предпочитаю муравей!
Вы должны попробовать его ...
Написать ответ