1

我有一个在 release:perform 被调用时失败的 maven 项目,尽管 release;prepare 按预期工作。

我发现了错误报告(如下),这似乎与我遇到的问题很相似,但我不完全确定我理解了这个问题: MRELEASE516

我得到的最后几行输出:

[INFO] Executing: cmd.exe /X /C "p4 -d E:\hudson\jobs\myHudsonJob\workspace\target\checkout -p 1.1.1.1:1111: client -d myProjectWorkspace-MavenSCM-E:\hudson\jobs\myHudsonJob\workspace\target\checkout"
[INFO] Executing goals 'deploy'...
[WARNING] Base directory is a file. Using base directory as POM location.
[WARNING] Maven will be executed in interactive mode, but no input stream has been configured for this MavenInvoker instance.
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error executing Maven.

Working directory "E:\hudson\jobs\myHudsonJob\workspace\target\checkout\workspace" does not exist!

通过阅读错误报告,错误的可能原因与我的模块结构有关,我试图在下面概述它:

/工作区
|
|+ pom.xml (根 pom,其父级是构建 pom,
| 调用释放:在这个 pom 上执行)
| [模块:模块A和模块B]
|
|- 模块A
   |+ pom.xml(父级也是构建 pom)
   |+ build/pom.xml(构建 pom - 没有自定义父级)
|- 模块B
   |+ pom.xml(父级是构建 pom)

似乎根 pom 应该位于错误中的“工作区”内的某个公共目录中,但尝试过但不起作用,对于我为什么需要它也没有意义。

警告Base directory is a file想要我做什么?!然后它认为基本目录是工作区,这意味着找不到工作目录......有什么想法吗?

提前致谢。

编辑:

检查 SCM 配置后,我觉得一切正常……在每个模块和我拥有的根 pom 中:

<scm>
<connection>
    scm:perforce:1.1.1.1:1111://rootToDirectoryContainingRelevantPom
</connection>
<developerConnection>
    scm:perforce:1.1.1.1:1111://rootToDirectoryContainingRelevantPom
</developerConnection>
</scm>

编辑2:

也许我打了MRELEASE-261

4

5 回答 5

0

我不确定您是否面对MRELEASE-516(大约release:prepare)。<scm>但是,我想知道您是否在每个 POM 中都有正确的信息。你能证实这一点吗?

于 2010-05-10T16:39:12.350 回答
0
Working directory "E:\hudson\jobs\myHudsonJob\workspace\target\checkout\workspace" does not exist!

我刚刚在您的日志中看到了上述行。看起来你在某处有一些奇怪的路径设置。您是否在某处覆盖工作区?检查您的配置并尝试尽可能多地消除可选设置。

于 2010-05-10T18:24:52.693 回答
0

我通过使用更新版本的发布插件来完成这项工作。Maven超级 pom依赖于 v2.0 定义的发布插件。如果您不覆盖它,那么将使用该版本。

您可以在运行插件时指定较新的版本

  mvn org.apache.maven.plugins:maven-release-plugin:2.2.1:perform

或者你可以覆盖你的 pom 中的依赖版本

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <version>2.2.1</version>
  </plugin>
于 2011-08-04T11:24:00.047 回答
0

在我的情况下,相同的症状原来是 maven-release-plugin:2.2.1 中的一个错误的结果。请参阅MRELEASE-705

所以为了摆脱这个错误,我必须把它放到父 pom 中:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.0</version>
        </plugin>
    </plugins>
</build>
于 2012-04-11T19:04:20.730 回答
0

这个错误发生在我们身上

Working directory E:\Data\myproject\target\checkout does not exist!

我们正处于服务器工具的大规模过渡之中,而 mavenrelease:prepare似乎正在默默地失败,声称标签和版本号的更改已被推送而没有错误。然而,经过一些研究,这些东西只提交到本地 git 存储库,而不是推送 - 即使release:prepare正在执行命令来执行推送但从未报告失败 - 即使使用 maven-e-X命令行参数也是如此。

我们正在使用 Maven 3.3.9、Maven 发布插件 2.5.3 和 git 客户端 2.9.2。

我们的最终解决方案是在 Maven 文件中为我们的 git 服务器(原始主机)添加一个(或更正该文件)定义,~\.m2\settings.xml包括具有推送标签(以及推送到主机)权限的用户名和密码。git 服务器的id服务器定义中的 需要是 git 服务器的主机名:

<servers>
  <server>
    <id>git-server</id>
    <username>dan</username>
    <password>changeit</password>
  </server>
<servers>

通过此更新,标签在服务器上完成并且结帐成功发生。

于 2016-09-01T20:28:58.630 回答