1

我正在尝试让 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 不在客户端视图中的错误)

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

4

1 回答 1

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

于 2012-06-12T09:24:28.990 回答