maven dependency 和 plugin 的理解

一个具体的例子是我们声明了 mapstruct 的 dependency 就可以正常工作了, 没有声明 mapstruct 的 plugin, 那么 mapstruct 在编译期自动实现接口的功能是怎么触发的呢?

问题2:
maven 声明了 dependency, maven 会做什么?
maven plugin 什么时候需要声明? 声明了 plugin, maven会做什么呢?

谢谢!!!

阅读 3.7k
2 个回答

问题1:maven 声明了 dependency, maven 会做什么?

答案:maven是一个构建工具,帮助我们管理应用的依赖。当添加了一个maven的dependency时,maven只做了一件事情:

把这个dependency对应的jar包添加到当前应用中

这个过程分为以下几步:

  1. 从本地仓库查找是否已经有这个dependency的jar包,如果有,直接添加;否则进行下一步
  2. 去远程仓库查找这个dependency的jar包,并下载到本地仓库
  3. 将下载到本地仓库的jar包添加到当前应用中

问题2:maven plugin 什么时候需要声明? 声明了 plugin, maven会做什么呢?

答案:maven是个插件化的结构,clean、package、install、deploy这些生命周期的操作,都会用到相应的插件,所以你这个问题我只能说,在需要用的时候会用。。
当然,这么说太耍流氓了,举个例子:

<!-- 局部jdk配置,pom.xml中 -->  
    <build>    
        <plugins>    
            <plugin>    
                <groupId>org.apache.maven.plugins</groupId>    
                <artifactId>maven-compiler-plugin</artifactId>    
                <configuration>    
                    <source>1.8</source>    
                    <target>1.8</target>    
                </configuration>    
            </plugin>    
        </plugins>    
    </build>

这个插件可以说是最常见的了,它是用来让maven做jdk的版本管理的。maven默认用jdk1.5来编译程序,当你不添加这个插件去编译程序时,很有可能会编译不了,加上就可以了。即插即用,方便快捷。
更多的内容,推荐你去看一本书《maven实战》,里边讲解的比较详细。

mapstruct 是一个 annotation processor,和 lombok 一样,在编译器触发运行

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题