Как заставить maven ежедневно обновлять версии зависимостей? - PullRequest
2 голосов
/ 30 мая 2011

Мы используем maven 2.2.1 и очень довольны тем, как идут дела. Недавно мы начали использовать диапазоны версий зависимостей, например:

    <dependency>
        <!-- com.google.inject.Guice -->
        <groupId>com.google.inject</groupId>
        <artifactId>guice</artifactId>
        <version>[3,4)</version>
    </dependency>

Но теперь я сталкиваюсь с проблемой, что maven проверяет наличие новых версий каждой такой зависимости при каждой сборке, что делает сборку мучительно медленной:

[INFO] artifact com.google.inject:guice: checking for updates from internal
[INFO] artifact com.google.inject:guice: checking for updates from central

Вот как выглядит объявление моего репозитория:

<repositories>
    <repository>
        <id>internal</id>
        <url>http://internal.repo.local/nexus/content/repositories/releases</url>
    </repository>
</repositories>

Насколько я понимаю, я проверил конфигурацию репозитория, просмотрел значения по умолчанию для секции <repository/> и наследование родительского POM. Я уже пытался изменить updatePolicy безуспешно. Похоже, что все политики работают только с управлением SNAPSHOT и игнорируются для проверки версий.

Я нашел обходной путь для опции -o командной строки, но ... Я хотел бы хотя бы иногда проверять внешнюю версию, и идея создания основанного на cron планирования maven, который ежедневно обновляет локальный репозиторий, не дает озвучить как подходящее решение.

1 Ответ

0 голосов
/ 31 мая 2011

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

Просто установите политику обновления репозитория:

    <repositories>
        <repository>
            <id>internal</id>
            <url>http://internal.repo.local/nexus/content/repositories/releases</url>
            <releases>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
            </releases>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
            </snapshots>
        </repository>
    </repositories>

РЕДАКТИРОВАТЬ: Я ответил на оригинальный вопрос вне контекста, извините.

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

Я думаю, что вы на самом деле пытаетесь понять: "Как я могу предотвратить выход maven из центра в каждый раз, когда я делаю сборку и замедляю меня?" У меня была именно эта проблема во время работы за границей, интернет был очень медленным. Мы настроили прокси-сервер Nexus, и мне пришлось искать способ заставить все поиски поразить прокси.

Измените на то, что соответствует вашим потребностям. Ежедневно, вероятно, будет работать, если у вас есть более конкретные потребности.

Далее отредактируйте файл settings.xml и добавьте этот раздел:

    </activeProfiles>
    <mirrors>
        <mirror>
            <id>internal-mirror</id>
            <url>http://internal.repo.local/nexus/content/repositories/releases</url>
            <mirrorOf>*</mirrorOf>
        </mirror>
    </mirrors>
</settings>

Это заставит все поиски зависимостей проходить через ваш внутренний экземпляр Nexus, попадать в кэш Nexus и значительно ускорить вашу сборку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...