這個星期接到一個新的任務:解決HQ(一個用JAVA開發的開源的運維監控平臺)現在遇到的snmp升級到3.0後bug。公司用的HQ是4.6版本。於是,我把項目從gitlab上clone下來後,就開始了我的填坑之旅。坑了幾天坑,到目前,正常情況,應該只有最後一個坑了,應該是關於tomcat運行環境的。閑 ...
這個星期接到一個新的任務:解決HQ(一個用JAVA開發的開源的運維監控平臺)現在遇到的snmp升級到3.0後bug。公司用的HQ是4.6版本。於是,我把項目從gitlab上clone下來後,就開始了我的填坑之旅。坑了幾天坑,到目前,正常情況,應該只有最後一個坑了,應該是關於tomcat運行環境的。閑話不多說,開始填坑之旅……
項目maven build坑:
- maven版本必須為2.X版本的,3.X版本的maven,是絕對不會build成功的
- 切換到2.2版本的maven後,直接運行mvn clean install也是編譯失敗,各種嘗試後,最終能夠編譯的命令為:
clean compile install -Dmaven.javadoc.skip=true -DCI-build -Dall-installers -Dmaven.test.skip=true -e
解釋一下吧,用maven.javadoc.skip=true是因為項目中的註釋,有太多太多是不符合javadoc規範的,所以如果編譯javadoc的話,會出現一推警告,然後編譯失敗。
- 因為上面不編譯javadoc的緣故,所以在項目agent中,要把對hq-pdk項目的javadoc的依賴給去掉,不然這個項目也會編譯失敗,我把改後的文件對比放上來:
assembly.xml:
pom.xml
- 我也不知道什麼原因,在項目編譯的時候,hq-pdk/src/main/java/org/hyperic/hq/product/validation/PluginXmlValidator.java 這個類總是會報異常,說代碼異常出現在185行,是無法找到apache的log4j的一個類方法,如是我就把它給註釋了,這塊就不報異常了。
- 可能跟我用的是IDEA或者我用的是公司內網的maven庫有關吧,項目hq-rendit的pom文件中的maven-eclipse-plugin插件也會編譯不通過,於是我也把它給註釋了:
- 在hq-server項目的pom文件,我加了一個plugin:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin>
OK,到現在為止,我遇到的maven的build坑基本差不多了。經過上面的改造後,我的hq項目能夠install成功了。不過,install成功後,本地運行hq-web項目時,遇到的坑,深坑,比build過程要艱難的多,在這裡我也記錄一下,與君共勉。
PS:因本人臨時有點事,先發佈上面這些,後面補上運行項目的坑