0

我有一个使用 Spring Boot 和 Angular 1、Maven 和 Wro4j 的小型 Web 应用程序,我想尝试 Angular 2,我是全新的。

我在编译时使用 Maven/Wro4j 1.8.0 进行缩小,并为角度依赖获取单个 js 文件,然后在我的 index.html 标头中使用该文件。虽然它适用于我的 angular 1 应用程序,但现在缩小失败。我jsMin用作处理器。处理时失败webjar:angular__compiler/2.1.1/bundles/compiler.umd.js

在 wro4j 文档中挖掘,我找到了ngAnnotate处理器,这可能是我的问题的解决方案。但我还有两个问题:

  • 我将 ng-annotate 1.2.1 添加到我的 pom.xml(wro4j 依赖项)中,但由于对 acorn 的传递依赖不满足而失败(ng-annotate 1.2.1 pom 依赖于 acorn [2.6.4,2.7),并且有Maven 中心没有这样的版本)。为了规避这个问题,我编辑了 ng-annotate pom 以使用 acorn 2.7.0,这可能不是最好的解决方案。
  • 在获得我的依赖并添加ngAnnotate到处理器列表(之前jsMin)之后,我收到以下错误消息:

此环境不支持处理器

似乎它试图运行 ng-annotate 并没有找到它。Wro4j 文档指出“实现假定已安装所需的 npm”。我认为(错误地,似乎)将 ng-annotate webjar 添加到 pom 就足够了。我错过了什么?

注意:我真的很想继续让 Maven 处理以前工作的所有配置(Java 和 Js),而不是切换到 js 依赖解决方案。我从来没有使用过任何 npm 命令,也没有使用过 grunt,也没有使用过 bower,而且到目前为止我也从来不需要它。

4

1 回答 1

1

wro4j 使用 ng-annotate 的方式,它只是执行ng-annotate项目文件夹中的命令。

因此,可能是由于您的 PATH 变量配置不正确,并且无论您是通过 webjar 还是 npm 安装,都没有引用包含 ng-annotate 的文件夹。

例如,如果您使用 Eclipse 配置,您可以在“环境”选项卡中重新设置 PATH 变量。

找出正确的路径:对于 webjar,搜索 ng-annotate npm 可执行文件的提取位置。对于 NPM,打开终端,查看 ng-annotate 是否有效(必须使用 全局安装npm install -g ng-annotate),然后显示 env variable:echo $PATH 或可执行文件的路径:which ng-annotate

我遇到了同样的错误,在我的情况下,Maven 没有/usr/local/bin在 PATH 中引用。

于 2017-01-14T06:06:10.403 回答