Что такое склад Maven
Например, когда мы не используем Maven, в прошлом, мы привыкли создавать проекты с ANT, мы часто видим подкаталог под названием /LIB, в котором хранится различные файлы JAR сторонних зависимостей, такие как log4j.jar, junit.jar и т. Д.
Каждый раз, когда вы создаете проект, вам необходимо создать такой каталог /LIB, а затем копировать пару файлов JAR, что является очевидным дублированием. Повторение - это всегда отправная точка кошмара. Несколько проектов не имеют одного и того же файла JAR, который не только вызовет отходы дисковых ресурсов, но и затрудняет управление версиями согласованности.
Кроме того, если вы используете инструменты управления версиями, такие как SVN (вы не используете инструменты управления версиями? Попробуйте SVN сейчас, это может помочь вам решить много головных болей), вам необходимо отправить большое количество файлов JAR в библиотеку кода, но инструменты управления версиями не превосходны в обработке двоичных файлов.
Репозиторий Maven - это место, где расположены все файлы JAR (война, Zip, POM и т. Д.). Все проекты Maven могут получить банку зависимости, в которой они нуждаются в том же хранилище Maven, который экономит дисковые ресурсы. Кроме того, поскольку все банки в репозитории Maven имеют свои собственные координаты, которые сообщают Maven свою групповую идентификатор, идентификатор компонента, версию, метод упаковки и т. Д., Проект Maven может легко выполнить управление версией зависимости. Вы не обязаны отправлять файлы JAR в репозиторий SCM, вы можете создать хранилище Maven на уровне организации для всех участников.
Короче говоря, Maven Repository помогает нам управлять артефактами (в основном банок).
В Maven вывод любой зависимости, плагина или конструкции проекта можно назвать компонентом.
Maven хранит все общие компоненты всех проектов в унифицированном месте. Это унифицированное место называется складом. (Склад, где хранятся зависимости и плагины)
Любой компонент имеет уникальную координату. Мавен определяет уникальный путь хранения компонента на складе на основе этой координаты.
Интерпретировать путь хранения Maven в хранилище:
1. Подготовьте путь на основе GroupID, преобразуйте сепаратор периода в сепаратор пути, то есть конвертируйте «». к "/" ; Пример: org.testng ---> org/testng
2. Подготовьте путь на основе Artifactid и подключить Artifactid к задней части: org/testng/testng
3. Используйте версию, чтобы подготовить путь и подключить версию к задней части: org/testng/testng/5.8
4. Подключите ArtifactId к версии с дефисатором дефиса сзади: org/testng/testng/5.8/tesng-5.8
5. Судя по суждению, есть ли компонент классификатор, добавьте дефис сепаратора после элемента 4 и добавьте классификатор, org/testng/testng/5,8/tesng-5,8-jdk5
6. Проверьте расширение компонента. Если расширение существует, добавьте разделитель периода и расширение. Расширение определяется путем упаковки, org/testng/testng/5,8/tesng-5,8-jdk5.jar
На этом этапе мы понимаем детали хранения компонентов Maven.
Maven Warehouse Classification:
Склад Maven имеет только две категории: 1. Местный склад 2. Удаленный склад, который разделен на три типа на удаленных складах: 2.1 Центральный склад 2.2 Частный сервер 2.3 Другие общественные склады
1. Местный склад, как следует из названия, находится там, где Maven хранит компоненты локально.
Примечание. Местный репозиторий Мавена не будет создан после установки Maven. Он создается только тогда, когда команда Maven выполнена впервые.
Расположение по умолчанию локального репозитория Maven: будь то Windows или Linux, в каталоге пользователя есть каталог .m2/ Repository/ Repository. Это место по умолчанию репозитория Maven.
Как изменить местоположение локального репозитория Maven по умолчанию: здесь мы хотим представить новый элемент: LocalRepository, который существует в настройках Maven.
1.1 Измените локальный репозиторий, который настраивает общепользовательское: сначала создайте файл stens.xml в каталоге /.m2/, а затем установите значение элемента LocalRepository на нужный адрес репозитория в ~/.M2/funs.xml.
<Tradings> <COMPARREPOSITORITY> d:/maven_new_repository </localRepository> </settings>
В настоящее время локальный адрес репозитория Maven становится d:/maven_new_repository. ПРИМЕЧАНИЕ. Локальный репозиторий Maven, настроенный в это время, принадлежит пользователю.
1.2 Изменить конфигурацию по всему всему глобально
ПРИМЕЧАНИЕ. После этого изменения все пользователи будут затронуты, и если Maven будет обновлен, все конфигурации будут очищены, поэтому вы должны скопировать и резервное копирование файла M2_HOME/conf/settings.xml заранее.
Следовательно: при нормальных обстоятельствах конфигурация глобальных настроек.xml не рекомендуется.
2. Удаленное хранилище
2.1 Когда дело доходит до удаленных складов, начните с самого основного центрального склада. Центральный склад - удаленный склад по умолчанию. Когда Maven установлен, он поставляется с конфигурацией центрального склада.
В агрегации и наследстве Maven мы сказали, что все проекты Maven будут наследовать супер -POM. В частности, если POM, который содержит следующие конфигурации, мы называем его Super POM
<pepositories> <perpository> <id> Central </id> <mame> Central Repository </name> <url> http://repo.maven.apache.org/maven2 </url> <mayout> по умолчанию </mayout> <plochots> <enabled> </enablet> </snapshots> </repository> </repository> </repository>
Центральный склад содержит наиболее популярные компоненты Java с открытым исходным кодом, а также исходный код, информация о авторе, SCM, информация, информация о лицензии и т. Д. Вообще говоря, простые зависимости от Java Project могут быть загружены здесь
2.2 Частный сервер
Частный сервер - это специальный удаленный склад. Это складской сервис, созданный в локальной сети. Частные серверы представляют удаленные склады на WAN для пользователей Maven в локальной сети. Когда Maven необходимо загрузить компоненты, он запрашивается с частного сервера. Если компонент не существует на частном сервере, он будет загружать из внешнего удаленного репозитория, кэшировать его на частном сервере, а затем предоставлять услуги для запроса загрузки Maven. Мы также можем загрузить некоторые компоненты, которые не могут быть загружены с внешних складов на частные серверы.
Особенности Maven Private Server:
1. Сохраните свою собственную пропускную способность внешней сети: уменьшить потребление пропускной способности внешней сети, вызванное повторными запросами
2. Ускорить компонент Maven: если проект настроен со многими внешними удаленными складами, скорость строительства будет значительно снижена.
3. Развертывание сторонних компонентов: когда некоторые компоненты не могут быть получены из внешних складов, мы можем развернуть эти компоненты на внутренние склады (частные серверы) для использования внутренними проектами Maven.
4. Повышение стабильности и улучшить контроль: когда интернет нестабилен, строительство Maven также станет нестабильной. Некоторое частное программное обеспечение также предоставляет другие функции.
5. Уменьшите нагрузку центрального склада: количество запросов на центральные склады Maven огромно, и настройка частных серверов также может значительно снизить давление центрального склада.
Текущий основной частный сервер Maven:
1. Архива Апаха
2. Jfrog's Artifactory
3. Sonatype's Nexus
3. Конфигурация удаленного склада
Настройка удаленного репозитория введет новые элементы конфигурации: <Repositories> <Repository>
В соответствии с элементом <Repositories> вы можете использовать дочерний элемент <Repository> для объявления одного или нескольких удаленных репозиториев.
пример:
<perpository> <id> jboss </id> <mame> jboss Repository </name> <url> http://repository.jboss.com/maven2/ </url> <leleases> <dupplepolicy> Daily </updatepolicy> <!-никогда, всегда, интервал n-> <coneducation> true </ensucation> <! <CheckSumpolicy> Warn </checksumpolicy> <!-Fail, игнорировать-> </leases> <sonphotshots> <Nabled> false </enabled> </snapshots> <doolout> default </mayout> </Repository> </Repository> </Repository>
<UpdatePolicy> Элемент: представляет частоту обновления, значения: никогда, всегда, интервал, ежедневно, ежедневные значения по умолчанию
<cecksumpolicy> элемент: представляет политику Maven для проверки и проверки файлов. Warn - это значение по умолчанию по соображениям безопасности. Иногда нам нужно аутентифицировать доступ к удаленному складу. Как правило, информация о аутентификации настроена в настройках.xml:
<Servers> <serer> <id> То же самое с идентификатором репозитория в pom </id> <пользовательский имени> Имя пользователя </username> <shourse> pwd </password> </server> </servers>
Примечание. Идентификатор здесь должен соответствовать идентификатору элемента репозитория, который должен быть аутентифицирован в POM.
Как развернуть сгенерированные проекты в удаленные репозитории
Чтобы завершить эту работу, вам также необходимо настроить ее в POM. Вот новый элемент: <Distribution Management>
Распределительное управление содержит 2 детских элемента: репозиторий и снимок. Первый представляет репозиторий для публикации компонента версии, а последний представляет репозиторий для версии снимка.
Оба элемента должны настроить ID (уникальный идентификатор удаленного репозитория), имя, URL (представляющий адрес репозитория)
Развертывание компонентов в удаленные склады требует аутентификации. Конфигурация такая же, как и выше
Запустить после того, как конфигурация верна: MVN Clean Deploy
Правильно посмотрите на снимки
До настройки POM мы были очень осторожны с конфигурацией снимков или редко использовали версию снимка. Причина в том, что он по -прежнему очень нестабилен и очень легко вызвать неизвестные ошибки в нашей системе, что затрудняет поиск. На самом деле, версия снимка не бесполезна. Самая большая цель моментального снимка - использоваться в процессе разработки, особенно когда существуют зависимости модуля. Например, A и B разрабатываются одновременно. В зависимости от B. В процессе разработки A и B постоянно интегрируются, постоянно изменяя файлы POM и строительные проекты. В настоящее время синхронизация версий становится большой проблемой. Это может быть достигнуто с помощью снимков.
Фактически, во время выпуска версии снимка, Maven автоматически отметит компонент текущей меткой времени. С помощью этой временной метки мы можем найти последнюю версию снимка в любое время, что решит только что упомянутую проблему совместной разработки.
Что касается того, как проверяет обновление B, я только что сказал, когда говорил о конфигурации, в конфигурации снимка есть элемент, который может управлять частотой проверки обновлений -------- UpdatePolicy
Мы также можем использовать командную строку для добавления параметров, чтобы заставить Maven проверить для обновлений: mvn clean install-U
Как именно компоненты Maven Parse со склада? ---- Механизм Maven для анализа зависимостей от репозитория
1. Когда область зависимости является системой, Maven напрямую разрешает компонент из локальной файловой системы.
2. После расчета пути склада на основе координат зависимости постарайтесь найти компоненты непосредственно со локального склада. Если найден соответствующий компонент, разрешение будет успешным.
3. В случае, когда в локальном репозитории нет соответствующего компонента, если зависимая версия является отображаемая компонент версии выпуска, итерация через все удаленные репозитории и загружает ее после обнаружения.
4. Если зависимая версия является выпущенной или последней, метаданные всех удаленных репозитории читаются на основе политики обновления, объединяют соответствующие метаданные локального репозитория, вычислите истинное значение выпуска или последнего, а затем проверьте локальный репозиторий на основе этого истинного значения.
5. Если зависимая версия является снижением, метаданные всех удаленных репозитории читаются на основе политики обновления, объедините его с соответствующими метаданными локального репозитория и получают значение последней версии снимка, а затем проверьте локальный репозиторий на основе значения или загрузите его из удаленного репозитория.
6. Если последняя версия артефакта, проанализированная артефактом, является снижением формата TimeStamp, скопируйте файл в формате TimeMant в формате без TimetAmp и используйте артефакт в этом формате не TimetAmp.
Примечание. Обязательно помните, что <lereplect> <Nableted> & <SPOANSHOT> <NAUDALD>, то же самое относится и к моментальным снимкам
Последний и релиз не рекомендуется при объявлении POM. Последний и выпуск в подключаемой конфигурации больше не поддерживается в Maven3. Если версия плагина не установлена, окончательная версия такая же, как и релиз.
Maven будет анализировать только последнюю сборку релиза.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.