首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用ANT build构建Angular5项目时,ng build无法工作

使用ANT build构建Angular5项目时,ng build无法工作
EN

Stack Overflow用户
提问于 2019-05-20 17:32:34
回答 1查看 673关注 0票数 0

我有一个java应用程序,它运行在本地主机:9080上,另一个angular5项目(angularWeb)在同一项目的WebContent文件夹中,它运行在不同的端口本地主机:4200上

按照要求,我需要集成两个项目运行在同一个服务器上的localhost:9080,这两个(java和角度项目)需要在相同的位置,这就是为什么我在web内容文件夹中的角度项目。

请帮我理解一下遗漏了什么。

首先:我在angular项目中创建了一个目标为localhost:9080的proxy.conf.json文件。

第二:我已经通过代理文件“package.json”启动了angular应用程序:"ng serve -- proxy -conf proxy.conf.json",

第三:我在build.xml文件中添加了一些目标

...
...
<property name="project.angularWebPath" location="${project.webContentPathh}/angularweb" />
<target name="mkfolders">
    <mkdir dir="${project.webContentPath}/js" />
    <mkdir dir="${project.webContentPath}/css" />
    <mkdir dir="${project.webContentPath}/img" />
    <mkdir dir="${project.webContentPath}/lib" />
    <mkdir dir="${project.webContentPath}/partials" />
</target>
<target name="mkfiles">
    <touch file="${project.webContentPath}/js/app.js" />
    <touch file="${project.webContentPath}/js/controller.js" />
    <touch file="${project.webContentPath}/js/directives.js" />
    <touch file="${project.webContentPath}/js/filters.js" />
    <touch file="${project.webContentPath}/js/services.js" />
    <touch file="${project.webContentPath}/index.html" />
</target>
<target name="ngBuild">
    <echo>Building Angular Project</echo>
    <exec executable="${project.angularWebPath}/node_modules/@angular/cli/bin/ng.cmd" failonerror="true">
        <arg value="build" />
        <arg value="--prod" />
        <arg value="--bh" />
    </exec>
    <echo>Built Angular Project</echo>
</target>
<target name="angularBuild">
    <antcall target="mkfolders" />
    <antcall target="mkfiles" />
    <!--<antcall target="npmInstall" />-->
    <antcall target="ngBuild" />
</target>
...
...

现在,当我在ANT中运行angularBuild时,它会给出以下错误

Buildfile: D:\devops\repository\komponente_server\RechercheEAR\build.xml
  [clover-env] Loading clover.xml: jar:file:/D:/devops/repository/komponente_server/Shared/testlib/clover.jar!/clover.xml

angularBuild:
  [clover-env] Loading clover.xml: jar:file:/D:/devops/repository/komponente_server/Shared/testlib/clover.jar!/clover.xml

mkfolders:
  [clover-env] Loading clover.xml: jar:file:/D:/devops/repository/komponente_server/Shared/testlib/clover.jar!/clover.xml

mkfiles:
  [clover-env] Loading clover.xml: jar:file:/D:/devops/repository/komponente_server/Shared/testlib/clover.jar!/clover.xml

ngBuild:
        [echo] Building Angular Project

BUILD FAILED
D:\devops\repository\komponente_server\RechercheEAR\build.xml:71: The following error occurred while executing this line:
D:\devops\repository\komponente_server\RechercheEAR\build.xml:60: Execute failed: java.io.IOException: Cannot run program "D:\devops\repository\komponente_server\Recherche\WebContent\angularweb\node_modules\@angular\cli\bin\ng.cmd" (in directory "D:\devops\repository\komponente_server"): CreateProcess error=2, The system cannot find the file specified

Total time: 6 seconds
EN

回答 1

Stack Overflow用户

发布于 2019-05-21 05:52:28

Ant的exec任务直接在Windows中启动文件有问题。尝试仅将executable属性设置为cmd本身,并将文件作为参数传递。官方文档页面详细介绍了为什么会出现这种情况:https://ant.apache.org/manual/Tasks/exec.html

此外,通过目标依赖关系构建构建结构通常是一个好主意,而不是使用antcall任务的顺序列表。

<property name="project.angularWebPath" location="${project.webContentPathh}/angularweb" />

<target name="mkfolders">
    <mkdir dir="${project.webContentPath}/js" />
    <mkdir dir="${project.webContentPath}/css" />
    <mkdir dir="${project.webContentPath}/img" />
    <mkdir dir="${project.webContentPath}/lib" />
    <mkdir dir="${project.webContentPath}/partials" />
</target>

<target name="mkfiles" depends="mkfolders">
    <touch file="${project.webContentPath}/js/app.js" />
    <touch file="${project.webContentPath}/js/controller.js" />
    <touch file="${project.webContentPath}/js/directives.js" />
    <touch file="${project.webContentPath}/js/filters.js" />
    <touch file="${project.webContentPath}/js/services.js" />
    <touch file="${project.webContentPath}/index.html" />
</target>

<target name="ngBuild" depends="mkfiles,mkfolders">
    <echo message="Building Angular Project" />
    <exec executable="cmd" failonerror="true">
        <arg value="/C" />
        <arg value="${project.angularWebPath}/node_modules/@angular/cli/bin/ng.cmd" />
        <arg value="build" />
        <arg value="--prod" />
        <arg value="--bh" />
    </exec>
    <echo message="Built Angular Project" />
</target>

<target name="angularBuild" depends="mkfiles,mkfolders,ngBuild" />
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56218058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档