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

<p>я знаю, что могу добавить репозитории maven для получения зависимостей в ~/.m2/settings.xml. но возможно ли добавить репозиторий с помощью командной строки, например:</p><pre><code>mvn install -dmaven.repository=http://example.com/maven2 </code></pre><p>причина, по которой я хочу это сделать, заключается в том, что я использую инструмент непрерывной интеграции, в котором у меня есть полный контроль над параметрами командной строки, которые он использует для вызова maven, но управление settings.xml для пользователя, который запускает инструмент интеграции, немного хлопот.</p>

<p>вы можете сделать это, но вам, вероятно, лучше делать это в pom, как говорили другие.</p><p>в командной строке вы можете указать свойство для локального хранилища и другое хранилище для удаленных хранилищ. удаленный репозиторий будет иметь все настройки по умолчанию, хотя</p><p>в приведенном ниже примере указаны два удаленных репозитория и пользовательский локальный репозиторий.</p><pre><code>mvn package -dmaven.repo.remote=http://www.ibiblio.org/maven/,http://myrepo -dmaven.repo.local="c:\test\repo" </code></pre>

<p>одной из целей объектной модели проекта (pom) maven't является сбор всей информации, необходимой для надежного воспроизведения артефакта, поэтому категорически не рекомендуется передавать параметры, влияющие на создание артефакта.</p><p>чтобы достичь своей цели, вы можете зарегистрировать свой файл settings.xml на уровне пользователя в каждом проекте и использовать опцию -s (или --settings), чтобы передать его в сборку.</p>

<p>я не уверен, что вы можете сделать это с помощью командной строки. с другой стороны, вы можете добавить репозитории в <strong>pom.xml</strong>, как в следующем примере. при таком подходе вам не нужно изменять файл <strong>~/.m2/settings.xml</strong>.</p><pre><code> <?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> </code></pre>

<p>здесь я предполагаю, что вы спрашиваете об этом, потому что иногда вы хотите добавить новый сторонний репозиторий в ваши сборки. я могу ошибаться конечно ... :)</p><p>лучше всего в этом случае использовать управляемый прокси, например, артефакт или нексус. затем внесите одноразовое изменение в файл settings.xml, чтобы настроить его как зеркало для всего мира.</p><p>любые сторонние репозитории, которые вам нужно добавить с этого момента, могут обрабатываться через прокси.</p>

<p>как уже сказал @jorge ferreira, поместите определения вашего репозитория в pom.xml. используйте <a href="http://maven.apache.org/pom.html#profiles">profile</a> adittionally, чтобы выбрать репозиторий для использования через командную строку:</p><pre><code>mvn deploy -p myrepo2 mvn deploy -p myrepo1 </code></pre>

<p>я до сих пор не использовал maven 2, наша система все еще работает на maven 1.x из-за некоторых проблем с maven 2.</p><p>однако, глядя на документацию по maven 2, кажется, что никаких особых системных свойств не существует. тем не менее, вы, вероятно, можете встроить его в свои poms/настройки, используя свойства системы. см. системные свойства как часть этого <a href="http://maven.apache.org/settings.html">http://maven.apache.org/settings.html</a> </p><p>таким образом, в вашем файле настроек будет $ {maven.repository}, а затем вы будете использовать -dmaven.repository, как вы делали выше.</p><p>я не уверен, что это сработает, но с некоторыми изменениями я уверен, что вы можете что-то придумать.</p>

<p>создайте pom с нужными настройками репозитория, а затем используйте родительский элемент в pom вашего проекта для наследования дополнительных репозиториев. использование "организации" pom имеет несколько других преимуществ, когда группа проектов принадлежит одной команде.</p>