Выпуск Maven: подготовить перезаписывает свойства SCM с разрешенными значениями - PullRequest
4 голосов
/ 10 сентября 2010

Полагаю, это довольно очевидно, но я все же считаю это недостатком ...

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

  • Я добавлю раздел только в моей компании base POM и параметризую URL-адреса с помощью свойств, например,
<scm>
    <connection>${scmBaseConnection}/${scm.module}/${scm.edition}</connection>
    <developerConnection>${scmBaseConnection}/${scm.module}/${scm.edition}</developerConnection>
    <url>${fisheyeBaseUrl}/${scm.module}</url>
</scm>
  • Тогда каждый POM корневого (агрегаторного) проекта должен только объявить свою scm. <properties> соответственно (и не должен повторно объявлять весь раздел), например ::
   <scm.module>sharktopus</scm.module>
   <scm.edition>trunk</scm.edition>

Но вскоре я понял, что не могу этого сделать: плагин релиза переписывает каждого POM с тегами и next версий информации SCM, поэтому каждому такому POM нужен свой собственный раздел.

Хорошо, поэтому я решил сохранить общие детали SCM в базовых свойствах POM, и каждый корневой POM проекта объявит свой раздел , используя эти реквизиты, плюс свою собственную специфику, например ::1010*

<scm>
    <connection>${scmBaseConnection}/sharktopus/trunk</connection>
    <developerConnection>${scmBaseConnection}/sharktopus/trunk</developerConnection>
    <url>${fisheyeBaseUrl}/sharktopus</url>
</scm>

Но это тоже не работает, потому что плагин релиза переписывает с использованием разрешенных значений (что довольно очевидно, задним числом). Так, например, для тега release POM приведенная выше информация будет переписана как:

<scm>
    <connection>scm:svn:https://mysvnhost.net/sharktopus/tags/R1_NewStuff</connection>
    <developerConnection>scm:svn:https://mysvnhost.net/sharktopus/tags/R1_NewStuff</developerConnection>
    <url>https://mysvnhost.net/sharktopus</url>
</scm>

Это означает, что у каждого POM должен быть свой собственный раздел с жестко закодированными URL .

  • Это то, что все делают?
  • Что произойдет, если ваши URL-адреса SCM изменятся - вы просто выполняете поиск / замену во всех своих проектах?
  • Может ли это быть запросом функции к плагину релиза, чтобы переписать частичные URL, например сохранить ссылки на свойства, но перезаписать «окончательную» специфику?

Ответы [ 2 ]

3 голосов
/ 10 сентября 2010

Единственное место для определения части scm находится в корне проекта, а не в корне компании. В многомодульной сборке необходимо иметь только одну часть scm. Причина, по которой плагин релиза заменит свойства, очень проста. После выпуска эти pom должны представлять это состояние для этого программного обеспечения. Если бы у них были свойства, было бы невозможно гарантировать правильные значения и т. Д. Таким образом, результат не был бы воспроизводимым ... Если URL-адрес SCM изменится, он будет действителен только для новых проектов, а не для старых, поскольку они уже развернуты и т. Д.

1 голос
/ 19 января 2012

Пока что кажется, что нет решения: http://jira.codehaus.org/browse/MRELEASE-128

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...