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,我们可查看所有类用法说明。
与君共勉:最实用的自律是攒钱,最养眼的自律是健身,最健康的自律是早睡,最改变气质的自律是看书,最好的自律是经济独立 。
您的一个点赞,一句留言,一次打赏,就是博主创作的动力源泉!
↓↓↓↓↓↓写的不错,对你有帮助?赏博主一口饭吧↓↓↓↓↓↓
本文来自博客园,作者:Marydon,转载请注明原文链接:https://www.cnblogs.com/Marydon20170307/p/15883793.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?