maven 打jar包,class文件保留注释(对项目源码进行打包)
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