我正在尝试让 maven 发布插件工作,与 Perforce 集成。我昨天终于到了某个地方并设法运行:
mvn release:prepare
并被要求指定很多版本和新的工作快照。我将版本“0.1”(不带引号)指定为所有子项目的发布版本,并将工作快照设置为“1.0-SNAPSHOT”(与以前相同),因为我只是在测试插件和集成使用 Perforce,而不是实际尝试构建一个版本。但是,输入信息后,我收到以下错误:
[错误] 无法在项目 myproject 上执行目标 org.apache.maven.plugins:maven-release-plugin:2.3.1:prepare (default-cli):执行目标 org.apache.maven.plugins:maven 的 default-cli -release-plugin:2.3.1:prepare failed: 数据“0.1”对于 JDOM 字符内容是不合法的:0x1b 不是合法的 XML 字符。-> [帮助 1]
(我不是 100% 确定这是我得到的确切错误)
但是现在,每次我运行mvn release:prepare
时,我都会遇到同样的错误(肯定是上面的那个),没有机会重新提供版本或工作快照名称。
版本“0.1”是否无效,或者我是否设法在其中一个值中输入了转义字符(“0x1b”),或者其他地方有什么问题?
我也找不到我输入的值去了哪里。我如何能够再次设置它们,或者从头开始准备输入新值?
提前感谢任何看到这个的人。
编辑:
我找到了后一部分的答案,即如何重置值。如果我跑
mvn release:prepare -Dresume=false
我可以再次输入值。
(正如@tom 在答案中已经提到的那样,我可以跑去mvn release:rollback
摆脱那些存在的东西。但是,这似乎不起作用,可能是因为准备失败了。)
这次我输入了默认值,但我注意到我的问题比这更深,而且我可能没有正确设置 Perforce 集成。我得到这个信息输出:
没有找到密码,没有它继续。
即使我将其设置为:
<server>
<id>ip-of-perforce-server</id>
<username>my-perforce-username</username>
<password>***************</password>
</server>
在我的 settings.xml 中。我只在项目的 pom 中的示例中看到过它的设置,但有人提到你可以在 settings.xml 中进行设置,这似乎是唯一有意义的事情(因为 pom通常在单片机)。如果我将用户名和密码指定为环境变量(-Dusername=xxx 等),我可以避免收到此消息。
但我也得到错误:
CommandLineException 退出代码:1 - 客户端“PCNAME”未知 - 使用“客户端”命令创建它。
其中 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 构建失败错误:
[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 不在客户端视图中的错误)
这似乎是我剩下的最后一个问题......到达那里:)