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

    写在最后

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

     相关推荐:

  • 相关阅读:
    将同一个应用程序同时作为 http 和 https
    将数组元素划分为等长的块(二维数组)
    将数组中的空元素转为 undefined
    将某个类型断言为另一个与之毫无关系的类型
    将前端代码放入 Egg 项目中
    将根组件挂载到 DOM 节点上
    将类数组对象转换成数组
    将 ts 代码转成 js 代码
    将代码推迟到系统资源空闲时执行
    React 将 state 传给子组件用
  • 原文地址:https://www.cnblogs.com/Marydon20170307/p/15883793.html
Copyright © 2020-2023  润新知