колледже Доусон в Монреале, Канада. Он также является программным консультантом и по совместительству преподавателем в Школе расширенного обучения при Институте вычислительной техники Университета Конкордия . Он ведет блог на omniprogrammer.com и пишет в Твиттере @omniprof . Его регулярные колонки о NetBeans в образовании перечислены здесь .
… и на работе!
Я опоздал на вечеринку. Всего год назад я наконец решил использовать Maven на всех своих курсах. Если вы можете сказать, что всю свою карьеру вы будете работать только с одним инструментом разработки, как должен делать разработчик .Net, то Maven не для вас. Для остальных 99,9% Java-программистов, которым иногда приходится использовать разные среды разработки, такие как NetBeans, Eclipse или IntelliJ, иногда одновременно, Maven становится обязательным.
Включение сторонних библиотек в студенческие проекты
Моей первоначальной причиной использования Maven было решение проблемы включения сторонних библиотек, которые нужны моим студентам для их проектов. Необходимо было отследить сайт библиотеки и загрузить соответствующие файлы. Затем эти файлы необходимо скопировать в соответствующий каталог проекта, а затем добавить в путь сборки проекта среды IDE.
Как учитель, проблема возникла, когда пришло время оценивать код студента. Я много лет пользуюсь репозиторием, поэтому студенты ничего мне не передают. В крайний срок проекта я просто импортирую их проекты из репозитория в IDE, которую мы использовали. Теперь веселье началось. В проектах отсутствовали библиотеки.
Студенты довольно умные. Мои часто умнее меня. У меня есть опыт. В этой среде «скачать библиотеку» мои ученики поняли, что как только библиотека будет добавлена в один проект, на нее можно будет ссылаться в других проектах. Некоторые даже поняли, что все, что им нужно, — это одна папка на своем компьютере для хранения всех загруженных библиотек, на которые они могут ссылаться на любой проект, над которым они работают.
Я говорю своим студентам, что после окончательной фиксации проекта они должны проверить, как он будет работать, когда я импортирую его. Это даже не должно быть после последнего коммита, поскольку это обычно происходит в полночь за день до его исполнения. В любое время в процессе разработки все, что им нужно было сделать, это использовать компьютер колледжа для импорта проекта. Компьютеры колледжа всегда сбрасываются в чистое состояние, поэтому никаких установленных библиотек нет. Если их проект будет импортирован, собран и выполнен, тогда он будет в формате, подходящем для отправки мне. Большинство студентов не беспокоятся, и я добавляю недостающие файлы. Конечно, сейчас у меня плохое настроение, и это может повлиять на то, как я оцениваю их работу.
Файлы манифеста и файлы JAR
Вторая проблема касается файла JAR. При использовании NetBeans и выполнении «Очистить и собрать» создается исполняемый файл JAR. Файл манифеста гласит следующее:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.9.2 Created-By: 1.8.0_05-b13 (Oracle Corporation)
Class-Path: lib/mysql-connector-java-5.1.23-bin.jar
X-COMMENT: Main-Class will be added automatically by build
Main-Class: com.kenfogel.StandardJavaProjectJar
Файл JAR не включает файл mysql-connector-java-5.1.23-bin.jar. Вместо этого файл находится в подпапке папки, содержащей файл jar программы. Это означает, что для распространения этой программы вы должны распространять папку, а не только JAR.
Я уверен, что где-то есть настройка для включения библиотек в исполняемый JAR, но у кого есть время, чтобы отследить каждый неясный параметр IDE. Я думаю, что я настолько ленив, насколько иногда могут быть мои ученики.
Управление версиями
Третья проблема, связанная с работой с библиотеками вручную, заключается в том, что вы несете ответственность за обеспечение наличия последней версии. Что делать, если вы должны использовать конкретную версию? Было много историй о взломе кода с конкретными версиями библиотек.
Я должен отметить, что все эти проблемы усиливаются при разработке серверного кода в Java EE или Spring. Добавить в Arquillian для тестирования и управления сборкой может быть кошмаром.
Каково решение? Решение Maven. От Сонаты Типа Maven к Примеру книга Maven определяется как:
Maven — это инструмент управления проектом, который включает в себя объектную модель проекта, набор стандартов, жизненный цикл проекта, систему управления зависимостями и логику для выполнения целей подключаемых модулей на определенных этапах жизненного цикла. Когда вы используете Maven, вы описываете свой проект с помощью четко определенной объектной модели проекта, затем Maven может применять сквозную логику из набора общих (или пользовательских) плагинов.
http://books.sonatype.com/mvnex-book/reference/introduction-sect-whatIsMaven.html
Из этого описания Maven представляется сложным инструментом. Реальность совсем другая.
В моей следующей статье я рассмотрю файл POM.xml для проекта JavaFX. Этот файл объектной модели проекта содержит описание того, что необходимо для компиляции, сборки, выполнения, тестирования и развертывания проекта Java. Если все сделано правильно, этот файл POM.xml позволит использовать проект в любой среде IDE, а не только в той, которая использовалась для первоначальной разработки.
Книги Sonatype по Maven — одни из лучших документов, которые я когда-либо читал. Вы можете найти всю их информацию о Maven на http://www.sonatype.org/maven .