Создайте/разверните сторонний проект в maven, но загрузите в мой репозиторий снимков

Я еженедельно создаю большой сторонний проект (apache sling) в Jenkins. У меня есть jenkin settings.xml, настроенный на использование моего собственного сервера архивации для загрузки всех зависимостей (используя зеркальный раздел).

Однако я не понял, как заставить сборку загружать снимки в мой собственный репозиторий снимков при выполнении «развертывания». Вместо этого он пытается загрузить снимки на сервер снимков apache.org и терпит неудачу.

Есть ли способ настроить settings.xml для переопределения сервера моментальных снимков таким же образом, как это возможно для переопределения репозитория? Это необходимо сделать без редактирования pom.xml проекта.

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

Вот мои настройки.xml:

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

<localRepository>/Users/Shared/Jenkins/.m2/repository</localRepository>

<servers>
    <server>
        <id>astra.internal</id>
        <username>-deleted-</username>
        <password>-deleted-</password>
    </server>
    <server>
        <id>astra.snapshots</id>
        <username>-deleted-</username>
        <password>-deleted-</password>
    </server>
</servers>

<mirrors>
    <mirror>
        <id>central-proxy</id>
        <name>Local proxy of central repo</name>
        <url>http://-deleted-.com/repository/internal</url>
        <mirrorOf>central</mirrorOf>
    </mirror>
    <mirror>
        <id>snapshots</id>
        <name>Local proxy of snapshots</name>
        <url>http://-deleted-.com/repository/internal</url>
        <mirrorOf>snapshots</mirrorOf>
    </mirror>
</mirrors>

<profiles>
    <profile>
        <id>Repository Proxy</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <!-- ******************************************************* -->
        <!-- repositories for jar artifacts -->
        <profile>
            <!-- ******************************************************* -->
            <repositories>
                <repository>
                    <id>astra.internal</id>
                    <url>http://-deleted-.com/repository/internal/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                </repository>

                <repository>
                    <id>astra.snapshots</id>
                    <url>http://-deleted-.com/repository/snapshots/</url>
                    <releases>
                        <enabled>false</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>
        </profile>
    </profiles>
</settings>

person Robert A. Decker    schedule 19.10.2013    source источник


Ответы (3)


Вы можете перезаписать раздел «Управление распространением» параметрами командной строки.

mvn clean deploy -DaltDeploymentRepository=ui-snapshots::default::http://localhost:8081/artifactory/libs-snapshot-local/

Взгляните на плагин развертывания maven.

В качестве альтернативы вы должны иметь возможность использовать этап пост-сборки Jenkins. Там вам все равно нужно указать URL-адрес репо.

person Peter Schuetze    schedule 21.10.2013
comment
Я попробую аргумент командной строки управления распространением, но да, хорошая идея сделать шаг пост-сборки jenkins, если аргумент не работает. Таким образом, я мог бы быть немного более разборчивым в том, что именно я загружаю в архив. - person Robert A. Decker; 29.10.2013

Расположение репозитория является частью pom.xml, distributionManagement часто находится в одном из самых верхних родителей. Так что это не то, что вы можете установить в файле settings.xml. Есть большая вероятность, что вы можете изменить его с помощью свойства distMgmtSnapshotsUrl, см. org.apache:apache:13:pom, при условии, что sling-проект использует его как своего (косвенного) родителя.

person Robert Scholte    schedule 19.10.2013

Насколько я знаю, вам нужно отредактировать файл pom для проекта и иметь этот раздел (конечно, с настройками вашего сервера):

  <distributionManagement>
    <repository>
      <id>archiva.internal</id>
      <name>Internal Release Repository</name>
      <url>dav:http://localhost:8080/repository/internal</url>
    </repository>
    <snapshotRepository>
      <id>archiva.snapshots</id>
      <name>Internal Snapshot Repository</name>
      <url>http://localhost:8080/repository/snapshots</url>
    </snapshotRepository>
  </distributionManagement>

Поможет ли это вам внедрить его во всю компанию, от которой вы унаследовали?

person Jon    schedule 19.10.2013