Maven Release Plugin - подготовка создает тег версии снимка вместо версии выпуска

У меня есть следующая структура проекта:

  • рамки
    • каркасного родитель-П
    • каркасного что-то
    • ...

В pom.xml framework-parent-pom я определил следующий плагин:

<plugin>
    <artifactId>maven-release-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
        <branchBase>http://.../svn/REPO/branches/framework</branchBase>
        <tagBase>http://.../svn/REPO/tags/releases/framework</tagBase>
        <tagNameFormat>[email protected]{project.version}</tagNameFormat>
        <releaseProfiles>release</releaseProfiles>
    </configuration>
</plugin>

И после SCM:

<scm>
    <developerConnection>scm:svn:http://.../svn/REPO/trunk/framework/framework-parent-pom</developerConnection>
</scm>

Когда я запускаю следующую команду...

mvn release:prepare -DautoVersionSubmodules=true -Darguments="-DskipTests" -Dresume=false

... все, кажется, идет хорошо.

Локально JAR с версией выпуска был создан, и POM хорошо обновлены до следующей версии SNAPSHOT. Также в SVN, на первый взгляд, это нормально. Тег был создан со всеми проектами инфраструктуры внутри него.

Однако при просмотре POM тега я вижу, что у них все еще есть начальная версия снимка как версия. Это, конечно, заставляет выполнить шаг по созданию версии моментального снимка, а не версии выпуска.

Что я делаю неправильно?

Ответы

Ответ 1

Я нашел обходное решение в треевом выпуске журнала maven-release-плагина MRELEASE-812:

В моем случае это изменение было:

       <plugin>
         <artifactId>maven-release-plugin</artifactId>
-        <version>2.2.2</version>
+        <version>2.4.1</version>
         <configuration>
           <releaseProfiles>release</releaseProfiles>
           <goals>install animal-sniffer:check deploy site</goals>
         </configuration>
+        <dependencies>
+          <dependency>
+            <groupId>org.apache.maven.scm</groupId>
+            <artifactId>maven-scm-api</artifactId>
+            <version>1.8.1</version>
+          </dependency>
+          <dependency>
+            <groupId>org.apache.maven.scm</groupId>
+            <artifactId>maven-scm-provider-gitexe</artifactId>
+            <version>1.8.1</version>
+          </dependency>
+        </dependencies>
       </plugin>

Ответ 2

У меня тоже была такая же проблема. В моем случае это произошло из-за неправильной строки SCM DeveloperConnection.

<scm>
<developerConnection>scm:svn:http://.../../trunk</developerConnection>
</scm>

У меня есть ckeckout код из Branch и выполняется release: подготовьте.

вы можете проверить свой путь разработчика, он должен совпадать с вашим репозиторием кода.

Ответ 3

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

Я обнаружил, что это будет работать, только если я использовал следующие параметры конфигурации:

<remoteTagging>false</remoteTagging>
<suppressCommitBeforeTag>false</suppressCommitBeforeTag>

Ответ 4

Если вы столкнулись с этой проблемой, скорее всего, вы испытываете https://jira.codehaus.org/browse/MRELEASE-812 и вам нужно будет изменить версию плагина выпуска (или git), которые вы используете.

НТН, Ян

Ответ 5

Эта проблема по-прежнему не решена для сложной структуры проекта.

См. здесь для предварительного просмотра патча: http://jira.codehaus.org/browse/SCM-740

Ответ 6

Если вы видите эту ошибку с версией 2.5 плагина релиза maven, вы можете столкнуться с этой ошибкой: http://jira.codehaus.org/browse/MRELEASE-875

Если ваш pom.xml верхнего уровня не находится в корне git, тогда release:prepare не фиксирует pom перед пометкой.

Единственная работа, похоже, состоит в том, чтобы перестроить структуру проекта в git.

Ответ 7

У меня была точно такая же проблема при разрезании моего первого релиза (что было действительно грязно). Во второй раз эта проблема исчезла - так что просто сделайте второй (чистый/свежий) выпуск.

Ответ 8

У меня была та же проблема. Я обошел эту проблему, вручную отредактировав тег POM, чтобы установить его в выпущенную версию. Тогда релиз: выполнить хотя бы работу.

Но это странная проблема, что я не знаю, откуда она.

Ответ 9

В качестве обходного пути вы можете также git config --global status.displayCommentPrefix true выводить в старом формате, чтобы maven мог разобрать команду git status.

Ответ 10

только для записей, единственным обходным путем, который работал у меня, было обходное решение Андреаса Дангеля о добавлении конфигурации git для установки старого поведения анализа локализованного вывода git, команда - это

git config --add status.displayCommentPrefix true

вот объяснение обходного пути: http://jira.codehaus.org/browse/SCM-740?focusedCommentId=341325&page=com. atlassian.jira.plugin.system.issuetabpanels: comment-tabpanel # комментарий-341325

один последний намек, это обходное решение работает только для версии 2.4.2, я тестировал с 2.5 и не работает

Ответ 11

Эта проблема устранена с помощью комбинации Maven 3.2.2 и Maven Release Plugin 2.5.