Чи потрібен Maven у певний момент підключення до Інтернету, щоб мати можливість ним користуватися? Що означає конкретно отримання внутрішніх плагінів Maven для збирання, чищення, упаковки тощо?
Чи потрібен Maven у певний момент підключення до Інтернету, щоб мати можливість ним користуватися? Що означає конкретно отримання внутрішніх плагінів Maven для збирання, чищення, упаковки тощо?
Відповіді:
Ви можете запустити Maven в режимі офлайн mvn -o install
. Звичайно, будь-які артефакти, недоступні у вашому локальному сховищі, не зможуть. Maven не передбачається в розподілених сховищах, але вони, безумовно, роблять речі більш безпроблемними. З цієї причини багато магазинів використовують внутрішні дзеркала, які поступово синхронізуються з центральним репостом.
Крім того, mvn dependency:go-offline
можна використовувати, щоб усі ваші залежності встановлені локально, перш ніж ви почнете працювати в автономному режимі.
mvn dependency:go-offline
просто не все ловить. Наприклад, всередині свіжої віртуальної машини, наприклад, мій проект все ще повинен завантажувати речі навіть після виконання цієї мети. Дивіться також це питання .
Якщо у вас є ПК з доступом до Інтернету у вашій локальній мережі, вам слід встановити локальний сховище Maven.
Я рекомендую Artifactory Open Source . Це те, що ми використовуємо в нашій організації, це дуже просто налаштувати.
Артифактор виступає проксі-сервером між вашим інструментом збирання (Maven, Ant, Ivy, Gradle тощо) та зовнішнім світом.
Він зберігає кешовані віддалені артефакти, так що вам не доведеться завантажувати їх знову і знову.
Він блокує небажані (а іноді і чутливі до безпеки) зовнішні запити на внутрішні артефакти та контролює, як і де розміщуються артефакти та ким.
Після налаштування Artifactory вам просто потрібно змінити Maven settings.xml
в розроблювальних машинах:
<?xml version="1.0" encoding="UTF-8"?>
<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<mirrors>
<mirror>
<mirrorOf>*</mirrorOf>
<name>repo</name>
<url>http://maven.yourorganization.com:8081/artifactory/repo</url>
<id>repo</id>
</mirror>
</mirrors>
<profiles>
<profile>
<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>libs-release</name>
<url>http://maven.yourorganization.com:8081/artifactory/libs-release</url>
</repository>
<repository>
<snapshots />
<id>snapshots</id>
<name>libs-snapshot</name>
<url>http://maven.yourorganization.com:8081/artifactory/libs-snapshot</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>plugins-release</name>
<url>http://maven.yourorganization.com:8081/artifactory/plugins-release</url>
</pluginRepository>
<pluginRepository>
<snapshots />
<id>snapshots</id>
<name>plugins-snapshot</name>
<url>http://maven.yourorganization.com:8081/artifactory/plugins-snapshot</url>
</pluginRepository>
</pluginRepositories>
<id>artifactory</id>
</profile>
</profiles>
<activeProfiles>
<activeProfile>artifactory</activeProfile>
</activeProfiles>
</settings>
Ми використовували це рішення, оскільки у нас були проблеми з доступом до Інтернету в наших розробних машинах, а деякі артефакти завантажували пошкоджені файли або взагалі не завантажували. З тих пір у нас проблем не було.
Для цього у вас є два варіанти:
1.) внести зміни в settings.xml додати це в перший тег
<localRepository>C:/Users/admin/.m2/repository</localRepository>
2.) використовувати тег -o для команди офлайн.
mvn -o clean install -DskipTests=true
mvn -o jetty:run
Maven потребує залежностей у вашому локальному сховищі. Найпростіший спосіб отримати їх - за допомогою доступу до Інтернету (або складніше за допомогою інших наданих тут рішень).
Таким чином, передбачається, що ви можете тимчасово отримати доступ до Інтернету, ви можете підготуватися до роботи в автономному режимі, використовуючи плагін Maven-залежність з його залежністю: мета go-offline . Це завантажить усі ваші проектні залежності у ваше місцеве сховище (звичайно, зміни залежностей / плагінів потребуватимуть нового доступу до Інтернет / центрального сховища).
На жаль
dependency:go-offline
, не працювало для мене, оскільки воно не кешувало все, тобто Файли POM та інші неявно згадують залежності.
Вирішення проблеми полягала в тому, щоб вказати місце локального сховища , або всередині settings.xml
файлу, <localRepository>...</localRepository>
або за mvn
допомогою -Dmaven.repo.local=...
параметра. Після початкової збірки проекту всі необхідні артефакти повинні бути кешовані, і тоді ви можете посилатися на місце сховища тими ж способами, виконуючи збірку Maven в офлайн режимі ( mvn -o ...
).
Перед тим, як перейти в режим офлайн, ви повинні переконатися, що все знаходиться у вашій місцевій репортажі, що потрібно під час роботи в офлайні. Запуск "mvn залежності: відключення офлайн" для проектів (-ів) / пом (-ів), над якими ви плануєте працювати, зменшить зусилля для досягнення цього.
Але зазвичай це не вся історія, тому що залежність: офлайн завантажуватиме лише плагіни "голої збірки" ( go-offline / resolution-плагіни не вирішують усіх залежностей плагіна ). Тож вам доведеться знайти спосіб завантаження плагінів для розгортання / тестування / сайту (а може бути й інших) та їх залежностей у ваше репо.
Крім того, залежність: відключений офлайн не завантажує сам артефакт пам’яті, тому вам доведеться залежність: скопіюйте його, якщо потрібно.
Іноді - як писала MaDa - ви не знаєте, що вам знадобиться, перебуваючи в автономному режимі, що робить неможливим наявність "достатнього" репо.
У будь-якому випадку з належним чином заповненим репо, вам потрібно лише додати "<offline> true </offline>" до налаштувань Maven.xml, щоб вийти в офлайн.
Не змінюйте профіль (ідентифікатор) Maven, який ви використовували для заповнення репо, під час перебування в режимі офлайн. Maven розпізнає завантажені артефакти у своїх метаданих із "ідентичністю", яка прив'язана до ідентифікатора профілю.
Якщо ви використовуєте IntelliJ, ви можете просто піти в Preferences -> Будівельні, виконання, розгортання -> Будівельні інструменти -> Maven і чек / зніміть прапорець Робота в автономному режимі .
Це працює для вас?
http://jojovedder.blogspot.com/2009/04/running-maven-offline-using-local.html
Не забудьте додати його до вашого сховища плагінів та вказати URL-адресу туди, де знаходиться ваше сховище.
<repositories>
<repository>
<id>local</id>
<url>file://D:\mavenrepo</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>local</id>
<url>file://D:\mavenrepo</url>
</pluginRepository>
</pluginRepositories>
Якщо ні, вам може знадобитися запустити локальний сервер, наприклад, апаш, на ваших машинах.
(джерело: jfrog.com )
або
Просто використовуйте сервери репозиторіїв Maven, такі як Sonatype Nexus http://www.sonatype.org/nexus/ або JFrog Artifactory https://www.jfrog.com/artifactory/ .
Після того як один розробник будує проект, для наступних розробників або Jenkins CI не буде потрібен доступ до Інтернету.
Сервер репозиторіїв Maven також може мати проксі-сервери, налаштовані для доступу до Maven Central (або більше потрібних загальнодоступних сховищ), і вони можуть мати зашифрований список артефактів у віддалених сховищах.
Мій досвід показує, що опція -o не працює належним чином і що ціль відключення офлайн далеко не є достатньою, щоб дозволити повноцінне складання в режимі офлайн:
Рішення, яке я міг би підтвердити, включає використання --legacy-local-repository
опції maven, а не -o
(офлайн) та використання локального сховища замість сховища розповсюдження
Крім того, мені довелося копіювати всі maven-metadata-maven2_central.xml
файли локального репо у maven-metadata.xml
форму, яку очікував maven.
Дивіться рішення, яке я знайшов тут .
Відповідаючи безпосередньо на ваше запитання: він не потребує підключення до Інтернету, а доступу до сховища в локальній мережі або на локальному диску (використовуйте підказки інших людей, які розмістили тут).
Якщо ваш проект не знаходиться в зрілій фазі, це означає, що POM міняються досить часто, режим офлайн буде дуже недоцільним, оскільки вам доведеться також досить часто оновлювати сховище. Якщо ви не можете отримати копію сховища, у якому є все необхідне, але як би ви це знали? Зазвичай ви запускаєте сховище з нуля, і воно поступово клонується під час розробки (на комп'ютері, підключеному до іншого сховища). Копія загальнодоступного сховища repo1.maven.org важить сотні гігабайт, тому я також не рекомендую грубу силу.
З'явився новий плагін для усунення недоліків mvn dependency:go-offline
:
https://github.com/qaware/go-offline-maven-plugin
Додайте його до пам’яті, а потім запустіть mvn -T1C de.qaware.maven:go-offline-maven-plugin:resolve-dependencies
. Після того, як ви встановите всі динамічні залежності, maven більше не намагатиметься завантажувати нічого (доки не оновите версії).
<offline> false </offline>
<localRepository>${user.home}/.m2/repository</localRepository>
до
<offline> true <offline>
<localRepository>${user.home}/.m2/repository</localRepository>
Змініть офлайн-тег з хибного на справжній.
завантажуватиметься з репо онлайн