我有maven项目在发布时失败:执行调用,虽然发布;准备按预期工作。
我发现了错误报告(如下),这似乎与我的问题相似,但并不完全确定我理解这个问题: 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)
似乎根pom应该位于错误中的“工作区”内的某个公共目录中,但是尝试了它并且不起作用,也没有理解为什么我需要它。
警告基目录是一个文件要我做什么?!然后它会发现基本目录是 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?
答案 0 :(得分:0)
我不确定你是否面对MRELEASE-516(约为release:prepare
)。但是,我想知道每个POM中是否有正确的<scm>
信息。你能证实一下吗?
答案 1 :(得分:0)
Working directory "E:\hudson\jobs\myHudsonJob\workspace\target\checkout\workspace" does not exist!
我刚看到你日志中的上一行。看起来你在某处设置了一些棘手的路径。你在某处覆盖了工作区吗?检查您的配置并尝试尽可能消除可选设置。
答案 2 :(得分: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>
答案 3 :(得分: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>
答案 4 :(得分:0)
我们发生了这个错误
Working directory E:\Data\myproject\target\checkout does not exist!
我们正处于服务器工具的大转变过程中,maven的release:prepare
似乎无声地失败,声称标签和版本号更改已被推送而没有错误。然而,经过一些研究,这些东西只被提交到本地git存储库,而不是被推送 - 即使release:prepare
正在执行命令来执行推送但从未报告过失败 - 即使使用maven {{1 }和-e
命令行参数。
我们正在使用Maven 3.3.9,maven release plugin 2.5.3和git client 2.9.2。
我们的最终解决方案是在我们的git服务器(源主机)的maven -X
文件中添加 a(或更正,视情况而定)定义,包括用户名和密码推送标签的权限(以及推送到主人)。 git服务器的服务器定义中的~\.m2\settings.xml
必须是git服务器的主机名:
id
通过此更新,标记在服务器上完成,并且检出成功。