Свойства релиза Maven - PullRequest
7 голосов
/ 13 июня 2009

Когда мы выпускаем проекты, они обычно одинаковы каждый раз. Есть ли какие-либо аргументы или свойства, которые я могу добавить к выпуску: подготовить, который позволит выпускать шаблоны в пакетном режиме?

Пример:

What is the release version for "MyProject"? (company.jar.site:myproject) 0.0.1: : 
What is SCM release tag or label for "MyProject"? (company.jar.site:myproject) MyProject-0.0.1: : 
What is the new development version for "MyProject"? (company.jar.site:myproject) 0.0.2-SNAPSHOT: : 

Было бы неплохо сделать что-то вроде этого:

mvn -B release:perform -DreleaseVersion:$nextMinorVersion$ or
mvn -B release:perform -DreleaseVersion:$nextPatchVersion$ or
mvn -B release:perform -Dtag:v$nextPatchVersion$ or
mvn -B release:perform -Dtag:v$nextPatchVersion$-someCustomNaming 

Если что-то подобное еще не существует, я создам собственный Mojo для этого.

В качестве альтернативы, во время приведенных выше запросов мы обычно задаем по умолчанию 1-й вопрос, 'v' + текущую версию на втором и следующий второстепенный на последнем. Если бы мы могли как-то изменить их, это решило бы насущную проблему.

Заранее спасибо.

Ответы [ 3 ]

8 голосов
/ 13 июня 2009
mvn -B release:prepare release:perform

-B для пакетного режима, он будет использовать значения по умолчанию, которые он предлагает в не пакетном режиме. Обычно для X.Y.Z-SNAPSHOT он выпускает X.Y.Z и устанавливает новый снимок X.Y. (Z + 1) -SNAPSHOT.

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

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

2 голосов
/ 15 июня 2009

Частичный ответ после комментария :

Чтобы изменить имя тега, используйте аргумент -Dtag=xxx на release:prepare. См. выпуск: подготовьте документацию для деталей.

Предупреждение о непроверенном коде

Чтобы сделать это полностью автоматизированным способом, вам нужно добавить конфигурационную запись в ваш файл pom.xml, где вы бы задали имя тега:

<maven-release-plugin>
   <configuration>
       <tag>parent-${releaseVersion}</tag>
   </configuration>
</maven-release-plugin>
1 голос
/ 03 апреля 2012

То, как я это сделал, это Выполнение неинтерактивного релиза с использованием файла свойств .

Вы создаете файл release.properties в корне проекта агрегатора (тот, у которого есть упаковка: pom), и для каждого проекта вы добавляете два свойства следующей формы:

project.rel.<groupId>\:<artifactId>=<releaseVersion>
project.dev.<groupId>\:<artifactId>=<nextSnapshotVersion>

если вы хотите использовать определенный литерал для вашего тега, добавьте следующее свойство

scm.tag=<tagLiteral>

Ниже приведен пример, в котором выполняются обе вещи (укажите версию каждого модуля и определите литерал, который будет использоваться для тегирования в SCM):

scm.tag=my-project-0.2.1
project.rel.org.monachus.monkeyisland\:my-project=0.2.1
project.dev.org.monachus.monkeyisland\:my-project=0.2.2-SNAPSHOT
project.rel.org.monachus.monkeyisland\:module-a=0.1.1
project.dev.org.monachus.monkeyisland\:module-a=0.1.2-SNAPSHOT
...