Может быть, я не был талантлив, и когда я впервые встретил Мавен, меня смутило различные неизвестные учебные пособия. В своем более позднем использовании я обнаружил, что большинство функций Maven не так сложно, как я себе представлял.
Эта статья предназначена для начинающих Maven, надеясь позволить ей как можно быстрее понять Maven и насладиться серией преимуществ, которые он приносит.
[Простой вопрос]
Прежде чем дать объяснение, задайте простой вопрос.
Если вы разрабатываете два проекта Java в рамках Eclipse и называете их A и B, некоторые функции в проекте A зависят от определенных классов в проекте B, как поддерживать эту зависимость?
Я сделал это перед использованием Maven, упакованного проекта B в качестве JAR и импортировал файл JAR B в рамках библиотеки проекта A.
Это имеет очевидные недостатки:
1. Если в процессе разработки обнаружена ошибка в B, B должен быть переупакован и перекомпилирован для проекта A.
2. При сотрудничестве в разработке проекта A, чтобы убедиться, что он может работать нормально, либо выбрать пакет B в A, либо выбрать B, как B, и сообщите разработчику о том, как его использовать. Очевидно, оба метода не очень хороши. Первый может вызвать отходы ресурсов (например, разработчик может разрабатывать другие проекты, которые полагаются на B, которые хранятся на местном уровне), в то время как последний принесет риск для обычной работы проекта (если работа передается на ручную работу, она будет предназначена для обеспечения определенной скорости отказов).
Следовательно, вручную контролировать зависимости между проектами таким образом, очевидно, является «плохим» подходом.
[Введение в Maven]
Согласно мнению автора, основная функция Maven состоит в том, чтобы разумно описать зависимости между проектами.
Все проекты Maven содержат файл с именем pom.xml, который записывает свой собственный <groupid> <artifactid> <serse> и другие поля. Эти поля заполнены при создании проекта Maven, и Maven найдет проект, основанный на них.
Другим тегом ключа в POM является <зависимости>, который может содержать несколько тегов <Degency>, а под <зависимость> - это поля зависимости, такие как <groupid> <ratifactid> <sersive>, представленные выше, которые определяют уникальную версию проекта.
Типичный pom.xml [от Project Luajava]:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd "> <dolidyversion> 4.0.0 </modelversion> <groupid> org.keplerproject </GroupId> <ratfactid> luajava </artifactid> <seriate> 1.1 </версия> <упаковка> packaging> packaging> packaging> packagegaging> packaging> packaging> packaging> packaging> packaging> packagegaging> packagegaging> packagegaging> packagegaging> packagegaging> packagegaging> packagegaging> packagegaging> packagegaging> packageging> packagegaging> <mame> luajava </name> <url> http://maven.apache.org </url> <properties> <prop.build.sourceencoding> utf-8 </project.build.sourceencoding> </properties> <buld> <groupid> org.pache <Artifactid> maven-compiler-plugin </artifactid> <sersion> 2.0.2 </version> <Конфигурация> <Source> 1.7 </source> <Target> 1.7 </target> </configuration> </plugin> </plugins> </build> <Degy Devision> <Depective> <groupId> junit </GroupId> <Artifactid> artifact> artifact> </artifact> <версия> 3.8.1 </version> <clapope> test </scope> </deperency> </project>
[Библиотека Maven]
Принимая проекты A и B только сейчас, в качестве примера, напишите <зависимость> в файле POM проекта A, и Maven найдет проект B в рабочей области и создаст зависимости. В настоящее время проект A может напрямую получить доступ к ресурсам класса в проекте B, а точка останова в проекте B по -прежнему будет достигнуто во время отладки A.
В дополнение к ассоциации зависимостей рабочей области, Maven также может ассоциировать проекты на отдаленном изображении. По умолчанию, если в рабочей области нет соответствующей записи проекта, Maven подключится к центральному репозиторию для поиска. Если найдено, он загрузит проект в локальную библиотеку (локальная библиотека в Windows расположена в каталоге .M2 пользовательского документа) и автоматически устанавливает ассоциацию. Это очень удобная функция. Когда нам нужна дополнительная поддержка пакета JAR, нам больше не нужно загружать вручную и вводить ее. Нам нужно только вставить поля зависимости, соответствующие проекту в соответствующее местоположение POM, и оставить остальное в Maven для завершения.
[Пример]
Итак, как мы узнаем, что поля, такие как GroupId от требуемого проекта?
Вообще говоря, если официальный проект поддерживает Maven, на его странице будет место зависимость для копирования, но существует также ситуация, когда Maven поддерживается, но не дано зависимых полей. Особенности Maven других проектов поддерживаются третьими лицами, и трудно получить поддержку Maven из официальных каналов.
Следовательно, предпочтительным решением для запроса полей зависимости является использование службы поиска Maven для поиска.
Здесь я рекомендую адрес: mvnrepository.com
Ниже приведен пример использования Eclipse для связи драйвера MySQLJDBC. Перед этим, пожалуйста, подтвердите, что он поддерживает Maven в Help-> Abouteclipse:
В официальной новой версии Eclipse поддержка Maven уже встроена. Если версия старше, вы можете установить плагин Maven.
Давайте сначала создадим новый проект Maven, New-> Project-> MavenProject-> createAsimpleProject (Skiparchetypeselection).
Ниже приведен самый важный шаг. Заполните поля зависимости, такие как группа этого проекта. Заполненные здесь поля будут использоваться, когда от них зависят другие проекты. Небеленные части необязательны:
После этого мы искали "mysql jdbc" на mvnrepository.com
Вскоре мы нашли результат и нажали, чтобы просмотреть подробную информацию о версии:
Вот список нескольких версий и использования MySQL JDBC. Здесь мы выбираем вторую новую версию 5.1.34:
Скопируйте содержимое в поле Maven и напишите их в POM <зависимости>:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.test</groupId> <artifactId>maventest</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>mysql</groupId> <Artifactid> mysql-connector-java </artifactid> <sersion> 5.1.34 </version> </gethyse> </depertive> </project>
После окончания прогресса, вы можете увидеть, что в проекте больше зависимостей Maven, и вы можете найти пакет драйверов JDBC, который мы только что представили:
[Другие функции]
1. Зеркальный источник
Очевидно, что центральный склад Maven имеет относительно большую нагрузку и не находится в Китае, поэтому скорость очень медленная, а иногда зависимости не могут быть обнаружены. Поэтому, особенно в небольших случаях разработки команды, создание частного сервера Maven значительно повысит эффективность. Вот инструмент Maven изображения построения: Nexus: http://www.sonatype.org/nexus/
Используйте его, чтобы быстро и легко построить частный источник изображения Maven, а затем настройте его в настройках Maven.xml.
2. Ленивый загрузка исходного кода SRC
Некоторые время нам нужно обратиться к исходному файлу, который зависит от проекта. В настоящее время мы можем попытаться дважды щелкнуть файл класса напрямую. Если в источнике изображения Maven есть исходный файл, он будет автоматически загружен в локальную область, а Eclipse автоматически загружается и отображается.
3. Конфигурация компиляции параметров
Автор использует версию Eclipseluna. Компиляционная версия Java по умолчанию Maven - 1,5. Мы можем указать его компиляционную версию в POM, чтобы улучшить ее до 1.7 (см. Тег Build в Luajavapom); Кроме того, эти настройки также будут прочитаны и правильно настроены инструментами автоматизации, такими как непрерывная интеграция Jenkins.
Суммировать
Вышеупомянутое все о быстрое понимание Maven. Я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на другие связанные темы на этом сайте. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!