当前位置: 首页 > news >正文

使用Gradle编译前端的项目

使用Gradle编译前端的项目

  • 前言
    • 项目结构
    • 根项目(parent-project)的 settings.gradle.kts
    • 后端项目(backend)的 build.gradle.kts
    • 前端项目(frontend)的 build.gradle.kts
    • 打包bootJar

前言

最近的项目都是使用Gradle来开发和编译的。 由于个人项目前后端都有用到,我想放在一个项目中,于是有了这篇文章。
我前端使用的Vue,后端使用kotlin , 框架使用的SpringBoot。

项目结构

项目分两个子项目, 前端和后端。 项目结构大概如下:

parent-project
├── backend (Spring Boot 后端项目根目录)
│   ├── build.gradle.kts
│   ├── src
│   │   └── main
│   │       ├── java (Java 源代码目录)
│   │       └── resources (资源文件目录,包含配置文件等)
│   └── settings.gradle.kts
└── frontend (前端项目根目录,这里假设是 Vue 项目)├── build.gradle.kts└── src├── assets├── components└── main.js

根项目(parent-project)的 settings.gradle.kts

这个文件用于声明多项目构建中的子项目,内容如下:

rootProject.name = "parent-project"
include("backend", "frontend")

上述代码定义了根项目的名称为 parent-project,并将 backend 和 frontend 作为子项目包含进来。

后端项目(backend)的 build.gradle.kts

正常的进行kts的脚本配置,但是需要新增配置两个Task, 来处理前端的逻辑,

val copyVueDist by tasks.registering(Copy::class) {dependsOn(":web:buildVue") // 同时依赖Vue模块的buildVue任务,确保先打包Vuefrom("../web/dist")        // 源目录,即Vue项目打包后的dist目录,注意相对路径into("build/resources/main/static")     //bootJar包的静态资源目录,会把前端的打包内容复制过来
}tasks.getByName("processResources") {    //bootJar打包过程中处理静态资源的task,  dependsOn(copyVueDist)              //需要依赖上面的复制task
}

前端项目(frontend)的 build.gradle.kts

前端项目的kts配置

import com.github.gradle.node.npm.task.NpmTaskgroup = "com.github.blanexie.magic.web"
version = "0.0.1"plugins {id("com.github.node-gradle.node") version "7.0.2"    //使用这个插件可以进行npm的调用
}val buildTask = tasks.register<NpmTask>("buildVue") {  //定义一个buildVue的任务,用来打包前端项目args.set(listOf("run", "build-only" ))          //前端的打包命令dependsOn(tasks.npmInstall)                     //需要先执行依赖安装命令
}

打包bootJar

只要执行backend项目的build 或者bootJar任务即可, 他会按照顺序先执行前端的编译打包命令, 然后复制到最终的jar包中。

http://www.lryc.cn/news/492750.html

相关文章:

  • 网络爬虫——常见问题与调试技巧
  • 【AI绘画】Midjourney进阶:色调详解(下)
  • springboot+redis+lua实现分布式锁
  • 【Petri网导论学习笔记】Petri网导论入门学习(十一) —— 3.3 变迁发生序列与Petri网语言
  • docker-compose文件的简介及使用
  • [护网杯 2018]easy_tornado
  • 基于STM32的智能风扇控制系统
  • 决策树——基于乳腺癌数据集与cpu数据集实现
  • 探索空间自相关:揭示地理数据中的隐藏模式
  • echarts使用示例
  • Flink高可用配置(HA)
  • 如何编写出色的技术文档
  • 学习日记_20241126_聚类方法(谱聚类Spectral Clustering)
  • 图书系统小案例
  • 目标检测之学习路线(本科版)
  • C#调用C++ DLL方法之C++/CLI(托管C++)
  • 免费搭建一个属于自己的个性化博客(Hexo+Fluid+Github)
  • vue3 开发利器——unplugin-auto-import
  • 开发需求总结19-vue 根据后端返回一年的数据,过滤出符合条件数据
  • 人工智能如何改变创新和创造力?
  • Github 基本使用学习笔记
  • 群论入门笔记
  • 2024最新python使用yt-dlp
  • Python + 深度学习从 0 到 1(00 / 99)
  • 单点登录深入详解之设计方案总结
  • Loadsh源码分析-forEach,eachRight,map,flatMap,flatMapDeep,flatMapDepth
  • 检测到“runtimelibrary”的不匹配项: 值“mtd_staticdebug”不匹配值“mdd_dynamic”
  • go clean -modcache命令清理缓存
  • C#结构体排序(数组)
  • 基于边缘智能网关的机房安全监测应用