栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Maven - 一篇带你理解 AnnotationProcessorPaths 使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Maven - 一篇带你理解 AnnotationProcessorPaths 使用

业务场景

一个类通过一个注解实现预编译(通过 javax.annotation.processing.Processor)比如:Lombok,MapStruct…DDDD~

问题描述

以前在本项目中(meta-INF.services.javax.annotation.processing.Processor)中,因为不能 mvn install 同时编译然后讲加了注解的源文件再经过 Processor 编译,所以每次都只能手动对该源文件进行编译。

但是我讲整个项目打成 jar 引到一个 A 项目(无父子模块)中的时,直接可以 mvn install 下来,并且里面也会同时对那个源文件进行 Processor 编译,成功!

A 项目 pom 文件


    
        
            org.apache.maven.plugins
            maven-compiler-plugin
            3.8.1
        
    

现在我将这个 jar 引入到一个 B 项目(属于父子模块并且在子模块中)时,再 mvn install 的时候发现并编译出来的文件并没经过 Processor 编译,失败了唉~

问题分析

于是对上述 A、B 项目进行 Pom 分析,因为其他基本都一样引包方式也都是本地引入,一开始还怀疑是不是父子项目模块 ${basedir} 的问题,因为该 jar pom 里面有这个配置

jar pom 文件


    org.apache.maven.plugins
    maven-resources-plugin
    2.6
    
        
            process-meta
            
            prepare-package
            
                copy-resources
            
            
                target/classes
                
                    
                        ${basedir}/src/main/resources/
                        
                            **/*
                        
                    
                
            
        
    

此时,就把 A 项目改造成或者说模拟成 B 项目的情景,但是发现仍然是好的,所以先排除这个 ${basedir} 引起的问题。

后来再仔细对比后发现有个配置叫(我们的主角来了) 存在于 B 项目的父模块中

B 项目 pom 文件


    org.apache.maven.plugins
    maven-compiler-plugin
    3.8.1
    
        8
        8
        UTF-8
        
            
                org.mapstruct
                mapstruct-processor
                ${org.mapstruct.version}
            
            
                org.projectlombok
                lombok
                1.18.12
            
        
    

有没发现 和之前上面提到的 Processor 很像,而且 mapstruct 和 lombok 都参与了,那么我们的 jar 是不是也应该插一jio~

解决方案

1、去除  限制


    org.apache.maven.plugins
    maven-compiler-plugin
    3.8.1
    
        8
        8
        UTF-8
    

2、添加  配置


    org.apache.maven.plugins
    maven-compiler-plugin
    3.8.1
    
        8
        8
        UTF-8
        
            
                org.mapstruct
                mapstruct-processor
                ${org.mapstruct.version}
            
            
                org.projectlombok
                lombok
                1.18.12
            
            
            
                com.chinadaas.platform
                dflow
                0.1-SNAPSHOT
            
        
    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/696462.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号