Разные SCM для разных профилей в Maven

В моем проекте мы должны использовать плагин maben-build-number для создания окончательного имени банки, для этой цели мы используем версию SCN, поэтому нам нужен SCM

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

<scm>
    <connection>scm:svn:http://dev.com/svn_repo/trunk</connection>
    <developerConnection>scm:svn:https://dev.com/svn_repo/trunk</developerConnection>
    <url>http://dev.com/view.cvs</url>
</scm>

Но для клиентской среды:

      <scm>
        <connection>scm:svn:http://client.com/svn_repo/trunk</connection>
        <developerConnection>scm:svn:https://client.com/svn_repo/trunk</developerConnection>
        <url>http://client.com/view.cvs</url>
      </scm>

Можно ли настроить это в разных профилях. Я попытался

<profiles>
  <profile>
    <id>local</id>
    <scm>
        <connection>scm:svn:http://client.com/svn_repo/trunk</connection>
        <developerConnection>scm:svn:https://client.com/svn_repo/trunk</developerConnection>
        <url>http://client.com/view.cvs</url>
      </scm>
  </profile>
  <profile>
    <id>remote</id>
    <activation>
      <activeByDefault>true</activeByDefault>
    </activation>
    <scm>
        <connection>scm:svn:http://client.com/svn_repo/trunk</connection>
        <developerConnection>scm:svn:https://client.com/svn_repo/trunk</developerConnection>
        <url>http://client.com/view.cvs</url>
      </scm>
  </profile>
</profiles>

А когда использую профиль -Plocal ничего не происходит?


person Xelian    schedule 18.06.2016    source источник
comment
Имя артефакта не должно быть изменено. Должна быть включена только некоторая информация, позволяющая определить состояние исходного кода, из которого он был сгенерирован. Кроме того, я бы построил одну среду и развернул ее в других средах. Так что вам не нужно несколько записей SCM. Лучше всего было бы использовать решение CI, такое как Jenkins, для таких вещей.   -  person khmarbaise    schedule 19.06.2016
comment
ХОРОШО. Понять, что то, что я хочу, невозможно в Maven?   -  person Xelian    schedule 19.06.2016
comment
Вы когда-нибудь находили решение для этого?   -  person Klara    schedule 07.05.2018


Ответы (1)


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

Определил свойство и его значение по умолчанию в блоке свойств.

<properties>
    <developerConnectionUrl><!-- developerConnection url here --></developerConnectionUrl>
</properties>

Установите свойства блока scm для использования глобальных свойств.

<scm>
    <developerConnection>${developerConnectionUrl}</developerConnection>
</scm>

Создан профиль, который изменяет глобальное свойство по мере необходимости.

<profiles>
    <profile>
        <id>local</id>
        <properties>
            <developerConnectionUrl><!-- developerConnectionUrl url for profile --></developerConnectionUrl>
        </properties>
    </profile>
</profiles>

Насколько я знаю и из быстрого просмотра схемы, тег scm может использоваться только на верхнем уровне в POM и недействителен внутри тега profile

person David Blaney    schedule 12.08.2019