这里记录着日志里面记录不了的随记,通常是一些编码过程中的问题及总结,作为个人避免再次踩坑的面板吧。
docker安装mysql 5.7
-
拉取mysql镜像
docker pull mysql:5.7
-
创建mysql数据目录及配置文件
mkdir -p /ext/mysql/data
mkdir -p /ext/mysql/conf
vim /ext/mysql/conf/my.conf
内容如下:
[mysqld] server_id=1 binlog-ignore-db=mysql log-bin=mall-mysql-bin default-time_zone='+8:00' binlog_cache_size=2M binlog_format=mixed expire_logs_days=15 slave_skip_errors=1062 character-set-server=utf8 lower_case_table_names=1 wait_timeout=86400 max_connect_errors=1000 sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
-
运行容器
docker run --name=prod-mysql -d -p 3306:3306 -v /ext/mysql/data:/var/lib/mysql -v /ext/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=pwdstring mysql:5.7
SpringBoot读取pom.xml中的项目版本
- pom.xml中配置资源
<build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**.*</include> <include>**/**.*</include> </includes> <filtering>true</filtering> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.fxml</include> </includes> </resource> </resources> </build>
- 在application.yml中添加配置
project: version: @project.version@
- 在SpringBean中使用
@Value("${project.version}") private String projectVersion;
注意
这里可能会出现@符号识别不了报以下错误:
ound character '@' that cannot start any token. (Do not use @ for indentation)
in 'reader', line 34, column 19:
可以刷新一下MAVEN试试。
Maven Resource配置大坑
这里我说两个问题,这两个问题任何一个配置错误都有可能会引发另外一个问题
-
在Spring Boot或者其他配置文件中需要读取maven的变量时,通常配置为@project.version@,这里的原理是,将该资源复制到target/classes目录下,然后将@@占位符替换为maven变量值,也就是解析,当然这里需要一个配置filtering等于true
-
当我们的其他文件也放在resource目录下,并且需要一并负责到target/classes目录下是,这个filtering一定不要设置为true,因为它会替换掉源文件的内容,导致文件损坏
引用官网的一句话As already mentioned filtering binary files like images,pdf`s etc. could result in corrupted output. To prevent such problems you can configure file extensions which will not being filtered. 如前所述,过滤图像、pdf等二进制文件可能会导致输出损坏。为了防止出现此类问题,您可以配置不会被过滤的文件扩展名。
以下是注意点:
- includes和excludes只使用一个,同时使用2个是没有任何意义的,如果错误地使用了两个,那么过滤的范围取includes减去excludes的范围(includes中有excludes的话)
- includes 过滤这些规则的文件
- excludes 过滤这些规则的文件外的所有文件
- filtering 的意思是启动占位符替换,使得关联pom.xml文件的文件中的占位符使用pom.xml中properties的值,只影响到本目录中过滤出来的文件
只过滤资源的话不需要写,这和资源过滤没有一点关系,无论true或者false都会进行过滤,这个设置一般在pom.xml中配置了properties时使用