Установить maven для использования архивных репозиториев БЕЗ использования activeByDefault? - PullRequest
3 голосов
/ 20 марта 2012

Я очень близок к тому, чтобы наконец получить рабочую установку с архивой и maven.

Последнее, что меня действительно поражает, - это как настроить мои внутренние репозитории и репозитории моментальных снимков - без использования профиля, в котором для activeByDefault установлено значение true.

Я использую супер-помпу SUPER - помпу всей компании, которая содержит информацию по управлению дистрибуцией для релизов. Я думал, что я мог бы указать репозитории в этом pom, и настроить параметры аутентификации в settings.xml? Могу ли я использовать тег репозитория без профиля? Не должно быть «профиля» для моих внутренних репозиториев и репозиториев моментальных снимков, так как они никогда не изменятся ...

То, от чего я пытаюсь избежать, - это использование профиля по умолчанию, который активен все время. Я слышал, что activeByDefault НЕ является лучшей практикой, и я не собираюсь его использовать.

С учетом сказанного, как мне поступить так? Мой внутренний репозиторий является зеркалом центрального репозитория maven, поэтому я хотел бы заблокировать своих разработчиков, чтобы они использовали ТОЛЬКО наш внутренний сервер артефактов. Помните - я НЕ хочу, чтобы профиль с activeByDefault был установлен в true. Я не могу подчеркнуть это достаточно! Должен ли я использовать зеркала Maven? Стоит ли «добавлять» дополнительные репозитории?

Если я возьму тег репозитория вместо тега зеркал, будет ли сборка maven принудительно использовать ТОЛЬКО мои настройки архива вместо стандартного maven central?

Или то, что я стремлюсь сделать, можно сделать, используя только тег mirrors в maven? Я знаю, как настроить учетные данные репо при использовании тега репозитория, но не с зеркалами. Как это сделать? Является ли предоставление учетных данных для чего-либо в тегах зеркал таким же, как для чего-либо в тегах репозитория?

Я что-то упускаю из виду? Я дошел до того, что начал работать с Maven. Я знаю, что в конце концов это будет полезно, но это, безусловно, вызывает у меня тонну обострения, а ресурсов, кажется, мало. Либо так, либо люди довольны, используя его, как им угодно, без учета передового опыта.

Спасибо

1 Ответ

7 голосов
/ 20 марта 2012

Чтобы использовать ваше внутреннее репо в качестве центрального зеркала, вам нужно настроить зеркало следующим образом (в settings.xml):

<mirrors>
    <mirror>
        <id>my-internal-repo</id>
        <mirrorOf>central</mirrorOf> // use * for do mirror of all
        <name>Clinker Maven Repository</name>
        <url>http://my-repo-host/my-repo-path</url>
    </mirror>
</mirrors>

Если my-internal-repo защищен, вы можете установить учетные данные:

<servers>
    <server>
        <id>my-internal-repo</id>
        <username>youruser</username>
        <password>yourpassword</password>
    </server>
</servers>

Обратите внимание, что содержимое тега id сервера должно совпадать с идентификатором вашего зеркала.

Чтобы использовать ваш internal-snapshots репозиторий, вы должны установить репозиторий в POM вашего проекта, поскольку использование артефактов моментальных снимков должно контролироваться и четко определяться на уровне проекта, а не на уровне настроек:

<repository>
    <id>internal-snapshots</id>
    <url>http://your-repo-host/internal-snapshots-path</url>
    <releases>
        <enabled>false</enabled>
    </releases>
    <snapshots>
        <enabled>true</enabled>
    </snapshots>
</repository>

И, наконец, вы должны исключить internal-snapshots из зеркала:

<mirrors>
    <mirror>
        <id>my-internal-repo</id>
        <mirrorOf>central, !internal-snapshots</mirrorOf> // use * to do mirror of all
        <name>Clinker Maven Repository</name>
        <url>http://my-repo-host/my-repo-path</url>
    </mirror>
</mirrors>

и добавьте сервер (если он защищен):

<servers>
    <server>
        <id>my-internal-repo</id>
        <username>youruser</username>
        <password>yourpassword</password>
    </server>
    <server>
        <id>internal-snapshots</id>
        <username>youruser</username>
        <password>yourpassword</password>
    </server>
</servers>
...