1. 程式人生 > >關於 Java 打包工具 jar 的介面形參名稱丟失問題

關於 Java 打包工具 jar 的介面形參名稱丟失問題

一、症狀

如圖:
這裡寫圖片描述
圖中是谷歌二維碼生成工具的某個介面,可以看到方法的形參已經變成不易閱讀的 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 正常打包無任何區別可自行搜尋