Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/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
Ant Jenkins Build出现错误“工作区目录无效”_Ant_Build_Jenkins_Weblogic9.x - Fatal编程技术网

Ant Jenkins Build出现错误“工作区目录无效”

Ant Jenkins Build出现错误“工作区目录无效”,ant,build,jenkins,weblogic9.x,Ant,Build,Jenkins,Weblogic9.x,我正试图和ant一起在Jenkins上执行ear任务。ant任务在我的本地计算机上成功构建 但是,当我尝试使用Jenkins进行构建时,会出现以下错误:指定的工作区无效。我尝试硬编码工作区值,尝试从环境变量获取它,还尝试在自定义工作区中定义它,然后访问它 但我一直得到以下错误: [subProjEAR] $ cmd.exe /C '"F:\Build\Ant\apache-ant-1.8.4\bin\ant.bat && exit %%ERRORLEVEL%%"'

我正试图和ant一起在Jenkins上执行ear任务。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>
请提供帮助。

从ANT访问工作区的最佳方式是:

<property environment="env" />
<echo message="${env.WORKSPACE}" />
这看起来不像是Jenkins错误,因为Jenkins能够从该工作区成功加载构建文件。在线的是什么:81个build.xml?问题的原因就在那里。在第81行周围粘贴生成文件的片段

在作者评论后编辑 所以,正如我猜测的,这与詹金斯无关。问题在于任务。到目前为止,我已经能够找到关于它的零文档,其他的

正是这个任务抛出了错误。考虑到Weblogic和Jenkins之间没有什么关系,我怀疑您是否应该通过Jenkins的工作区来完成这项任务。它可能正在寻找一些Weblogic工作区

您是否在Jenkins的子文件夹下签出了Weblogic工作区,如my_checkout_文件夹?如果是这样,也许您应该使用${workspace}/my_checkout_文件夹来完成该任务

在中,他们正在读取${workspace}/workspace.xml文件

其中,workspace的值与您的非常相似,它来自环境变量WORKSHOP\u workspace。您是否在本地机器上设置了环境变量,即它工作的机器

可能原因 当我回顾你的问题时,我突然想到了这一点

你说它在本地机器上工作,但在詹金斯上不行。 如果在这两台计算机上使用相同的ant文件,则意味着您希望本地计算机上存在一个环境变量工作区,对吗?否则,同样的ant脚本就不会在本地应用程序上工作 Jenkins在执行构建时有自己的环境变量workspace,它与您在本地计算机上可能拥有的环境变量workspace无关。Jenkins的workspace变量定义其作业的工作目录。 即使您在Jenkins机器上手动设置全局工作空间环境变量,它也会在每次运行时被作业的工作空间覆盖。 执行以下测试:

本地计算机上的echo workspace环境变量 在Jenkins作业中,使用execute shell或execute windows batch命令从作业中回显工作区。
将结果粘贴到这里。但你也可以自己比较

如果Jenkins不是当前所有者,请尝试使Jenkins成为工作区及其内部文件的所有者。如果您手动创建工作区,您应该将文件移出工作区,运行Jenkins,Jenkins将为作业创建自己的工作区。感谢elrobe的回复。工作区仅由Jenkins创建。在构建之前,Jenkins将cvs中的所有项目文件签出到工作区中,然后在签出完成后,它将构建它,这就是出现错误的时候。是的,目前我只使用这样的工作区。感谢@Slav的回复。我修改了我的问题,添加了workspace的响应值。Jenkins打印了正确的工作空间值,但错误仍然存在。除了mdimport任务似乎期望的工作空间值与Jenkins的工作空间值不同之外,我不能再多说了。我不确定mdimport任务来自哪里。。。网络逻辑?我建议您使用Weblogic制作一张支持票,并询问他们它期望的价值
<property environment="env" />
<echo message="${env.WORKSPACE}" />