如何从项目根目录调用ng build并集成至Ant的build.xml
在Ant的build.xml中从项目根目录执行Angular的
ng build命令 这事儿很简单,用Ant的<exec>任务就能搞定核心需求——它允许你指定命令的工作目录,不用手动切换到Angular子文件夹再执行命令。下面给你两种靠谱的实现方式:
方法1:直接调用ng命令
在你的build.xml里新增一个专门的target,通过dir属性指定Angular子目录的路径即可:
<target name="build-angular" description="Compile the Angular application from project root"> <!-- ${basedir} 是Ant默认的项目根目录,对应你的$APP_ROOT --> <exec executable="ng" dir="${basedir}/Angular"> <arg value="build"/> <!-- 如果需要生产环境构建,取消下面的注释添加参数 --> <!-- <arg value="--configuration=production"/> --> </exec> </target>
方法2:通过npm run执行(更稳妥,避开PATH依赖问题)
如果你的Angular项目package.json里已经默认定义了build脚本,也可以用npm来执行,这样不用依赖系统全局PATH中的ng命令:
<target name="build-angular" description="Build Angular via npm script"> <exec executable="npm" dir="${basedir}/Angular"> <arg value="run"/> <arg value="build"/> <!-- 如需传递额外参数给ng,比如指定环境,按下面的格式添加 --> <!-- <arg value="--"/> --> <!-- <arg value="--configuration=production"/> --> </exec> </target>
一些额外提醒
- 确保Angular子目录里已经执行过
npm install,所有依赖包都安装完成,否则ng build会直接报错 - 如果
ng或npm不在系统全局PATH中,可以指定它们的绝对路径,比如executable="${basedir}/Angular/node_modules/.bin/ng"或者executable="/usr/local/bin/npm" - 你可以把这个
build-angulartarget集成到主构建流程里,比如在主构建target中添加depends="build-angular",这样执行ant build时会自动先完成Angular的构建
内容的提问来源于stack exchange,提问作者user2850818
相关产品推荐
相关产品推荐

