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

StackOverflow https://stackoverflow.com/questions/71030

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

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

Я не уверен, что вы можете сделать это с помощью командной строки.С другой стороны, вы можете добавить репозитории в 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>

Как уже сказал @jorge Ferreira, поместите ваши определения репозитория в pom.xml.Использовать профили дополнительно выбрать репозиторий для использования через командную строку:

mvn deploy -P MyRepo2

mvn deploy -P MyRepo1

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top