在Spring Boot开发中,通过Maven构建项目依赖是一件比较舒心的事,可以为我们省去处理冲突等大部分问题,将更多的精力用于业务功能上。近期在项目中,由于项目集成了其他外部系统资源文件,需要根据不同的环境实现加载不同的JS资源文件,处理这个问题首先想到的便是通过判断当前环境实现动态加载JS,但是,在应用打包的时候已经明确了部署环境,对于静态资源的引用也是确定的,为何不在执行打包的过程中指定引用的资源路径?没错,尤其在通过Spring Boot的Maven打包时,可以通过简单的几行代码来实现实现。下面给出一个简单的例子,比如,在html页面我们需要动态的引入一个JS,JS的路径分别为http://www.cnblogs.com/funnyboy0128/test.js和http://www.cnblogs.com/funnyboy0128-test/test.js,假设分别对应到生产环境和开发环境,则处理如下:

1、pom文件如下:

<build>
  <plugins>
    <plugin>

      <groupId>org.springframework.boot</groupId>

      <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
  </plugins>
  
     <!-- mavne打包动态修改替换占位符 -->
  <resources>  
    <resource>
      <directory>src/main/resources</directory>
      <filtering>true</filtering>  
    </resource>
  </resources>
</build>

<profiles>
  <profile>
    <id>dev</id>
    <properties>
      <funnyboy.env>http://www.cnblogs.com/funnyboy0128-test</funnyboy.env>
    </properties>
  </profile>

  <profile>
    <id>pro</id>
    <properties>
      <funnyboy.env>http://www.cnblogs.com/funnyboy0128</funnyboy.env>
    </properties>
  </profile>

</profiles>

2、资源 文件,例如xx.html中引用JS如下:

<script type="text/javascript" src="@funnyboy.env@/test.js"></script>

3、打完包测试一下:

mvn package -Pdev后查看应用包的xx.html,内容如下:<script type="text/javascript" src="http://www.cnblogs.com/funnyboy0128-test/test.js"></script>

mvn package -Ppro后查看应用包的xx.html,内容如下:<script type="text/javascript" src="http://www.cnblogs.com/funnyboy0128/test.js"></script>

经过测试OK。

Spring Boot使用Maven打包替换资源文件占位符的更多相关文章

  1. Spring boot 国际化自动加载资源文件问题

    Spring boot 国际化自动加载资源文件问题 最近在做基于Spring boot配置的项目.中间遇到一个国际化资源加载的问题,正常来说只要在application.properties文件中定义 ...

  2. Spring Boot 使用maven打包成jar

    1.application.properties加入如下配置 server.port= 2.修改pom.xml <?xml version="1.0" encoding=&q ...

  3. spring boot项目maven打包可执行JAR

    在pom.xml中添加如下配置: <!-- 打包可执行jar包 --> <plugin> <groupId>org.springframework.boot< ...

  4. Spring boot项目maven的profile多环境配置不自动替换变量的问题解决

    Spring boot项目maven的profile多环境配置不自动替换变量的问题解决   在网上找了好久,配置都很简单,可是我的程序就是不能自动替换变量,最终单独测试,发现原来是引用spring b ...

  5. Maven学习-处理资源文件

    在前面两篇文章中,我们学习了Maven的基本使用方式和Maven项目的标准目录结构.接下来,我们来看下Maven是如果管理项目中的资源文件的. Java项目的资源文件,主要用于存储系统的配置信息,以及 ...

  6. Spring Boot(十二):spring boot如何测试打包部署

    Spring Boot(十二):spring boot如何测试打包部署 一.开发阶段 1,单元测试 在开发阶段的时候最重要的是单元测试了,springboot对单元测试的支持已经很完善了. (1)在p ...

  7. (转)Maven学习-处理资源文件

    转自:http://www.cnblogs.com/now-fighting/p/4888343.html 在前面两篇文章中,我们学习了Maven的基本使用方式和Maven项目的标准目录结构.接下来, ...

  8. Spring Boot的Maven插件Spring Boot Maven plugin详解

    Spring Boot的Maven插件(Spring Boot Maven plugin)能够以Maven的方式为应用提供Spring Boot的支持,即为Spring Boot应用提供了执行Mave ...

  9. spring boot和maven的约定大于配置体现在哪些方面

    spring boot和maven的约定大于配置体现在哪些方面? 两者都遵从了约定大于配置的路线 约定优于配置体现点: 1.maven的目录文件结构 1)默认有resources文件夹,存放资源配置文 ...

随机推荐

  1. shiro的DelegatingFilterProxy怎么找到ShiroFilterFactoryBean

    首先看到web.xml中的配置 <context-param> <param-name>contextConfigLocation</param-name> < ...

  2. Morris遍历-如何用空间复杂度O(1)来遍历二叉树

    参照和学习: https://www.cnblogs.com/AnnieKim/archive/2013/06/15/morristraversal.html 解决的问题:如何使用空间复杂度O(1), ...

  3. Win10构建Python全栈开发环境With WSL

    目录 Win10构建Python全栈开发环境With WSL 启动WSL 总结 对<Dev on Windows with WSL>的补充 Win10构建Python全栈开发环境With ...

  4. 首发福利!全球第一开源ERP Odoo系统架构部署指南 电子书分享

    引言 Odoo,以前叫OpenERP,是比利时Odoo S.A.公司开发的一个企业应用软件套件,开源套件包括一个企业应用快速开发平台,以及几千个Odoo及第三方开发的企业应用模块.Odoo适用于各种规 ...

  5. 安卓开发笔记(二十):利用夜神模拟器调试运行Android Studio的apk

    一.首先来到夜神模拟器的安装目录下 如下图所示: 再把这整个文件夹添加到我们的windows环境变量里.然后再把android studio 和夜神模拟器都打开,注意必须同时打开而且不能够把夜神模拟器 ...

  6. QT读取xml配置文件

    //获取字符串字段 QString ConfigHelper::GetStringConfigValue(QString str) { if(str == "InitDeviceNo&quo ...

  7. winfrom 改变图片透明度 Alpha

    效果图: 核心代码: /// <summary> /// 方法一 设置图像透明度 /// </summary> /// <param name="srcImag ...

  8. 4.29 初始mysql

  9. Project file is incomplete. Expected imports are missing 错误解决方案

    当你打开一个.net core的项目,Visual Studio 可能无法打开,提示如下错误: D:\workshop\Github\Ocelot\src\Ocelot\Ocelot.csproj : ...

  10. break、continue以及return的区别

    break.continue以及return的区别如下: 1.break break用于完全结束一个循环,跳出循环体,不再执行下面的代码.对于多层循环嵌套,如果break语句出现在嵌套循环中的内循环时 ...