2010-05-10 25 views
1

我有Maven项目失败时发布:执行被称为,虽然释放;准备按预期工作。maven-release-plugin:执行失败,'工作目录'... workspace target checkout workspace“不存在!'

我发现的bug报告(如下图),这当然似乎像这个问题我有,但不能完全肯定我理解这个问题: 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! 

从阅读错误报告错误的原因可能是与我模块的结构,我试着概括如下它:

 
/workspace 
| 
|+ pom.xml (root pom whose parent is the build pom, 
|   calling release:perform on this pom) 
|   [Modules: moduleA and moduleB] 
| 
|- moduleA 
    |+ pom.xml (parent is also build pom) 
    |+ build/pom.xml (the build pom - no custom parent) 
|- moduleB 
    |+ pom.xml (parent is build pom) 

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

什么是警告基地目录是一个文件要我做的呢?!然后它会计算出基本目录是工作区,这意味着找不到工作目录...有什么想法?

在此先感谢。

编辑:

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

+0

没有你的poms的内容,很难说点什么,并分析问题。另一方面,为什么你有这样的结构(父级更深层次的pom)?moduleA是否有一个模块部分用于构建? – khmarbaise 2010-05-10 16:29:21

+0

我认为其他poms的母公司的更深层次的原因是因为我们的项目从moduleA开始,并且从那以后一直在增长。 – 2010-05-10 16:44:27

回答

0

我通过使用更新版本的发行插件得到了这个工作。 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> 
0

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

+0

在bug报告的底部附近,他继续解释如果他运行版本会发生什么情况:执行并得到完全相同的错误...虽然我想你是对的,但大部分报告都是关于准备的。现在请仔细检查scm的详细信息...谢谢 – 2010-05-10 16:47:13

+0

看到编辑,SCM配置似乎对我好... – 2010-05-11 07:42:19

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

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

+0

不,我不重写工作区,我使用默认似乎是目标/结帐,但自从maven认为我有一个根目录,然后它必须是工作空间,它也决定在工作空间下签出......工作空间只是哈德森用作我的Perforce工作空间的默认目录。欢呼 – 2010-05-11 07:33:00

+0

作为补充说明;如果我没有说清楚,它应该使用的正确目录是“E:\ hudson \ jobs \ myHudsonJob \ workspace \ target \ checkout”,因为在这个目录中,一旦它失败了,我需要打包模块 – 2010-05-11 07:36:54

0

在我的情况下覆盖的依赖版本相同的症状竟然是一个结果Maven-release-plugin中的一个bug: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> 
0

这个错误发生在我们

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

我们是在中间服务器工具的大型过渡以及maven的release:prepare似乎无声无息地宣称标签和版本号更改已被推送而没有错误。然而,经过一番研究,这些东西只是被提交给本地git仓库,并没有被推送 - 尽管release:prepare正在执行命令来执行推送,但从未报告过失败 - 即使使用了命令行参数-e-X

我们使用的是Maven 3.3.9,maven release plugin 2.5.3和git client 2.9.2。

我们的最终解决方案是添加(或纠正,因为你的情况而定)在Maven的~\.m2\settings.xml文件为我们的git的服务器,包括与代码推权限的用户名和密码(原始主)(定义以及推动主)。在是混帐服务器的主机名所需的混帐服务器的服务器定义的id

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

安装此更新,标签在服务器上完成,并成功地发生了结账。

相关问题