集測的時候出現原來的功能不好使的情況(把我急死了);
手機号換綁(接口c)後,查詢個人資訊(接口i),顯示的資訊還是老的手機号.
後來看日志,發現接口c 和接口i 調用的ip不同,但是兩個接口引用的是同一個常量啊?
我就突然想到了修改常量類之後,接口c 沒有重新編譯的問題.
為了确認這點,我找運維,請他把這兩個接口的service class檔案發給我,我使用jd-gui.exe 反編譯,發現這兩個接口中的ip确實不同.于是我決定找到問題的源頭,我詳細問了運維部署項目的流程.集測部署流程如下:

我就往上追溯到jenkins,于是我就找到負責jenkins 的同僚,讓她把最近一次jenkins部署的相關class檔案發給我,我反編譯,發現ip不對.那麼問題就不在運維,而是在jenkins了.
而且這個同僚把編譯的結果清理之後,重新部署,發給我相同的class,我反編譯之後,發現ip就對了.
是以出問題的環節鎖定在jenkins 了.
于是我讓該同僚檢視jenkins 具體建構代碼,結果發現沒有調用mvn clean
而且我馬上做了一個測試
有兩個類,一個是常量類,一個是測試類
常量類:
package test;
public class constant {
public static final string username="黃威";
}
測試類:
public class huangwei {
private string myname=constant.username;
public static void main(string[] args) {
system.out.println(constant.username);
}
編譯之後,反編譯huangwei.class
結果如下:
接着我修改constant類,把constant中username的值改為"黃威2222222222222222"
儲存之後,執行maven指令:mvn package
maven執行完之後,再次反編譯huangwei.class,仍然是:
根本原因:
因為maven發現huangwei 類沒有修改,是以沒有重新編譯.
但是huangwei 引用的常量修改過了.
解決辦法:添加mvn clean
參考: