我正试图在詹金斯上用蚂蚁进行耳朵任务。 ant任务在我的本地计算机上成功构建。
但是,当我尝试使用Jenkins构建时,我收到以下错误:"指定的工作区无效"。我尝试硬编码工作区值,我尝试从环境变量中获取它,我也尝试在自定义工作区中定义它然后访问它。
但我一直收到以下错误:
[subProjEAR] $ cmd.exe /C '"F:\Build\Ant\apache-ant-1.8.4\bin\ant.bat && exit %%ERRORLEVEL%%"'
Buildfile: E:\Jenkins\jobs\ProjectDev\workspace\subProjEAR\build.xml
init.env:
init.typedefs:
Trying to override old definition of task apt
init:
BUILD FAILED
E:\Jenkins\jobs\ProjDev\workspace\subProjEAR\build.xml:81: Specified workspace directory "E:\Jenkins\jobs\ProjDev\workspace" is not valid.
Total time: 0 seconds
Build step 'Invoke Ant' marked build as failure`
第81行周围的代码如下所示
<target name="init" depends="init.env,init.typedefs" unless="init.executed">
<property name="init.executed" value="true" />
<fail unless="workspace" message="The workspace property needs to be set!" />
<dirname property="project.dir" file="${ant.file}" />
<property name="echo.metadata" value="false" />
<!-- Line below is no 81 -->
<mdimport workspace="${workspace}" pjdir="${project.dir}" echo="${echo.metadata}">
</mdimport>
<property name="archive.name" value="${project.name}.ear"/>
<property name="uri" value=""/>
</target>
我在本地机器&#34;中创建了一个名为WORKSPACE的环境变量。回声正确打印(C:\ bea \ user_projects \ w4WP_workspaces \ myProjWS)。我还在Jenkins机器上设置了WORKSPACE环境变量。这与Jenkins的工作区相同。詹金斯的回声打印如下:
Buildfile: E:\Jenkins\jobs\ProjectDev\workspace\subProjEAR\build.xml
init.env:
init.typedefs:
Trying to override old definition of task apt
init:
[echo] workspace : E:\Jenkins\jobs\ProjectDev\workspace
[echo] weblogic workspace : ${env.WORKSHOP_WORKSPACE}
BUILD FAILED
E:\Jenkins\jobs\ProjectDev\workspace\subProjEAR\build.xml:85: Specified workspace directory "E:\Jenkins\jobs\ProjectDev\workspace" is not valid.
请帮忙。
答案 0 :(得分:0)
从ANT访问WORKSPACE
的最佳方式是:
<property environment="env" />
<echo message="${env.WORKSPACE}" />
它似乎不是Jenkins错误,因为Jenkins能够从该工作区成功加载构建文件。该build.xml的line: 81
上有什么内容?问题的原因在那里。在line: 81
在作者评论后编辑
所以,正如我猜测的那样,这与詹金斯无关。问题在于<mdimport>
任务。到目前为止,我已经能够找到关于它的零文档,其他it comes from Weblogic
正是这个任务抛出了错误。考虑到Weblogic和Jenkins彼此没什么关系,我怀疑你应该通过Jenkins的workspace
来完成这项任务。它可能正在寻找一些Weblogic工作区。
您是否在Jenkins的子文件夹下签出了Weblogic工作区,例如my_checkout_folder
?如果是这样,也许您应该使用${workspace}/my_checkout_folder
来完成该任务?
在this issue from someone中,他们正在阅读${workspace}/workspace.xml
文件
在 this example (看起来与您的非常相似)中,workspace
的值来自环境变量WORKSHOP_WORKSPACE
。您是否在本地计算机(其工作原理)上设置了该环境变量?
在审核你的问题时,我才来找我。
workspace
,对吧? (否则相同的ant脚本不会在本地工作)workspace
,这与您在本地计算机上可能没有的任何关系。 Jenkins的workspace
变量定义了其作业的工作目录。workspace
环境变量,每次运行时它都会被作业workspace
覆盖。进行以下测试:
workspace
环境变量workspace
。将结果粘贴到此处。但你也可以自己比较它们。