【问题标题】:maven-release-plugin: Perform fails with 'working directory "...workspace\target\checkout\workspace" does not exist!'maven-release-plugin:执行失败,'工作目录“...workspace\target\checkout\workspace”不存在!'
【发布时间】:2010-05-10 16:11:11
【问题描述】:

我的 Maven 项目在调用 release:perform 时失败,但 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 想要我做什么?!然后它认为基础目录是 workspace 这意味着找不到工作目录......有什么想法吗?

提前致谢。

编辑:

检查 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?

【问题讨论】:

  • 如果没有你的 poms 内容,很难说些什么和分析问题。另一方面,为什么你有这种结构(更深层次的父 pom?) moduleA 是否有用于构建的模块部分?
  • 我认为其他 pom 的 parent 处于更深层次的原因是因为我们的项目从 moduleA 开始并从那时起不断发展。

标签: hudson version-control maven maven-release-plugin


【解决方案1】:

我通过使用更新版本的发布插件来完成这项工作。 Maven super 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>

【讨论】:

    【解决方案2】:

    我不确定你面对的是MRELEASE-516(大约是release:prepare)。但是,我想知道您是否在每个 POM 中都有正确的 &lt;scm&gt; 信息。你能确认一下吗?

    【讨论】:

    • 在错误报告的底部附近,他继续解释如果他运行 release:perform 并得到完全相同的错误会发生什么......虽然我猜你是对的,报告的大部分谈论准备。现在将仔细检查 scm 详细信息...谢谢
    【解决方案3】:
    Working directory "E:\hudson\jobs\myHudsonJob\workspace\target\checkout\workspace" does not exist!
    

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

    【讨论】:

    • 不,我没有覆盖工作区,我使用默认值,它似乎是目标/结帐,但由于 maven 认为我有一个根目录,然后它必须是“工作区”,所以它决定结帐也在工作区下...工作区只是 hudson 用作我的 Perforce 工作区的默认目录。干杯
    • 作为附加说明;如果我没有说清楚,它应该使用的正确目录是“E:\hudson\jobs\myHudsonJob\workspace\target\checkout”,因为一旦失败,在这个目录中就是我需要打包的模块跨度>
    【解决方案4】:

    在我的情况下,相同的症状原来是由于 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>
    

    【讨论】:

      【解决方案5】:

      这个错误发生在我们身上

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

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-10-19
        • 1970-01-01
        • 1970-01-01
        • 2014-03-10
        • 2020-04-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多