部署我有以下命令我通过常规执行:找不到命令错误时执行行家通过常规
def mavenCommand = "/opt/apache-maven-3.2.2/bin/mvn";
def mavenUrl = "-Durl=${nexusUrl}";
def mavenRepoId = "-DrepositoryId=${nexusRepo}";
def mavenGroupId = "-DgroupId=${groupId}";
def mavenArtefactId = "-DartifactId=${artefactName}";
def mavenVersion = "-Dversion=${artefactVersion}";
def mavenFile = "-Dfile=${fileLocation}";
def mavenPackaging = "-Dpackaging=${artefactExtension}";
uploadToNexus("${mavenCommand} deploy:deploy-file ${mavenUrl} ${mavenRepoId} ${mavenGroupId} ${mavenArtefactId} ${mavenVersion} ${mavenFile} ${mavenPackaging}");
public String uploadToNexus(command){
def uploadToNexusProc = new ProcessBuilder("/bin/sh", "-c","${command}").redirectErrorStream(true).start();
uploadToNexusProc.waitFor();
println uploadToNexusProc.text;
return uploadToNexusProc.exitValue();
}
尽管在这种情况下它上传到成功的关系,看来最后一个参数总是少不了导致在:
-Dpackaging=zip : command not found
我明白,这是一个shell错误,并出于某种原因${mavenPackaging}
扩展到新的生产线。 有人可以帮我理解这个问题的原因吗?谢谢。
编辑1
$ {mavenPackaging“}是在当我格式化#2码我出错了,这是在我的代码设置正确。现在更新。
EDIT 2
如果我是这样做:
println "${mavenCommand} deploy:deploy-file ${mavenUrl} ${mavenRepoId} ${mavenGroupId} ${mavenArtefactId} ${mavenVersion} ${mavenFile} ${mavenPackaging}";
我得到以下输出(其中突出的问题):
/opt/apache-maven-3.2.2/bin/mvn deploy:deploy-file -Durl=http://server/content/repositories/releases -DrepositoryId=nexus -DgroupId=bogus.fake.fakeagain -DartifactId=api -Dversion=1.4.5 -Dfile=/opt/atlassian/jira/temp/api-1.4.5.zip
-Dpackaging=zip
我想你想的'$引号{mavenPackaging“} '在括号外,就像'$ {mavenPackaging}“''在uploadToNexus行末尾一样。 – zerodiff 2014-09-23 13:14:35
是否有一个原因可以将这里的壳带入等式中?你有没有试过'新的ProcessBuilder(mavenCommand,mavenUrl,mavenRepoId,mavenGroupId,mavenArtefactId,mavenVersion,mavenFile,mavenPackaging)...' – cfrick 2014-09-23 13:27:39
哦,你可以检查,如果你的'fileLocation'在换行符结束? – cfrick 2014-09-23 13:28:40