我正在努力让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 出现)
这似乎是我最后一个问题......到达那里:)
答案 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发布插件的部分。不是问题的其他部分。提问者已决定就问题的其他部分提出新问题。