spring boot 專案mvn package命令執行時候會檢測資料庫連線
阿新 • • 發佈:2018-12-12
專案結構 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
結果:成功!!!