项目结构 sprignboot + maven + mysql + docker
在给项目打包的时候执行 mvn clean package 时候报错:
com.alibaba.druid.pool.DruidDataSource: create connection error, url: jdbc:mysql://10.77.0.2:3306/cms?characterEncoding=utf8&useSSL=true, errorCode 0, state 08S01
查看报错原因可能是在package的时候去检查了数据库连接,由于数据库地址都是内网IP所以在打包的时候如果去连接肯定是连不上报错的,这时候就要去找的是哪个组件在package的时候去检查这个了
1号怀疑对象 : mybatis逆向工程
在项目代码构建之初用到了逆向工程 这部分用到了数据库连接,于是删掉了关于逆向工程的所有配置
心想这下应该不报错了吧!但是事实是相反的 还是报错!!同样的错误!
2 号怀疑对象 连接池/mybatis
经过查询网上连接池的配置 也没有说在package 的时候有相关的配置
3号 怀疑对象 测试类
和之前的项目对比发现多出的就是我的项目中有测试类 会不会是package的时候走了测试类
@RunWith(SpringRunner.class)
@SpringBootTest
public class EducationCmsApplicationTests {
@Test
public void contextLoads() {
}
@Autowired
private SiteInfoMapper siteInfoMapper;
@Test
public void siteInfotest() {
SiteInfoQuery siteInfo = new SiteInfoQuery();
ArrayList<String> strList = new ArrayList<String>();
strList.add("1");
siteInfo.setOrganizationIdList(strList);
List<SiteInfo> siteInfos = siteInfoMapper.selectBySelective(siteInfo);
for (SiteInfo s: siteInfos) {
System.out.println("ok");
System.out.println(s.getSiteName());
}
}
}
验证方式:删掉所有测试类
结果:执行成功
总结原因:
在package的时候么有跳过maven test部分 造成在执行test的时候走了检查数据库连接
反证明:
加上test部分代码 执行命令 mvn clean package -Dmaven.test.skip=true
结果:成功!!!