1. Spring Boot filtering 不生效
今天在写自己的图床的时候,因为用了docker,每次在更新的时候,本地使用 dockerfile-maven-plugin 插件,打包镜像,然后 push 到 Docker hub 自己的私有仓库。然后自己的 VPS,再拉取最新的 Docker img 启动。
所以,每次在更新了 pom.xml 中的 version 后, 需要手动去更新 docker-compose.yml 文件中镜像的版本号。 为了自动做,就把 docker-compose.yml 放到了 src/main/resources 下,然后使用 mave-resources-plugin 插件 copy 到指定目录。这样在编译,打包镜像的时候,会自动更新 docker-compose.yml 文件。
但是奇怪了,项目使用了 Spring Boot,在 docker-compose.yml 中配置了 ${project.version}
,但是编译过后,查看,文件中的 ${project.version}
并没有被替换。解决版本
1.1. 使用 Spring Boot 的方式 @xxxxx@
filtering 无效的原因是,项目继承了 spring-boot-starter-parent,查看这个 parent 的 pom.xml 文件,发现有一行:
Spring Boot 默认使用 @xxx@ 的方式作为占位符。所以,docker-compose.yml 中配置的 ${project.version}
改成 @project.version@ 即可生效。
1.2. 继续使用 ${xxx}
pom.xml 的 build 标签中添加 maven-resources-plugin 插件,重新定义占位符:
1 | <plugin> |
这样,可以同时使用 ${xxxx}
和 @xxxx@
两种方式