關於 Java 打包工具 jar 的介面形參名稱丟失問題
阿新 • • 發佈:2019-02-02
一、症狀
如圖:
圖中是谷歌二維碼生成工具的某個介面,可以看到方法的形參已經變成不易閱讀的 var XX 了,而且呼叫方法時的提示也只有 varXX。這篇博文就解決這個問題的。
二、實質
這種現象與打包工具無關,java 專案可以被打包成 XXX.jar 和 XXX-sources.jar 舉個例子:
Junit 相關下載傳送門
其實形參的可讀性對機器識別和執行沒有價值,所以從原始碼到可執行程式的過程中,會根據機器執行的需要做一些”優化”,即便這些對人來說帶來了一些麻煩。所以通常情況下 jar 打包出來就是不包含介面等形參資訊的。
那萬一在開發階段我還是想要得到形參資訊怎麼辦呢?這個時候我們就需要引入 XXX-sources.jar 了。這種 jar 裡是包含完整原始碼資訊的,引入它就滿足了我們的需求。
例如 IDEA 裡可以這樣引入。
三、如何打包出帶原始碼資訊的 jar
本文以 Maven 為例
在被打包專案 的 pom.xml 中核心內容
<project> <!--其他專案自定義配置省略-->
<build>
<plugins>
<plugin>
<artifactId>maven-source-plugin</artifactId>
<executions >
<execution>
<id>attch-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions >
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
</project>
餘下的操作和正常Maven 正常打包無任何區別可自行搜尋