Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Maven/Hudson/Mercurial进行发布_Mercurial_Hudson_Release_Maven 3 - Fatal编程技术网

使用Maven/Hudson/Mercurial进行发布

使用Maven/Hudson/Mercurial进行发布,mercurial,hudson,release,maven-3,Mercurial,Hudson,Release,Maven 3,我试图通过Maven发布插件进行发布,但是SCM配置有问题。我正在使用安装了m2eclipse的Eclipse。我们使用Mercurial,在我的机器(Win7)上安装了OrtoisehG。我有一个创建jar的测试项目。我们在项目中使用超级pom,所以测试项目pom也可以。我在super pom中设置了以下内容: .... org.apache.maven.plugins maven scm插件 1.6 连接 我的测试项目pom如下所示: 4.0.0 我的团队 测试罐 1.0-快照 我的团

我试图通过Maven发布插件进行发布,但是SCM配置有问题。我正在使用安装了m2eclipse的Eclipse。我们使用Mercurial,在我的机器(Win7)上安装了OrtoisehG。我有一个创建jar的测试项目。我们在项目中使用超级pom,所以测试项目pom也可以。我在super pom中设置了以下内容:


....
org.apache.maven.plugins
maven scm插件
1.6
连接
我的测试项目pom如下所示:


4.0.0
我的团队
测试罐
1.0-快照
我的团队
超级聚甲醛
1
scm:hg:ssh://our.scm.server:22//path/to/TestJarProject
scm:hg:ssh://our.scm.server:22//path/to/TestJarProject
请注意,我们使用ssh连接到SCM服务器。我怀疑我遇到的一些问题可能与此有关。我只能找到使用http的示例

在我的settings.xml文件中,我添加了以下内容:


...
我们的.scm.server
用户名
密码
当我运行release:prepare-release:perform时,会弹出一个TortoisePlink对话框,提示我输入密码。对话框询问“@our.scm.server的密码”

它似乎没有使用settings.xml文件中的用户名或密码,这正是我通过向其中添加server元素所期望的。应该是吗?我还尝试将我的用户名添加到连接url:


scm:hg:ssh://username@我们的.scm.server:22//path/to/TestJarProject
但仍会提示输入空用户名密码

问题一

在进行Maven发布时,是否有人成功地使用ssh连接到Mercurial

由于我最终希望在Hudson中进行构建,因此我设置了一个Hudson作业来进行发布,但由于以下错误而失败:

[INFO] o.h.m.e.h.MavenExecutionResultHandler - Build failed with exception(s)
[INFO] o.h.m.e.h.MavenExecutionResultHandler - [1] org.apache.maven.lifecycle.\
   LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:\
   maven-release-plugin:2.0:prepare (default-cli) on project TestJar: Cannot \
   prepare the release because you have local modifications : 
[.maven/repo/ca/shaw/eng/nms/nms-super-pom/1.0/_maven.repositories:unknown]
[.maven/repo/ca/shaw/eng/nms/nms-super-pom/1.0/nms-super-pom-1.0.pom:unknown]
[.maven/repo/ca/shaw/eng/nms/nms-super-pom/1.0/nms-super-pom-1.0.pom.sha1:unknown]
... many, many more lines of this nature .....
问题二

Maven遇到了哪些局部修改

由于项目是从repo中提取出来的,所以我能想到的唯一变化是对pom文件的更新(从版本中删除快照)。但是Maven不应该对此抱怨,因为它自己做出了改变,不是吗

更新

根据khmarbaise的建议,我在我的父母POM中添加了以下内容:


maven发布插件
2.2.2
问题一

在进行Maven发布时,是否有人成功地使用ssh连接到Mercurial

答案似乎是Maven Release插件只适用于https。我们可以按照本页的说明在Mercurial服务器上使用https:

问题二

Maven遇到了哪些局部修改


本地修改是在构建过程中创建的
.maven
目录。通过将
.maven/*
添加到我的
.hgignore
文件中,我能够完成构建。

我现在无法重现这一点,但根据以前的经验,我记得ssh连接仅适用于基于密钥的身份验证,而不适用于用户名和密码。这不一定特定于发布插件和/或其Mercurial支持

编辑:我已经在Mercurial和2.4.1版本的发布插件中尝试了基于密钥的ssh访问,效果很好。问题的一个可能来源是SCM URL格式。就我而言,它是:

scm:hg:ssh://user@hostname.com/path

所以你的第一个问题的答案是:是的,但不是用户名/密码验证。我没有遇到任何“本地修改”问题,但我的.hgignore中有一个目标,所以可能就是它。

首先在您的家长中做一个插件管理部分,并配置一个较新版本的maven release插件,因为您使用的是2.0,它有点过时……您使用哪一个maven版本?哈德逊是最新的吗?使用Hudson的发布插件?我们使用的是Hudson 2.1.2和Maven 3(与Hudson捆绑在一起),您是否首先检查了在没有Hudson的情况下是否可以在命令行上发布?(添加了pluginManagement部分?)在我的本地Win7机器上,是的,我尝试过使用
mvn-B release:prepare release:perform
进行命令行发布。“TortoisePlink密码”对话框显示两次,其中字符串中有我的用户名,它会提示我两次输入密码(
usernam@our.scm.server我输入的密码
),然后再次输入,但没有用户名(
@our.scm.server的密码
),它无法接受(没有用户名)在取消构建之前,我一直处于一个无休止的循环中。