Подтвердить что ты не робот

Могу ли я добавить репозитории maven в командной строке?

Я знаю, что я могу добавить репозитории maven для извлечения зависимостей в ~/.m2/settings.xml. Но можно ли добавить репозиторий с помощью командной строки, например:

mvn install -Dmaven.repository=http://example.com/maven2

Причина, по которой я хочу это сделать, заключается в том, что я использую инструмент непрерывной интеграции, где я полностью контролирую параметры командной строки, которые он использует для вызова maven, но управляя параметрами settings.xml для пользователя, который запускает инструмент интеграции это немного хлопот.

4b9b3361

Ответ 1

Вы можете сделать это, но вам, вероятно, лучше делать это в POM, как говорили другие.

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

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

mvn package -Dmaven.repo.remote=http://www.ibiblio.org/maven/,http://myrepo 
  -Dmaven.repo.local="c:\test\repo"

Ответ 2

Одна из целей проектной модели Maven't Project (POM) заключается в том, чтобы захватить всю информацию, необходимую для надежного воспроизведения артефакта, поэтому передача настроек, влияющих на создание артефактов, сильно обескуражена.

Чтобы достичь своей цели, вы можете проверить свой файл settings.xml на уровне пользователя с каждым проектом и использовать параметр -s (или --settings), чтобы передать его в сборку.

Ответ 3

Я не уверен, что вы можете сделать это, используя командную строку. С другой стороны, вы можете добавить репозитории в pom.xml, как показано в следующем примере. Используя этот подход, вам не нужно изменять файл ~.m2/settings.xml.

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    ...
    <repositories>
            <repository>
                <id>MavenCentral</id>
                <name>Maven repository</name>
                <url>http://repo1.maven.org/maven2</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>
            </repository>
...
            <repository>
                <id>Codehaus Snapshots</id>
                <url>http://snapshots.repository.codehaus.org/</url>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
                <releases>
                    <enabled>false</enabled>
                </releases>
            </repository>
        </repositories>

    ...

        <pluginRepositories>
            <pluginRepository>
                <id>apache.snapshots</id>
                <name>Apache Snapshot Repository</name>
                <url>
                    http://people.apache.org/repo/m2-snapshot-repository
                </url>
                <releases>
                    <enabled>false</enabled>
                </releases>
            </pluginRepository>
            <pluginRepository>
                <id>Codehaus Snapshots</id>
                <url>http://snapshots.repository.codehaus.org/</url>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
                <releases>
                    <enabled>false</enabled>
                </releases>
            </pluginRepository>
        </pluginRepositories>

    ...

    </project>

Ответ 4

Как @Хорхе Феррейра уже сказал, поместите свои определения репозитория в pom.xml. Используйте profiles adittionally, чтобы выбрать репозиторий для использования через командную строку:

mvn deploy -P MyRepo2

mvn deploy -P MyRepo1

Ответ 5

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

Лучше всего в этом случае использовать управляемый прокси-сервер, такой как artifactory или nexus. Затем сделайте одноразовое изменение в settings.xml, чтобы установить это как зеркало для мира.

Любые сторонние репозитории, которые необходимо добавить с этой точки, могут обрабатываться через прокси.

Ответ 6

Я раньше не использовал maven 2, наша система все еще работает на maven 1.x из-за некоторых проблем с maven 2.

Однако, глядя на документацию для maven 2, кажется, что никаких особых свойств системы нет. Тем не менее, вы, вероятно, могли бы создать его в своих целях/настройках, используя свойства System. См. Раздел "Свойства системы" этого http://maven.apache.org/settings.html

Итак, у вас будет файл ${maven.repository} в файле настроек, а затем используйте -Dmaven.repository, как вы делаете выше.

Я не уверен, что это сработает, но с некоторой настройкой я уверен, что вы можете что-то придумать.

Ответ 7

Создайте POM с настройками репозитория, а затем используйте родительский элемент в POM для проекта, чтобы наследовать дополнительные репозитории. Использование "организации" POM имеет ряд других преимуществ, когда группа проектов принадлежит одной команде.