shs*_*mer 27 ant build-process
我有一个构建脚本,作为该脚本的一部分,它将一个jar文件复制到一个目录,为了方便我们将其称为utils jar.utils jar由另一个构建脚本构建,该脚本位于另一个目录中.我试图做的是让我的构建脚本运行utils构建脚本,以便我可以确保utils jar是最新的.
所以我知道我需要导入utils构建文件.
<import file="../utils/build/build.xml" />
Run Code Online (Sandbox Code Playgroud)
哪个不起作用,因为导入任务与几乎所有其他ant taks不同,不会从basedir运行,它从pwd运行.所以,为了解决这个问题,我有一个小小的,这可以成功导入构建文件
<property name="baseDirUpOne" location=".." />
<import file="${baseDirUpOne}/utils/build/build.xml" />
Run Code Online (Sandbox Code Playgroud)
所以现在我已经解决了我的导入问题,我需要调用任务,这应该很容易:
<antcall target="utils.package" />
Run Code Online (Sandbox Code Playgroud)
请注意,在上面,utils是../utils/build/build.xml的项目名称
我现在遇到的问题是蚂蚁调用没有在../utils/build中执行,所以我需要的,并且无法找到,是一个runat属性或类似的东西,本质上:
<antcall target="utils.package" runat="../utils/build" />
Run Code Online (Sandbox Code Playgroud)
我需要这个的原因是在我的utils构建文件中,选择复制到jar的代码的步骤是基于相对路径,以避免我的ant文件中的硬编码路径.有任何想法吗?
The*_*heo 33
我有一些类似的设置:我有一个主要的build build.xml,它调用一个单独的build.xml来负责构建我的测试.我是这样做的:
<target name="build-tests">
<subant target="build">
<fileset dir="${test.home}" includes="build.xml"/>
</subant>
</target>
Run Code Online (Sandbox Code Playgroud)
诀窍是使用subant而不是antcall.您不必导入其他构建文件.
尝试使用"ant"任务而不是"antcall"任务,该任务直接运行导入的构建,而不是将其导入当前构建文件.它有一个"dir"参数:
用作新Ant项目的basedir的目录.默认为当前项目的basedir,除非inheritall设置为false,在这种情况下它没有默认值.这将覆盖被调用项目的basedir设置.
所以你可以这样做:
<ant antfile="${baseDirUpOne}/utils/build/build.xml" dir="../utils/build" />
Run Code Online (Sandbox Code Playgroud)
或类似的东西.
| 归档时间: |
|
| 查看次数: |
22977 次 |
| 最近记录: |