美文网首页
maven点滴

maven点滴

作者: packet | 来源:发表于2019-05-14 13:17 被阅读0次

工程师的一大乐趣就是打磨工具,好比剑客磨剑,战士擦枪。
利器会带来快感,因为能高效率地生产。
自己从工作后就接触maven了,当时是有些抵触的。因为自己欠缺工程师思维,对工具理解太浅,更不会主动探索、打磨工具。
最近编译thrift文件,引发我一个思考:thrift文件是怎样编译成java文件的?答案自然是插件,于是顺藤摸瓜,厘清了一些插件的知识。

maven是一个管理项目的框架,这些功能是怎么实现的呢?就是插件。所以maven也是一个插件框架。一个插件有一个或者多个goal,插件的goal可以绑定到phase。
那什么是phase?
maven有三个生命周期 lifecycle

  1. clean
  2. default
  3. site

每个lifecycle都有好多phase,如图


default lifecycle中的关键phase
    <plugin>
        <groupId>com.xxx</groupId>
        <artifactId>maven-thrift-plugin</artifactId>
        <version>0.1.14</version>
        <executions>
            <execution>
                <id>thrift-sources</id>
                <phase>generate-sources</phase>
                <goals>
                    <goal>compile</goal>
                </goals>
                <configuration>
                    <generator>java:beans</generator>
                </configuration>
            </execution>
        </executions>
        <configuration>
            <generator>java:beans</generator>
        </configuration>
    </plugin>

可以看到,插件maven-thrift-plugin的compile goal绑定到了generate-sources phase。

也许你会质疑,我的pom.xml没有这种配置,但是也能看到插件的执行。这是因为所有的 POM 都继承自一个父 POM(无论是否显式定义了这个父 POM)。父 POM 也被称作 Super POM,它包含了一些可以被继承的默认设置。
查看 Super POM 默认配置的一个简单方法是执行以下命令:mvn help:effective-pom

参考:
maven生命周期
maven教程

相关文章

网友评论

      本文标题:maven点滴

      本文链接:https://www.haomeiwen.com/subject/dfhnoqtx.html