maven 打jar包,class文件保留注释(对项目源码进行打包) 20253211编辑

Heaven helps those who help themselves
资深码农+深耕理财=财富自由
欢迎关注

maven 打jar包,class文件保留注释(对项目源码进行打包)

Created by Marydon on 2022-02-11 16:54

1.情景展示

在实际工作过程中,我们通常会封装一些jar包,供内部使用;

我们知道,使用maven默认打包的情况下,是不会生成对应的注释的(也就是.java文件当中的注释将无法保留在class当中),这显然,对于要使用该jar包的开发人员来说是不友好的,如何让这些注释原封不动地保留在编译后的class文件当中呢?

2.具体分析

能不能将java文件编译成class文件时保留注释?

我先说结论:不能!

让我们产生这种错觉的原因是:开发工具的锅,当开发工具检测到有class对应的源码(java文件)时,会自动将注释显示到class当中。

下面具体来看一下:

以eclipse和Map.class为例进行说明

我们可以看到:

此时此刻,我打开的这个Map类,在:D:\oracle-java-1.8-x64\jdk1.8.0_181\jre\lib\rt.jar当中;

我们顺着路径,使用java反编译工具进行打开,会发现:

一个注释都没有!!!

但是,有变相的解决方案,下面会讲。

还有一个问题:能不能让自己的注释也像jdk的官方类那样,在鼠标悬浮到具体类时,出现具体的详细介绍:

也无法实现,只能点击去看具体的源码。

3.解决方案

要想通过开发工具看到对应的class文件的注释,必须有:对应的源码(java文件);

注释,只能在java当中可以有,class文件当中没不存在释。

所以,要想解决可以看注释的问题,需要我们:

在将java类打成jar包的同时,生成对应的源码jar包。

使用maven插件生成java源码.jar。

在此标签体里

<build>
<plugins>
</plugins>
</build>

添加:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>

重新导包,等待idea从maven仓库中下载该插件;

没有问题后,重新打包或者安装到本地仓库。

打包成功后,我们可以通过日志,也可以直接查看maven本地仓库下该jar包目录下,会增加一个:*-sources.jar

用压缩软件,打开这个jar包看一下:

全是java文件(其本质就是将项目源码拷贝一份,并打成jar包)

这样,我在开发工具当中,调用javaUtils-1.0-SNAPSHOT.jar包当中的方法时,当我们想要查看该方法的具体解释时,点进去,开发工具就会自动帮我们打开对应的Java类。

4.扩展

如何根据java类,生成具体的doc说明文档?

通过maven插件实现。

查看代码
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.3.1</version>
<configuration>
<attach>true</attach>
</configuration>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
<!-- 不让像@Param 这种后面没写值的东西 报错。-->
<configuration>
<additionalJOption>-Xdoclint:none</additionalJOption>
</configuration>
</execution>
</executions>
</plugin>

在等待idea从maven仓库中下载完该插件后,如果报错信息如下:

Cannot resolve symbol 'jar' 

菜单栏--》File--》清除idea缓存并重启。

再进来idea,就不会报错啦。

然后,选择:打包或者安装到本地仓库。

我们会发现:本地仓库当中会多出一个*-javadoc.jar。

打开该jar包,这里就是具体的java类对应的用法说明文档。

打开index.html,我们可查看所有类用法说明。

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 相关推荐:

与君共勉:最实用的自律是攒钱,最养眼的自律是健身,最健康的自律是早睡,最改变气质的自律是看书,最好的自律是经济独立 。

您的一个点赞,一句留言,一次打赏,就是博主创作的动力源泉!

↓↓↓↓↓↓写的不错,对你有帮助?赏博主一口饭吧↓↓↓↓↓↓

posted @   Marydon  阅读(3211)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示
sorry,本博客所有代码禁止复制,原创代码需扫码支付方可获取!
关闭

1、先加好友再付费,点我加好友;

2、代码不能满足你的需求?加好友付费定制你的专属代码!

3、付费标准及方式,点我查看详情。