国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SpringBoot+vue2聯(lián)合打包部署,混合打包部署

這篇具有很好參考價(jià)值的文章主要介紹了SpringBoot+vue2聯(lián)合打包部署,混合打包部署。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

SpringBoot+vue2聯(lián)合部署,混合部署

前端工程和后端工程目前是都是相對(duì)獨(dú)立性的模式進(jìn)行開發(fā)的。

打包機(jī) 只擁有maven,沒(méi)有nodejs

軟件工程場(chǎng)景:

  • 前后端工程在同一個(gè)父工程下面,作為一個(gè)子工程存在,各自獨(dú)立開發(fā)。
  • 前端工程作為一個(gè)獨(dú)立的目錄存在于后端代碼中,前端目錄的根目錄(例如front)與后端工程的src目錄同級(jí)。–本文的例子采用的是這種模式。

打包發(fā)布場(chǎng)景:

  • 不將前端單獨(dú)打包發(fā)布至nginx服務(wù)器中。
  • 服務(wù)器只能部署一個(gè)war包。–本文的例子采用的是這種模式。

當(dāng)滿足上述場(chǎng)景的時(shí)候,可以采用以下打包部署方案

SpringBoot+vue2聯(lián)合打包部署,混合打包部署,工具使用,spring boot,vue,node.js

  1. 優(yōu)先將前端構(gòu)建打包,將前端構(gòu)建出的內(nèi)容,copy至后端SpringBoot工程的webapp目錄下。
  2. 在通過(guò)maven打包后端,這樣就可以將前端資源打保進(jìn)war中了。

實(shí)現(xiàn)

主要是在前端處理。

在前端工程中增加腳本,腳本調(diào)用入口在package.json文件中。通過(guò)node調(diào)用文件copy的腳本。

{
  ...
  ...
  "scripts": {
    "build-copy": "vue-cli-service build && node src/utils/fileCopy.js"
  },
  ...
  ...
}

fileCopy.js

先刪除目標(biāo)路徑(后端工程中的前端文件的路徑)下的內(nèi)容,在將新生成的前端文件copy過(guò)去。

const fileUtil = require('./fileUtil')

// 目標(biāo)文件夾
const staticDirectory = '../src/main/webapp/'
// 刪除
fileUtil.deleteFolder(staticDirectory + "static")
fileUtil.deleteFile(staticDirectory + "index.html")
// 拷貝
fileUtil.copyFolder('./server/dist', staticDirectory)
console.log('文件拷貝成功!')

fileUtil.js

借助fs模塊進(jìn)行文件操作。

const fs = require('fs')

/**
 * 刪除該路徑下所有的內(nèi)容
 * @param path
 */
function deleteFolder(path) {
  let files = []
  if (fs.existsSync(path)) {
    if (fs.statSync(path).isDirectory()) {
      files = fs.readdirSync(path)
      files.forEach((file) => {
        const curPath = path + '/' + file
        if (fs.statSync(curPath).isDirectory()) {
          deleteFolder(curPath)
        } else {
          fs.unlinkSync(curPath)
        }
      })
      fs.rmdirSync(path)
    } else {
      fs.unlinkSync(path)
    }
  }
}

/**
 * 刪除文件
 * @param path
 */
function deleteFile(path) {
  if (fs.existsSync(path)) {
    if (fs.statSync(path).isDirectory()) {
      deleteFolder(path)
    } else {
      fs.unlinkSync(path)
    }
  }
}

/**
 * 復(fù)制路徑下的內(nèi)容到指定目錄
 * @param from
 * @param to
 */
function copyFolder(from, to) {
  let files = []
  // 文件是否存在 如果不存在則創(chuàng)建
  if (fs.existsSync(to)) {
    files = fs.readdirSync(from)
    files.forEach((file) => {
      const targetPath = from + '/' + file
      const toPath = to + '/' + file

      // 復(fù)制文件夾
      if (fs.statSync(targetPath).isDirectory()) {
        copyFolder(targetPath, toPath)
      } else {
        // 拷貝文件
        fs.copyFileSync(targetPath, toPath)
      }
    })
  } else {
    fs.mkdirSync(to)
    copyFolder(from, to)
  }
}

module.exports = {
  deleteFolder,
  deleteFile,
  copyFolder
}

問(wèn)題:

  1. 在管理代碼上需要進(jìn)行手動(dòng)執(zhí)行前端打包,容易忘記。
  2. 對(duì)本地開發(fā)環(huán)境需要同時(shí)支持特定版本的nodejs和npm。

打包機(jī)同時(shí)擁有maven和nodejs。

如果打包機(jī)同時(shí)擁有maven和nodejs??梢越柚鷐aven插件frontend-maven-plugin進(jìn)行一步打包。

<groupId>com.github.eirslett</groupId>
<artifactId>frontend-maven-plugin</artifactId>

若需要使用這個(gè)插件,需要將軟件工程,調(diào)整為,后端工程和前端工程平級(jí),同屬于一個(gè)父工程的子工程下面。在父工程的pom文件中,定義模塊時(shí),需要將前端模塊順序放在后端之前,這樣做,主要是為了解決前后端的打包順序問(wèn)題。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  ...
  ...
  ...
    <modules>
        <module>frontend</module>
        <module>server</module>
    </modules>
</project>

前端工程中需要增加一個(gè)pom文件。配置腳本

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>com.github.eirslett</groupId>
        <artifactId>frontend-maven-plugin</artifactId>
        <version>1.8.0</version>
        <executions>
          <!-- 檢查是否安裝node npm -->
          <execution>
            <id>install node and npm</id>
            <goals>
              <goal>install-node-and-npm</goal>
            </goals>
            <phase>generate-resources</phase>
          </execution>
          <!-- 執(zhí)行腳本,刪除node_modules和package-lock.json -->
          <execution>
            <id>npm run clean</id>
            <goals>
              <goal>npm</goal>
            </goals>
            <phase>generate-resources</phase>
            <configuration>
              <arguments>run clean</arguments>
            </configuration>
          </execution>
          <!-- npm install -->
          <execution>
            <id>npm install</id>
            <goals>
              <goal>npm</goal>
            </goals>
            <phase>generate-resources</phase>
            <configuration>
              <arguments>install --registry=https://registry.npm.taobao.org</arguments>
            </configuration>
          </execution>
          <!-- build 之后復(fù)制文件到 src/main/resource/static 下 -->
          <execution>
            <id>npm run build</id>
            <goals>
              <goal>npm</goal>
            </goals>
            <phase>generate-resources</phase>
            <configuration>
              <arguments>run build-copy</arguments>
            </configuration>
          </execution>
        </executions>
        <configuration>
          <nodeVersion>v10.24.1</nodeVersion>
          <npmVersion>6.14.12</npmVersion>
          <!-- node安裝路徑 -->
          <installDirectory>${settings.localRepository}</installDirectory>
          <!-- 前端代碼路徑 -->
          <workingDirectory>${basedir}</workingDirectory>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

通過(guò)調(diào)用父工程的mvn clean install即可。

問(wèn)題:

  1. 首次安裝 nodejs和npm會(huì)很慢。

  2. 打包機(jī)需要可以訪問(wèn)淘寶鏡像?;蛘叽罱ū镜冂R像,將對(duì)應(yīng)的node和npm安裝包放進(jìn)去才可以。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-829724.html

到了這里,關(guān)于SpringBoot+vue2聯(lián)合打包部署,混合打包部署的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 詳解如何使用Jenkins一鍵打包部署SpringBoot項(xiàng)目

    詳解如何使用Jenkins一鍵打包部署SpringBoot項(xiàng)目

    目錄 1、Jenkins簡(jiǎn)介 2、Jenkins的安裝及配置 2.1、Docker環(huán)境下的安裝?編輯 2.2、Jenkins的配置 3、打包部署SpringBoot應(yīng)用 3.1、在Jenkins中創(chuàng)建執(zhí)行任務(wù) 3.2、測(cè)試結(jié)果 任何簡(jiǎn)單操作的背后,都有一套相當(dāng)復(fù)雜的機(jī)制。本文將以SpringBoot應(yīng)用的在Docker環(huán)境下的打包部署為例,詳細(xì)講解如

    2024年02月05日
    瀏覽(38)
  • SpringBoot訪問(wèn)靜態(tài)資源和jar外部靜態(tài)資源,部署前端打包后的vue項(xiàng)目放入靜態(tài)資源里

    SpringBoot訪問(wèn)靜態(tài)資源和jar外部靜態(tài)資源,部署前端打包后的vue項(xiàng)目放入靜態(tài)資源里

    記錄一下使用SpringBoot訪問(wèn)靜態(tài)資源和SpringBoot打包之后的jar外部靜態(tài)資源,在開發(fā)的時(shí)候,一般選擇前后端分離的方式,前端使用vue 后端使用SpringBoot,通常情況下,部署都是前端通過(guò)http去請(qǐng)求后端資源,涉及到http請(qǐng)求,那么肯定需要資源的目標(biāo)地址IP,一般云端部署給到I

    2024年02月09日
    瀏覽(23)
  • Centos7通過(guò)nginx+tomcat部署Vue+SpringBoot項(xiàng)目(超詳細(xì)步驟,從nginx+tomcat安裝到Vue+SpringBoot打包配置+nginx.conf)

    Centos7通過(guò)nginx+tomcat部署Vue+SpringBoot項(xiàng)目(超詳細(xì)步驟,從nginx+tomcat安裝到Vue+SpringBoot打包配置+nginx.conf)

    目錄 一丶前言 二、安裝nginx 1.準(zhǔn)備nginx 2.服務(wù)器上傳nginx 3.解壓nginx? 4.安裝相關(guān)依賴庫(kù) 5.編譯nginx 6.啟動(dòng)nginx 7.訪問(wèn)nginx? 8.安裝成系統(tǒng)服務(wù) 三、安裝Tomcat 1.安裝JDK(如果安裝并配置環(huán)境變量了可以略過(guò)) 2.準(zhǔn)備Tomcat 3.服務(wù)器上傳tomcat 4.解壓tomcat? 5.啟動(dòng)tomcat 6.訪問(wèn)tomcat 7.設(shè)置

    2024年02月05日
    瀏覽(26)
  • vue2項(xiàng)目打包壓縮處理

    vue2項(xiàng)目打包壓縮處理

    平常項(xiàng)目打包后,js等文件會(huì)體積大,這樣用戶訪問(wèn)會(huì)慢 webpack優(yōu)化 – compression-webpack-plugin 開啟gzip 1、安裝compression-webpack-plugin 這里我項(xiàng)目webpack版本是3.6.0,所以得安裝低版本得compression-webpack-plugin,webpack版本高于這個(gè)得安裝其他版本,不然會(huì)報(bào)錯(cuò) 2、修改配置 1、在config/i

    2024年01月18日
    瀏覽(26)
  • Vue2使用element-ui引入自定義主題的方法(使用在線主題生成工具)

    Vue2使用element-ui引入自定義主題的方法(使用在線主題生成工具)

    第一步 :按照官方文檔使用npm安裝element-ui,并完整引入Element-ui npm i element-ui -S ?main.js中所有的內(nèi)容刪去,改為 隨便寫點(diǎn)東西,run一下 成功引入element-ui,但是不喜歡默認(rèn)的藍(lán)色,看起來(lái)很爛大街,想換掉。 第二步 :由于不喜歡默認(rèn)的藍(lán)色主題,可以使用在線主題生成工具

    2024年02月14日
    瀏覽(27)
  • vue2前端使用axios發(fā)起post請(qǐng)求,后端(springboot)拿不到值解決辦法

    vue2前端使用axios發(fā)起post請(qǐng)求,后端(springboot)拿不到值解決辦法

    axios封裝-我常用的請(qǐng)求頭參數(shù)? application/json; charset=utf-8 頁(yè)面登錄請(qǐng)求-post 網(wǎng)絡(luò)請(qǐng)求正常傳入?yún)?shù) 后端代碼,查看控制臺(tái)發(fā)現(xiàn)都為null,沒(méi)取到值。 1.嘗試將前端post請(qǐng)求改成get,其他都不用變 發(fā)現(xiàn)正常取到值,打印輸出正常。前端頁(yè)面正常跳轉(zhuǎn)。 2.后端設(shè)置為post請(qǐng)求,前端a

    2024年02月02日
    瀏覽(22)
  • vue2項(xiàng)目打包遇到的問(wèn)題(記錄)

    臨時(shí)純手工搭建開發(fā)了個(gè)vue2小項(xiàng)目,打包后出現(xiàn)了很多問(wèn)題 一、打包后index.html打開空白 打包后整個(gè)頁(yè)面空白,是因?yàn)榇虬筚Y源路徑不對(duì),需要修改config-index.js下, build 屬性中assetsPublicPath值為 ./ 二、打包后圖片等靜態(tài)資源無(wú)法顯示 需要修改build下utils.js文件,新增一句話

    2024年02月16日
    瀏覽(26)
  • Springboot+Flask+Neo4j+Vue2+Vuex+Uniapp+Mybatis+Echarts+Swagger+JWT+Nginx+VueRouter綜合項(xiàng)目學(xué)習(xí)筆記【包括項(xiàng)目部署】

    Springboot+Flask+Neo4j+Vue2+Vuex+Uniapp+Mybatis+Echarts+Swagger+JWT+Nginx+VueRouter綜合項(xiàng)目學(xué)習(xí)筆記【包括項(xiàng)目部署】

    項(xiàng)目訪問(wèn)入口 Neo4j高性能圖數(shù)據(jù)庫(kù)從入門到實(shí)戰(zhàn) 教程博客:Neo4j 開啟命令 醫(yī)學(xué)知識(shí)圖譜問(wèn)答系統(tǒng) neo4j知識(shí)圖譜 Vue+flask 中藥中醫(yī)方劑大數(shù)據(jù)可視化系統(tǒng) ECharts數(shù)據(jù)可視化項(xiàng)目、 D3js: 數(shù)據(jù)可視化入門D3.js 展示地址:數(shù)據(jù)可視化 子絕父相 立即執(zhí)行函數(shù)(function(){})(); ECharts官網(wǎng):

    2024年02月03日
    瀏覽(18)
  • 使用springboot框架Java+vue2開發(fā)的智慧班牌系統(tǒng)源碼,SaaS云平臺(tái)前后端分離架構(gòu)

    使用springboot框架Java+vue2開發(fā)的智慧班牌系統(tǒng)源碼,SaaS云平臺(tái)前后端分離架構(gòu)

    智慧班牌系統(tǒng)可實(shí)現(xiàn)數(shù)字化辦公,對(duì)外向?qū)W生家長(zhǎng)提供各種服務(wù),如:消息通知、請(qǐng)假管理,校園活動(dòng),學(xué)生動(dòng)態(tài),教師通訊錄,學(xué)生定位等各種服務(wù)。對(duì)內(nèi)向教師提供各類服務(wù),如:班級(jí)管理,考勤管理,請(qǐng)假管理,活動(dòng)管理,課堂點(diǎn)名,家長(zhǎng)會(huì)管理,教師課程等等各種服

    2024年02月12日
    瀏覽(26)
  • 【Vue3實(shí)踐】(六)Vue3使用vite處理環(huán)境變量、打包部署、nginx配置

    【Vue3實(shí)踐】(六)Vue3使用vite處理環(huán)境變量、打包部署、nginx配置

    由于在日常開發(fā)中會(huì)有一部分前端的開發(fā)任務(wù),會(huì)涉及到Vue的項(xiàng)目的搭建、迭代、構(gòu)建發(fā)布等操作,所以想系統(tǒng)的學(xué)習(xí)一下Vue相關(guān)的知識(shí)點(diǎn),本專題會(huì)依照Vue的搭建、開發(fā)基礎(chǔ)實(shí)踐、進(jìn)階用法、打包部署的順序進(jìn)行記錄。 歷史文章鏈接如下: 《Vue3搭建、路由配置與基本語(yǔ)法

    2023年04月08日
    瀏覽(646)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包