maven发布:准备版本字符错误

时间:2012-06-12 09:18:29

标签: maven maven-release-plugin prepare

我正在努力让maven发布插件工作,与Perforce集成。昨天我终于到了某个地方并设法运行:

mvn release:prepare

并被要求指定许多版本和新的工作快照。我指定版本“0.1”(不带引号)作为所有子项目的发布版本,并将工作快照设置为“1.0-SNAPSHOT”(与之前相同),因为我只是测试插件和集成使用Perforce,而不是实际尝试构建版本。但是,在输入信息后,我收到以下错误:

  

[错误]无法执行目标org.apache.maven.plugins:maven-release-plugin:2.3.1:在项目myproject上准备(default-cli):目标org.apache.maven的执行default-cli。 plugins:maven-release-plugin:2.3.1:准备失败:数据“0.1”对于JDOM字符内容不合法:0x1b不是合法的XML字符。 - > [帮助1]

(我不是100%肯定这是我得到的确切错误)

但现在,每次运行mvn release:prepare时,我都会得到同样的错误(绝对是上面的错误),而没有机会重新提供版本或工作快照名称。

版本“0.1”无效,或者我以某种方式设法在其中一个值中输入转义字符(“0x1b”),或者其他地方是否有错误?

我也找不到我输入的值已经消失的位置。我怎样才能再次设置它们,或者从头开始准备输入新值?

提前感谢任何看过这个的人。

编辑:

我找到了后一部分的答案,即如何重置值。如果我跑

mvn release:prepare -Dresume=false

我可以再次输入值。

(正如@tom已经在答案中提到的那样,我可以运行mvn release:rollback来摆脱那里的那些。但是,这似乎不起作用,可能是因为准备失败了。)< / p>

这次我输入了默认值,但我注意到我的问题比这更深入,我可能还没有正确设置Perforce集成。我得到了这个INFO输出:

  

找不到密码,没有密码。

即使我将其设置为:

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

在我的settings.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不在客户端视图中的错误 not 出现)

这似乎是我最后一个问题......到达那里:)

1 个答案:

答案 0 :(得分:2)

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发布插件的部分。不是问题的其他部分。提问者已决定就问题的其他部分提出新问题。