Мне нужна установка, чтобы иметь возможность компилировать Java Maven-проект с использованием:
- корпоративного репозитория Maven (intr anet Artifactory proxy Maven Central и других)
- publi c Репозитории Maven (Central, ICM, io.confluent, et c.)
Код POM проекта уже ссылается на внутренний корпоративный репозиторий :
<repositories>
<repository>
<id>artifactory-virtual</id>
<name>My Artifactory Repository to download</name>
<url>https://artifactory.corporation.com/maven</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
Но для работы с этим хранилищем требуется VPN-соединение, которого я бы хотел избежать.
Я пытаюсь настроить зеркало хранилища, используя эту документацию Maven .
Следовательно, я настраиваю в своей ~/.m2/settings.xml
следующую конфигурацию:
<?xml version="1.0" encoding="UTF-8"?>
<settings>
...
<mirrors>
<mirror>
<id>icm-mirror</id>
<url>http://maven.icm.edu.pl/artifactory/repo/</url>
<mirrorOf>*,!central</mirrorOf>
</mirror>
</mirrors>
...
</settings>
, но просто предоставляя только зеркало (для всех репозитариев, кроме центрального), проект все еще пытается загрузить из корпоративного репозитория (я не предоставляю):
[ERROR] Failed to execute goal on project ibis-customer-management:
Could not resolve dependencies for project com.example.project:myproject:jar:3.7.1-SNAPSHOT:
Failed to collect dependencies at com.oracle.jdbc:ojdbc8:jar:18.3.0.0:
Failed to read artifact descriptor for com.oracle.jdbc:ojdbc8:jar:18.3.0.0: Could not transfer artifact com.oracle.jdbc:ojdbc8:pom:18.3.0.0 from/to artifactory-virtual (https://artifactory.corporation.com/maven):
Transfer failed for https://artifactory.corporation.com/maven/com/oracle/jdbc/ojdbc8/18.3.0.0/ojdbc8-18.3.0.0.pom:
Connect to artifactory.corporation.com [artifactory.corporation.com/1.2.3.4] failed:
Operation timed out -> [Help 1]
Ошибка не исправлена, даже если я создаю активный профиль с явной записью для репозитория ICM:
<settings>
...
<mirrors>
<mirror>
<id>icm-mirror</id>
<url>http://maven.icm.edu.pl/artifactory/repo/</url>
<mirrorOf>*,!central</mirrorOf>
</mirror>
</mirrors>
<profiles>
<profile>
<id>not-corpnet</id>
<repositories>
<repository>
<id>icm</id>
<name>ICM Repository</name>
<url>http://maven.icm.edu.pl/artifactory/repo/</url>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>not-corpnet</activeProfile>
</activeProfiles>
...
</settings>
Если вы думаете, что В моем settings.xml
может быть что-то еще, приведенное выше в значительной степени полное (без точек и с правильными XML пространствами имен.
Профиль также активен и виден при запуске mvn
[INFO] --- maven-help-plugin:3.2.0:active-profiles (default-cli) @ myproject ---
[INFO]
Active Profiles for Project 'com.example.project:myproject:pom:3.7.1-SNAPSHOT':
The following profiles are active:
- not-corpnet (source: external)
Как я могу сделать свой проект, в котором уже есть POM, корпоративный репозиторий, для загрузки артефактов из репозиториев publi c, когда я не нахожусь в корпоративной сети / VPN?