我尝试了几种方法来编译我的应用程序(java、Wicket、使用 Zurb Foundation Sites、具有 lib-sass 依赖的 node-sass)。说实话,所有的 maven 插件都是死路一条,尤其是当我的 scss 包含 !global 标志时。(这个标志是有基础的。)所以我们的最终解决方案是先用 npm 构建,然后使用 maven。Npm 构建到 src/main/webapp/"myDir" 目录中。我在 git 中排除了这个目录。jason 文件有如下一行:
"scripts": {
....
"build-css": "node node_modules/node-sass/bin/node-sass --include-path myScssDir myScssDir/myScss.scss --output src/main/webapp/myDir/css",
....
}
然后用 maven 构建,它会将构建的 css 移动到我的战争中。为了获得一些帮助(创建不存在的“myDir”目录),我使用了 mkdirp。在我的杰森中有:
"scripts": {
"create-dirs": "mkdirp src/main/webapp/myDir/",
....
}
所以我运行“npm i”将我所有的依赖项本地安装到节点模块目录中。这是被忽略的。
然后我运行“npm run create-dirs”来创建必要的 myDir。这也被忽略了。
然后我运行“npm run build-css”将我的 css-s 和 js-s 编译到 myDir 中。
最后我做了一个Maven构建。
使用 hudson/jenkins 构建,您可以轻松地在一项工作中完成这些工作。
我能想到的一项改进是在 maven 构建期间通过 ant 运行 npm。当我有一个概念证明时,我会回复你。
//一个额外的提示:如果你是在企业环境和 Windows7 下开发,你可能需要为 npm build 的符号链接添加权限。如果您在 npm 构建中发现错误,值得一试:https ://superuser.com/questions/104845/permission-to-make-symbolic-links-in-windows-7