`
234390216
  • 浏览: 10235171 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
A5ee55b9-a463-3d09-9c78-0c0cf33198cd
Oracle基础
浏览量:462728
Ad26f909-6440-35a9-b4e9-9aea825bd38e
springMVC介绍
浏览量:1775702
Ce363057-ae4d-3ee1-bb46-e7b51a722a4b
Mybatis简介
浏览量:1398496
Bdeb91ad-cf8a-3fe9-942a-3710073b4000
Spring整合JMS
浏览量:395064
5cbbde67-7cd5-313c-95c2-4185389601e7
Ehcache简介
浏览量:680049
Cc1c0708-ccc2-3d20-ba47-d40e04440682
Cas简介
浏览量:530992
51592fc3-854c-34f4-9eff-cb82d993ab3a
Spring Securi...
浏览量:1184354
23e1c30e-ef8c-3702-aa3c-e83277ffca91
Spring基础知识
浏览量:468221
4af1c81c-eb9d-365f-b759-07685a32156e
Spring Aop介绍
浏览量:151443
2f926891-9e7a-3ce2-a074-3acb2aaf2584
JAXB简介
浏览量:68228
社区版块
存档分类
最新评论

Spring Boot(22)——Maven Filter问题

阅读更多

Maven filter问题

我们可以在项目的pom.xml文件中添加如下内容,其会把src/main/resources目录下的所有文件都当做咨询文件,此外通过<filtering>true</filtering>指定了这些资源文件将经过过滤。过滤的时候可以使用pom.xml中定义的properties或project相关信息等。

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

比如在src/main/resources目录下有个文件app.properties,其定义了app.version=${project.version},通过filter编译后app.properties文件中的${project.version}将会替换为pom.xml中project元素下的version元素的文本值。这是Maven的标准功能。但如果你的项目指定了spring-boot-starter-parent为父工程,则在资源文件中使用的${}占位符内容不会被filter替换。通过查看spring-boot-starter-parent的pom.xml文件可以看到其把分隔符指定为属性resource.delimiter的值。

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <configuration>
        <delimiters>
            <delimiter>${resource.delimiter}</delimiter>
        </delimiters>
        <useDefaultDelimiters>false</useDefaultDelimiters>
    </configuration>
</plugin>

查看properties中定义的resource.delimiter可以看到分隔符被定义为@了。

<properties>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <resource.delimiter>@</resource.delimiter>
    <maven.compiler.source>${java.version}</maven.compiler.source>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.target>${java.version}</maven.compiler.target>
</properties>

所以此时如果需要资源文件中的占位符能够正常被替换,需要改写为类似为app.version=@project.version@形式。或者在自己的pom.xml中的properties元素下定义自己的resource.delimiter,但是最好不要使用${},因为Spring自身的占位符也是${},如果有个资源文件中有个属性原本是期望Spring替换的,结果被Maven替换了就不好了。这也是Spring官方把它分开的原因。

通常使用Maven的filter时用来替换占位符的属性值不会直接定义在pom.xml中,而是定义在一个外部的properties文件中,此时可以通过filter元素进行引用。比如下面的配置指定了用来filter的属性值使用src/main/resources/config.properties文件(此时占位符中使用project的相关属性,比如project.version也还是可以的,包括使用properties元素下定义的内部属性、系统属性等也是OK的)。

<build>
    <filters>
        <filter>src/main/resources/config.properties</filter>
    </filters>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>    

Maven的filter一般会跟profile一起使用,基于不同的profile使用不同的属性配置文件来替换占位符,该工作也可以使用Spring的profile实现。

(注:本文基于Spring Boot 2.0.3所写)

0
0
分享到:
评论

相关推荐

    Spring Boot 学习笔记完整教程.pdf

    通过使用Spring Initializr(***)或通过IDE创建Maven项目,添加Spring Boot的Maven依赖,然后创建一个主程序类来启动Spring Boot应用。 2. Spring Boot常用功能: - HelloWorld示例:通过新建Maven Java工程,添加...

    39.1 Spring Boot Shiro权限管理【从零开始学Spring Boot】

    在本教程中,我们将深入探讨如何使用Spring Boot与Apache Shiro进行权限管理。Spring Boot以其简洁的配置和快速的应用开发而闻名,而Shiro则是一个轻量级的安全框架,适用于身份验证、授权、会话管理和安全性相关的...

    spring boot 集成 shiro

    **Spring Boot 集成 Shiro 深度解析** Spring Boot 是一款基于 Spring 的轻量级框架,它简化了 Spring 应用的初始搭建以及开发过程。而 Apache Shiro 是一个强大且易用的 Java 安全框架,提供了认证、授权、加密和...

    spring boot 拦截器拦截/Filter 过滤session案例

    在本文中,我们将深入探讨如何在Spring Boot应用中使用拦截器(Interceptor)和过滤器(Filter)来处理用户的登录session。这两个组件都是Spring框架的重要部分,它们在处理HTTP请求和响应时发挥着关键作用。 首先...

    Java Web项目的完整案例概述和Spring boot部分代码示例.zip

    5. **Spring Boot的起步依赖**:Spring Boot通过"起步依赖"(Starter POMs)简化了依赖管理,如spring-boot-starter-web引入了Spring MVC和Tomcat。 6. **Spring Data JPA**:Spring Data JPA是Spring提供的一个ORM...

    Spring Boot 开源电子书1

    根据提供的文件信息,可以看出这是一本关于Spring Boot的开源电子书的大纲与介绍部分。下面将根据这些信息生成相关的知识点。 ### Spring Boot 开源电子书1 #### 引入web模块 - **Spring Boot Web模块简介**:...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part3

    《JavaEE开发的颠覆者: Spring Boot实战》从Spring 基础、Spring MVC 基础讲起,从而无难度地引入Spring Boot 的学习。涵盖使用Spring Boot 进行Java EE 开发的绝大数应用场景,包含:Web 开发、数据访问、安全控制...

    spring-boot.zip

    4. 过滤器(Filter):在Spring Boot应用中,过滤器用于在请求处理前和处理后进行预处理和后处理。你可以自定义过滤器实现诸如GZIP压缩、日志记录、字符集转换等功能,过滤器按照注册顺序依次执行。 5. 拦截器...

    39.4 Spring Boot Shiro权限管理【从零开始学Spring Boot】

    在本教程中,我们将深入探讨如何使用Spring Boot与Apache Shiro进行权限管理。Spring Boot以其简洁的配置和快速的应用开发能力而备受青睐,而Shiro则是一个轻量级的安全框架,用于实现用户认证、授权和会话管理。...

    Spring Boot与Shiro实现权限管理

    Spring Boot和Apache Shiro是两个常用的技术框架,它们可以协同工作,为应用程序提供强大的身份验证和授权功能。本篇文章将深入探讨如何利用Spring Boot的便捷性和Shiro的安全特性,构建一个完善的权限管理系统。 ...

    简单Spring boot和druid监控demo

    Spring Boot 是一个基于Java的轻量级框架,它极大地简化了Spring应用的初始搭建以及开发过程。Druid,则是阿里巴巴开源的一个强大而全面的数据库连接池组件,它提供了监控、SQL解析、Web管理界面等功能,使得数据库...

    基于Spring Boot框架的影院管理系统.zip

    1. 基于Spring Boot简化了大量项目配置和Maven依赖,让开发者更专注于业务开发。 2. 完善的日志记录体系可记录登录日志、业务操作日志(可记录操作前和操作后的数据)、异常日志到数据库。 3. 利用Beetl模板引擎对...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part1

    《JavaEE开发的颠覆者: Spring Boot实战》从Spring 基础、Spring MVC 基础讲起,从而无难度地引入Spring Boot 的学习。涵盖使用Spring Boot 进行Java EE 开发的绝大数应用场景,包含:Web 开发、数据访问、安全控制...

    spring boot jwt demo

    **Spring Boot JWT Demo详解** Spring Boot JWT(JSON Web Token)Demo是一个基于Spring Boot框架的简单应用,用于演示JWT技术在身份验证和授权中的应用。JWT是一种轻量级的身份验证标准,广泛应用于现代Web应用...

    spring-boot-reference.pdf

    13.2.3. Using the Spring Boot Maven Plugin 13.3. Gradle 13.4. Ant 13.5. Starters 14. Structuring Your Code 14.1. Using the “default” Package 14.2. Locating the Main Application Class 15. ...

    Spring Boot整合Shiro搭建权限管理系统教学提纲.pdf

    在Spring Boot的配置类中,配置ShiroFilter,定义过滤规则: ```java @Configuration public class ShiroConfig { @Autowired private MyRealm myRealm; @Bean public DefaultWebSecurityManager ...

    spring+springMvc+Mybatis+maven

    在实际开发中,可能还需要集成其他组件,如Spring Security进行安全控制,或者使用Spring Boot简化配置。在项目迭代过程中,保持良好的代码组织和模块化设计,有助于提高项目的可维护性和扩展性。

    楠哥Spring Boot整合Shiro.zip

    1. **引入依赖**:在Spring Boot项目中,我们可以通过添加Shiro的Maven或Gradle依赖来引入所需库。例如,在Maven的pom.xml文件中添加如下依赖: ```xml &lt;groupId&gt;org.apache.shiro &lt;artifactId&gt;shiro-spring ...

    spring-boot-04-servlet.rar

    也可以通过`spring-boot-maven-plugin`或`spring-boot-gradle-plugin`构建可执行的war包,部署到外部Tomcat。 这个`spring-boot-04-servlet`项目可能包含了一个示例应用,演示了上述部分或全部知识点,通过查看源...

Global site tag (gtag.js) - Google Analytics