spring bootRun and Angular buildWatch using Gradle



我想在 Spring 引导多模块应用程序中使用 angular 4 作为客户端框架。 我的应用程序包含 3 个模块

  1. 域模块
  2. 服务模块
  3. Web 模块(弹簧启动模块(

Angular 4 根目录位于 Web 模块中。

我可以使用"ng build"命令启动bootRun来执行应用程序(该命令编译角度打字稿文件并在springBoot静态资源目录中复制结果文件( 这项工作是你的(顺便说一下,感谢Umesh Morsu的优秀教程 https://www.youtube.com/watch?v=nHRA7cbL0vk(。

下面我用来执行此操作的 gradle 脚本:

task buildClientDev(type: NpmTask, dependsOn: 'npmInstall') {
group = 'build'
description = 'Compile client side folder for development'
args = ['run','buildDev']
}

task buildClientWatch(type: NpmTask, dependsOn: 'npmInstall'){
group = 'application'
description = "Build and watches the client side assets for rebuilding"
args = ['run','buildWatch']
}
bootRun{
doFirst {
tasks.buildClientDev.execute()
}
}

这样做的问题是,当我修改 TypeScript 文件(以生成 js 文件(时,我必须重新运行 bootRun。我希望这一代人是自动完成的。所以我想称tasks.buildClientWatch.execute()执行"ng build watch=true"。但是当我这样做时,弹簧启动应用程序无法启动。 当我使用doLast而不是doFirst时,我的 Springboot 应用程序启动良好,但 doLast 中的 gradle 调用既没有执行。

那么如何同时运行 springBoot bootRun 命令和ng build watch=true呢?

在使用 angular 开发应用程序 3 年后,我认为在这种情况下最好的办法是将前端与后端完全分开。

所以我可以为我的角度前端应用程序创建一个 npm 或 gradle 项目。 对于后端,我可以根据需要创建微服务和模块。 我认为这是当今最好的模式。

我建议直接使用 npm 而不使用 Gradle(因为我这样做没有任何问题(。大多数 IDE 也以组合构建/启动组的方式支持此功能。

最新更新