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,我们可查看所有类用法说明。

写在最后

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

 相关推荐:

posted @ 2022-02-11 16:54  Marydon  阅读(3039)  评论(0编辑  收藏  举报