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所写)
相关推荐
本案例中 使用maven 搭建spring boot 基本案例 其中实现了 用户登录功能,实现Filter 和 拦截器两种方式 来过滤session登录,后续会使用token方式,请大家关注
《JavaEE开发的颠覆者: Spring Boot实战》从Spring 基础、Spring MVC 基础讲起,从而无难度地引入Spring Boot 的学习。涵盖使用Spring Boot 进行Java EE 开发的绝大数应用场景,包含:Web 开发、数据访问、安全控制...
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. ...
《JavaEE开发的颠覆者: Spring Boot实战》从Spring 基础、Spring MVC 基础讲起,从而无难度地引入Spring Boot 的学习。涵盖使用Spring Boot 进行Java EE 开发的绝大数应用场景,包含:Web 开发、数据访问、安全控制...
《JavaEE开发的颠覆者: Spring Boot实战》从Spring 基础、Spring MVC 基础讲起,从而无难度地引入Spring Boot 的学习。涵盖使用Spring Boot 进行Java EE 开发的绝大数应用场景,包含:Web 开发、数据访问、安全控制...
您需要做的就是在Spring Boot Maven项目中添加依赖项: < groupId>com.github.shihyuho</ groupId> < artifactId>jackson-dynamic-filter-spring-boot-starter < version>1.0.1 </ dependen
java后台权限管理系统源码(spring boot+mvc+mybatis)。 项目是maven,相应的jar包也在压缩包里。项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器)...
使用Spring Boot Maven插件 ii. 13.2. Gradle iii. 13.3. Ant iv. 13.4. Starter POMs ii. 14. 组织你的代码 i. 14.1. 使用"default"包 ii. 14.2. 定位main应用类 iii. 15. 配置类 目錄 Spring Boot参考指南 2 i. ...
介绍这个Spring Boot自动配置模块提供了一个安全过滤器,能够解码AWS Cognito JWT idToken 验证JWT令牌签名验证JWT令牌发行者使用JWT令牌中包含的用户名创建主体对象将关联的认知组转换为SimpleGrantedAuthorities ...
默认情况下,Spring Boot不会扫描默认软件包之外的所有组件。 因此,我们需要将其指定为打击 如果您使用默认注释@SpringBootApplication->,只需在scanBasePackages属性上附加“ me.vcoder”。 当运行Spring Boot...
带有Spring Boot和Angular JS的REST HTTPS API。 技术栈: Maven; FindBugs; Travis CI; Tomcat嵌入式; Sprint Boot; JUnit; Mockito; Logback(作为SLF4J外观); Spring网 Spring Data JPA; ...
对于Spring Boot: 要求Java 8 支持的Spring IO平台: 下载要使用Maven添加依赖项,请使用以下命令: < dependency>< groupId>com.github.shihyuho</ groupId>< artifactId>jackson-dynamic-filter</ artifactId>...
1 .... .../QS_001/src/main/java/com/csfsoft/filter/UrlFilter.java 路径拦截器 /QS_001/src/main/java/com/csfsoft/filter/ConfigFilter.java 配置拦截器 ...通过Maven update project 更新jar包
Maven项目:Spring Boot之Redis之布隆过滤器(BloomFilter)示例代码
org.springframework.boot     spring-boot-starter-data-mongodb     spring-boot-starter-data-redis     spring-boot-starter-mail...
org.springframework.boot     spring-boot-starter-data-mongodb     spring-boot-starter-data-redis     spring-boot-starter-mail...
ZEN-SCAFFOLD - 一个基于Spring Boot的微服务脚手架 ## 特性 - 使用SpringBoot系列框架 - Maven构建,微服务各自独立,使用聚合而非继承 - Git版本控制,遵循集团开发流程 - 使用Spring MVC提供REST服务 - 持久层...
项目也整合了redis做缓存,把pom.xml中<artifactId>spring-boot-starter-data-redis和com.xe.demo.common.support.redis包下的注释去掉,即可开启redis支持.不过感觉springboot对redis的支持不太好,没法设置过期时间,...
如下所示基础应用篇,高级应用篇,原理应用篇列表说明:第一个是:示例教程博客教程第二个是:示例教程具体代码Mavne模块(可以单独部署) SpringBoot版本: 2.1.0.RELEASESpringBoot2.x基础应用篇 spring-boot-2.x-...
Java Spring Boot(后端)和React JS(前端)中的项目 后端显示:模型,控制器,路线和睾丸。 Sendo importado como projeto Maven。 没有前端论坛可以使用como样式化的组件,例如axios,sendo assim,insira o ...