репозиторий зеркал maven - PullRequest
       8

репозиторий зеркал maven

15 голосов
/ 11 февраля 2011

Обычно в моем Maven настроено следующее зеркало settings.xml

<mirror>
  <id>internal-repository</id>
  <url>http://build.idaho.local/wtp_repository</url>
  <mirrorOf>*</mirrorOf>
</mirror>

Насколько я понимаю, это зеркало не позволяет Maven загружать зависимости из Интернета, то есть он будет искать их только в этомвнутренний репозиторий.

Однако всякий раз, когда я хочу добавить зависимость, которой нет в этом внутреннем репозитории, я должен закомментировать текст выше и добавить следующее к pom.xml

* 1009 проекта*

Когда я внесу эти изменения, Maven проверит наличие зависимостей в локальном репозитории и, если они не найдены, загрузит их из Интернета в локальный репозиторий.Как только у меня появятся необходимые зависимости, я снова изменю свою конфигурацию.

Есть ли способ получить желаемое поведение - всегда проверяйте внутреннее репо, затем публичные (интернет) репо - без необходимости добавлять<repository> для каждого проекта pom.xml?

В идеале я хотел бы указать этот репозиторий один раз в settings.xml, но, похоже, вы можете настроить там только зеркала.

Ответы [ 5 ]

14 голосов
/ 12 февраля 2011

Вы можете попытаться настроить maven для использования зеркала только для центрального хранилища или для исключения хранилища, идентифицированного по некоторому идентификатору.

<mirror>
    <id>internal-mirror</id>
    <url>http://build.idaho.local/wtp_repository</url>
   <mirrorOf>central</mirrorOf>
</mirror>

Или

<mirror>
    <id>internal-mirror</id>
    <url>http://build.idaho.local/wtp_repository</url>
   <mirrorOf>*,!internal-repository</mirrorOf>
</mirror>

Примеры былиадаптировано из настроек maven и руководство по настройке зеркал .

2 голосов
/ 28 января 2014

Этот вопрос довольно старый, но в любом случае:

Поместите <profile> в файл settings.xml, который указывает ваш внутренний репозиторий с использованием элемента <repository>

...
    <profile>
        <id>devel-repos</id>

        <repositories>
            <repository>
                <id>repo-release</id>
                <url>http://repohost:repoport/path/to/release/repo</url>
            </repository>
            <repository>
                <id>repo-snapshot</id>
                <url>http://repohost:repoport/path/to/snapshot/repo</url>
            </repository>
        </repositories>
    </profile>
...

Затем установитевышеуказанный профиль как <activeProfile>.Это активирует профиль для каждого вызова maven.

...
<activeProfiles>
    <activeProfile>devel-repos</activeProfile>
</activeProfiles>
...

Это не позволяет избежать нескольких определений репозитория, но дает вам самое важное: все централизовано в settings.xml, а ваши pom.xml sчистый (и портативный).

1 голос
/ 13 февраля 2011

Похоже, что вы, возможно, неправильно настроили или используете зеркало.

В идеале в качестве зеркала вы должны указать менеджер хранилища , который должен прозрачно загружать запрошенную зависимостьиз различных репозиториев в Интернете и кэшировать его, тем самым позволяя осуществлять последующие загрузки с зеркала.

0 голосов
/ 29 июня 2017

Удаление настроек зеркала с settings.xml и установка следующего кода работали для меня.

<profiles>
    <profile>
        <id>profile-1</id>
        <repositories>
            <repository>
                <id>internal-repository-1</id>
                <url>http://build.idaho.local/wtp_repository</url>
            </repository>
        </repositories>
    </profile>
</profiles>
<activeProfiles>
    <activeProfile>profile-1</activeProfile>
</activeProfiles>
0 голосов
/ 11 февраля 2011

Добавьте раздел хранилища в супер-помп. И пусть все проекты простираются от супер-помпа.

Таким образом, у каждого другого помпа проекта будет родительский раздел, продолжающийся от суперпома вот так.

<parent>
    <groupId>com.ddd.ddd.ddd</groupId>
    <artifactId>ddd-ddd-parent</artifactId>
    <version>1.1.1-SNAPSHOT</version>
    <relativePath>./config/superpom/pom.xml</relativePath>
</parent>

Таким образом, вы можете иметь раздел репозитория только в одном файле POM, который является вашим супер-POM. Вы также можете добавить любые зависимости, которые являются общими для всех проектов, таких как junit, log4j и тому подобное.

В вашем файле settings.xml. Вы можете добавить это, чтобы настроить свой локальный репозиторий.

<localRepository>C:/myBox/maven.repo</localRepository>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...