Выпуск maven: ошибка символа подготовки версии

Я пытаюсь заставить работать плагин выпуска maven, интегрируясь с Perforce. Я, наконец, вчера куда-то добрался и успел пробежать:

mvn release:prepare

и попросили указать много версий и новых рабочих снапшотов. Я указал версию «0.1» (без кавычек) в качестве версии релиза для всех подпроектов и установил рабочий снимок «1.0-SNAPSHOT» (как и раньше), так как я просто тестировал плагин и интеграцию. с Perforce, а не пытаться создать релиз. Однако после ввода информации я получил следующую ошибку:

[ОШИБКА] Не удалось выполнить цель org.apache.maven.plugins:maven-release-plugin:2.3.1:prepare (default-cli) в проекте myproject: выполнение default-cli цели org.apache.maven.plugins:maven -release-plugin:2.3.1:prepare failed: данные "0.1" недопустимы для содержимого символа JDOM: 0x1b не является допустимым символом XML. -> [Помощь 1]

(Я не уверен на 100%, что это была именно та ошибка, которую я получил)

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

Версия "0.1" недействительна, или мне как-то удалось ввести escape-символ ("0x1b") в одно из значений, или где-то еще что-то не так?

Я также не могу найти, куда делись введенные мной значения. Как я могу установить их снова или начать подготовку с нуля, вводя новые значения?

Заранее благодарю всех, кто взглянет на это.

РЕДАКТИРОВАТЬ:

Я нашел ответ на последнюю часть, то есть как сбросить значения. Если я побегу

mvn release:prepare -Dresume=false

Я снова ввожу значения.

(И, как @tom уже упоминал в ответе, я могу запустить mvn release:rollback, чтобы избавиться от тех, которые там есть. Однако это, похоже, не работает, вероятно, потому, что подготовка не удалась.)

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

Пароль не найден, продолжаем без него.

Хотя я настроил так:

<server>
  <id>ip-of-perforce-server</id>
  <username>my-perforce-username</username>
  <password>***************</password>
</server>

в моих настройках.xml. Я видел его настройку только в примерах в pom проекта, но было упомянуто, что вы можете сделать это в settings.xml, и это, кажется, единственное, что имеет смысл (поскольку pom обычно будет в SCM). Я могу избежать получения этого сообщения, если укажу имя пользователя и пароль как env vars (-Dusername=xxx и т. д.).

Но я также получаю сообщение об ошибке:

Код выхода CommandLineException: 1 — Клиент «PCNAME» неизвестен — используйте команду «client» для его создания.

где PCNAME — это имя моего рабочего стола в Windows. Я попытался запустить:

p4 client

и это открывает файл с содержимым:

Client: PCNAME
Owner:  my-perforce-username
Host:   PCNAME

так почему он говорит, что он неизвестен/нуждается в создании?

Чтобы ответить себе, я только что заметил, что после запуска p4 client он сказал Client PCNAME saved., и я думаю, поэтому он отображался: P Так что все, что мне нужно было сделать, это следовать инструкциям в сообщении об ошибке.

Теперь у меня есть только проблемы:

Если я запускаю cygwin, я получаю ошибку Path 'D:\Server\pom.xml' is not under client's root '/cygdrive/d/Server', которая, я думаю, как-то связана с конфликтами между путями unix и windows.

Кроме того, я не получаю никаких ошибок раньше после входа в версии, где я получаю следующее:

java.io.IOException: The filename, directory name, or volume label syntax is incorrect
    at java.io.WinNTFileSystem.canonicalize0(Native Method)
    at java.io.Win32FileSystem.canonicalize(Win32FileSystem.java:396)
    at java.io.File.getCanonicalPath(File.java:559)
    at org.apache.maven.scm.provider.perforce.command.edit.PerforceEditCommand.createCommandLine(PerforceEditCommand.java:109)
    at org.apache.maven.scm.provider.perforce.command.edit.PerforceEditCommand.executeEditCommand(PerforceEditCommand.java:51)
    at org.apache.maven.scm.command.edit.AbstractEditCommand.executeCommand(AbstractEditCommand.java:40)
    at org.apache.maven.scm.command.AbstractCommand.execute(AbstractCommand.java:59)
    at org.apache.maven.scm.provider.perforce.PerforceScmProvider.edit(PerforceScmProvider.java:210)
    at org.apache.maven.scm.provider.AbstractScmProvider.edit(AbstractScmProvider.java:560)
    at org.apache.maven.shared.release.phase.AbstractRewritePomsPhase.writePom(AbstractRewritePomsPhase.java:631)
    at org.apache.maven.shared.release.phase.AbstractRewritePomsPhase.transformProject(AbstractRewritePomsPhase.java:231)
    at org.apache.maven.shared.release.phase.AbstractRewritePomsPhase.transform(AbstractRewritePomsPhase.java:125)
    at org.apache.maven.shared.release.phase.AbstractRewritePomsPhase.execute(AbstractRewritePomsPhase.java:110)
    at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:234)
    at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:169)
    at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:146)
    at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:107)
    at org.apache.maven.plugins.release.PrepareReleaseMojo.prepareRelease(PrepareReleaseMojo.java:291)
    at org.apache.maven.plugins.release.PrepareReleaseMojo.execute(PrepareReleaseMojo.java:247)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)                            at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)                                        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:319)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
[ERROR] CommandLineException Exit code: 1 - Usage: add/edit/delete [-c changelist#] [ -d -f -k -n -v ] [-t type] files...
Missing/wrong number of arguments.

Command line was:p4 -d D:\Server -p perforce-ip-and-port -u my-username -P my-password edit
org.codehaus.plexus.util.cli.CommandLineException: Exit code: 1 - Usage: add/edit/delete [-c changelist#] [ -d -f -k -n -v ] [-t type] files...
Missing/wrong number of arguments.

и последняя ошибка Maven Build Failure:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.3.1:prepare (default-cli) on project project-name: Error writing POM: D:\Server\pom.xml (Access is denied) -> [Help 1]

(Обратите внимание, что это также происходит при запуске команды в командной строке, где ошибка о том, что pom не находится в представлении клиента, не появляется)

Кажется, это моя последняя оставшаяся проблема... добраться туда :)


person Svend Hansen    schedule 12.06.2012    source источник
comment
Вы можете удалить release.properties и повторить попытку — в этом файле хранятся введенные вами значения.   -  person Raghuram    schedule 12.06.2012
comment
Я запустил mvn release:prepare -Dusername=MyName -Dpassword=*****, и таким образом я не получил сообщение «Пароль не найден», но все же клиент X неизвестен ОШИБКА...   -  person Svend Hansen    schedule 12.06.2012
comment
Только что заметил, что указанное выше значение PCNAME также является значением хоста, если я перейду к Connection > Edit Current Workspace... в p4v и посмотрю на вкладке Advanced. Должно ли это действительно быть IP-адресом (или именем хоста) сервера perforce. Кажется (из-за изменения этого), что это хост, с которого клиенту разрешено подключаться к рабочей области? Может ли это быть связано с ошибкой?   -  person Svend Hansen    schedule 12.06.2012
comment
Я создал новый вопрос для проблем, с которыми я столкнулся после решения начальных здесь: stackoverflow.com/questions/10999403/   -  person Svend Hansen    schedule 12.06.2012


Ответы (1)


0.1 однозначно легальная версия. Введенные вами значения были помещены в файлы того же уровня, что и ваш файл pom.xml (не могу вспомнить имя, потому что они исчезают после mvn release:perform). Чтобы стереть их, вы можете использовать mvn release:rollback

Также при использовании многомодульных проектов обязательно используйте флаг autoVersionSubModules:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <version>${maven.plugin.release.version}</version>
    <configuration>
            <autoVersionSubmodules>true</autoVersionSubmodules>
    </configuration>
</plugin>

Это также изменит версию ваших модулей.

РЕДАКТИРОВАТЬ: этот ответ отвечает только на часть о плагине выпуска maven. Не другие части вопроса. Спрашивающий решил задать новые вопросы, касающиеся других частей вопроса.

person tom    schedule 12.06.2012
comment
Я добавил некоторые обновления к моему вопросу после вашего ответа (и выяснил, как избавиться от неработающего ввода). В качестве примечания, это работало нормально, когда я позже снова использовал 0.1, поэтому мне, должно быть, удалось получить там escape-символ в первый раз. - person Svend Hansen; 12.06.2012
comment
Поскольку этот вопрос в значительной степени ответил на мой первоначальный вопрос, я собираюсь принять его и задать новый вопрос с моей текущей проблемой (в любом случае эта проблема стала слишком большой) :) - person Svend Hansen; 12.06.2012
comment
Вы правы в этом. Один вопрос в «треде» позволяет другим людям легко определить свою проблему и, возможно, найти решение. Спасибо. - person tom; 12.06.2012
comment
Кстати, я узнал, в чем проблема, и исправил ее. См. другой вопрос ссылка, если вы хотите прочитать об этом. - person Svend Hansen; 18.06.2012