目录
导入的包中,部分import的包无法找到,也就是model目录下的文件
运行测试用例,在test/java上run all test,运行到一半有报错
exclude无法排除,生成的jar包里依然有需要排除的文件
生产环境需要prod.properties,测试环境需要local.properties和prod.properties。
Spring Boot导入项目
遇到错误:
maven不能导入pom.xml的依赖
原因是因为,setting-->Build,Execution,Deployment-->Build Tools-->Maven的
Maven home path,User setting file和Local repository路径都要设置成本地的正确路径,设置完即可全部导入。
导入的包中,部分import的包无法找到,也就是model目录下的文件
使用maven install,因为之前已经使用了mvn clean install和mvn clean package Dmaven.test.skip=true安装了两个项目到本地,因此直接install(勾选skip test再install),可以生成model目录以及相应的文件。
子项目中import另一个子项目的包,不能找到路径
原因是另一个子项目,并没有被当做一个maven项目,右键这个项目,再maven->reload即可。
运行测试用例,在test/java上run all test,运行到一半有报错
java: Compilation failed: internal java compiler error
解决方法如下
Compilation failed: internal java compiler error_Camel-CSDN博客
主要的原因是因为,当前导入的这个项目很大,堆的大小默认值700MB是不够的,因此把他改为1024,运行通过。
在setting-->Build,Execution,Deployment-->Compiler 中找到build process heap size(Mbytes):700改为1024(视情况而定)
springboot 打包exclude排除部分配置文件
遇到问题:
exclude无法排除,生成的jar包里依然有需要排除的文件
SpringBoot生产环境打包去除无用依赖 - 代码先锋网
SpringBoot项目Maven打包时去掉不需要的资源或文件方法总结 – 那啥快看 (791202.com)
(31条消息) spring boot maven打包时排除资源目录_Loser-CSDN博客_spring-boot-maven-plugin 排除文件
Maven打包的时候排除指定的资源、目录、文件和程序类的方法 - 知乎 (zhihu.com)
这里遇到了一个问题,更改完pom后,package打包仍然没有排除,原因是这里应当先clean,再validate,之后complie,package。因为这是maven的整个生命周期
生产环境需要prod.properties,测试环境需要local.properties和prod.properties。
maven profile多环境自动切换配置,配置分离,排除文件 - 练好本领,报国杀敌 - 博客园
Maven根据不同环境打包不同配置文件_bxp1321的博客-CSDN博客
Maven profile节点配置详解_FantasyWxw的博客-CSDN博客_maven profiles配置
这时需要使用maven的profiles,根据mvn命令行-P的不同参数,指定进如对应的profiles,设置变量值。
比如命令行是
mvn clean package -Ptest -Dmaven.test.skip=true
pom.xml里额外添加
<dependencies>
...
</dependencies>
<profiles>
<profile>
<id>
test
</id>
<properties>
<profile.act1>local</profile.act1>
<profile.act2>prod</profile.act2>
</properties>
</profile>
<profile>
<id>
prod
</id>
<properties>
<profile.act1>prod</profile.act1>
<profile.act2>prod</profile.act2>
</properties>
</profile>
</profiles>
<build>
<resources>
<resource>
<directory>...</directory>
<excludes>
<exclude>local.properties</exclude>
<exclude>prod.properties</exclude>
</excludes>
</resource>
<resource>
<directory>...</directory>
<includes>
<include>${profile.act1}.properties</include>
<include>${profile.act2}.properties</include>
</includes>
</resource>
</resources>
<plugins>
...
</plugins>
</build>
一开始我的目录结构是
resources
--application.properties
--properties
--prod
--application-prod.properties
--properties
--local
--application-local.properties
尽管这样在本地打包的时候通过resource配置仍然可以在打包的时候正确生成选择想要的properties文件,但是静态检查的时候却不能通过。因此更改目录结构
resources
--application.properties
--application-prod.properties
--application-local.properties
然后再exclude标签之中使用变量${profiles.act},使其生效,但是这里有一个疑问,就是我一开始使用这个变量的时候,idea报错说找不到这个变量。
这之后我的思路是,先使用exclude将所有properties排除掉,然后在使用include选择自己需要的文件。但是这个时候在静态检查的地方,不论是使用test的profiles还是prod的profiles,里面都把所有的文件exclude了,而没有include。这里面我猜测的原因是,exclude的优先级高于include,虽说我分开使用了两个resource分别添加,并且在本地打包时是生效的。但是静态检查的时候不知道怎么回事,就直接将这两个resource的内容一起判定了。这里可能是我的理解有误,不论在哪个resource标签下的元素,都会在一起来比较优先级吧,但是如果是这样的话,我的本地也应该出错的。
更改后的如下
<dependencies>
...
</dependencies>
<profiles>
<profile>
<id>
test
</id>
<properties>
<profile.act1></profile.act1>
</properties>
</profile>
<profile>
<id>
prod
</id>
<properties>
<profile.act1>local.properties</profile.act1>
</properties>
</profile>
</profiles>
<build>
<resources>
<resource>
<directory>...</directory>
<excludes>
<exclude>${profile.act1}</exclude>
</excludes>
</resource>
</resources>
<plugins>
...
</plugins>
</build>
遇到的报错:
Cannot resolve classpath entry: D:\src\main.......\${profiles.act1}
原因:profiles.act1的值没加载,没有设置mvn打包时的profiles是什么,也就是-P参数,idea启动可以在maven右侧栏中选择profiles。
生产环境下的包里不能有硬编码公网ip和mac地址
遇到问题:
0.0.0.0是什么意思
严格说来,0.0.0.0已经不是一个真正意义上的IP地址了。
它表示的是这样一个集合:
1、所有不清楚的主机和目的网络。这里的“不清楚”是指在本机的路由表里没有特定条目指明如何到达。
2、对本机来说,它就是一个“收容所”,所有不认识的“三无”人员,一 律送进去。
3、如果在网络设置中设置了缺省网关,那么Windows系统会自动产生一个目的地址为0.0.0.0的缺省路由。
公网和私网
127.0.0.1
127.0.0.1是本地ip,不是公网ip
日志打印ip
遇到问题:
slf4j的配置文件在哪
logback.xml
打印日志中的线程名怎么修改
正则表达式验证Ip地址(绝对正确)_十案圈圈的博客-CSDN博客_正则表达式ip地址
logback logback.xml常用配置详解(二)<appender>_萧乡月夜的博客-CSDN博客
[%replace(%thread){'\s', ''}]
[%replace(%thread){r"^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])\.((1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.){2}(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$" + "-", ''}]
ip:端口
^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\:([0-9]|[1-9]\d{1,3}|[1-5]\d{4}|6[0-5]{2}[0-3][0-5])$