如何编辑build-samples.xml在tar解压完成后执行sed修改Makefile
修改build-samples.xml实现解压后自动执行sed替换
你只需要在extract目标的tar解压执行块之后,追加一个新的<exec>节点调用sed命令即可,原有逻辑不需要改动。
注意两个要点:
- 该target本身已经配置了
unless="host.isWindows"属性,新增的sed逻辑会自动仅在非Windows环境下运行,不需要额外添加环境判断 - Ant中执行shell命令建议通过
sh -c包裹命令内容,避免引号、变量解析出现转义问题,同时保留failonerror="true"配置,sed执行失败时会直接中断构建,方便排查问题
修改完成后的完整target代码如下:
<target name="extract" unless="host.isWindows"> <echo>#####################################################################################</echo> <echo># Extracting ${loads.dir}/${deploy.version}/${clientTar} to ${build_samples_dir}</echo> <echo>#####################################################################################</echo> <exec dir="${build_samples_dir}" executable="gunzip" failonerror="true"> <arg line="${clientTar}.tar.gz"/> </exec> <exec dir="${build_samples_dir}" executable="${GNU_TAR}" failonerror="true"> <arg line="-xf ${clientTar}.tar"/> </exec> <!-- 解压完成后替换Makefile中的编译参数 --> <exec executable="sh" failonerror="true"> <arg line="-c"/> <arg line="sed -i'' -e 's/SIXTY_FOUR_COMPAT:=-m32/SIXTY_FOUR_COMPAT:=/g' ${build_samples_dir}/Linux-native/opt/client-100.0.38.601/Intro/Makefile"/> </exec> </target>
如果你后续Makefile里的客户端版本号会随构建参数变化,可以把路径里写死的
100.0.38.601替换成对应的Ant变量,避免版本升级后还要手动改路径。
内容的提问来源于stack exchange,提问作者sara
相关产品推荐
相关产品推荐

