创建Maven插件工程
通过IDEA创建工程,选择maven-archetype-mojo
模板,artifactId
命名时采用-maven-plugin
结尾
此时pom文件中仅有maven-plugin-api
依赖,再添加maven-plugin-annotations
依赖,是代码支持maven注解
之后,创建一个对象,继承AbstractMojo
类,重写execute()方法,这个方法就是maven插件的执行方法,同时在类上增加@Mojo注解
Mojo注解
Parameter注解
打包编译
代码编写完之后,执行mvn install 或者mvn depoly即可
执行插件
pom文件
此时我们执行mvn clean
命令可以看到如下日志,表示我们的自定义插件已经执行了,并且打印出了配置的值2134
注意
在pom文件中声明了参数的情况下,使用-D参数是无法覆盖的
例如,执行 mvn clean -Dpath=5678
,从日志上可以看出,打印的值还是2134,如果将<path>2134</path>
中的值去掉,再执行 mvn clean -Dpath=5678
,此时日志中的值就被改为了命令行中的值,也就是说,只有参数没有在xml中初始化的时候,命令-D参数才有效。
使用命令行
如果使用命令行直接调用查询,那么在pom文件中不能申明插件,否则会执行两次该插件
直接调用插件的格式为 groupId:artifactId:version:goal
,即young-test:young-maven-plugin:1.0-SNAPSHOT:test
,参数使用-D传输
这种写法十分繁琐,如果我们像执行官方插件那样执行我们的插件mvn young:test -Dpath=9527
,控制台会提示错误
这说明,maven模式回去找groupId
为org.apache.maven.plugins
和org.codehaus.mojo
的插件,此时需要在settings.xml
文件中找到pluginGroups
标签,同时添加一个pluginGroup
,值为我们自己的groupId
即可,添加完之后保存settings.xml,此时再执行mvn young:test -Dpath=9527
,即可在控制台看到我们插件已经被执行了。
注意
插件命名未使用-maven-plugin
结尾时,无法使用短命令执行
maven内置属性
1、maven属性
内置属性(maven预定义,用户可以直接使用的)
主要有两个常用内置属性——
${basedir}表示项目根目录,即包含pom.xml文件的目录;
${version}表示项目版本。
project.basedir同project.basedir同{basedir};
2、POM属性(使用pom属性可以引用到pom.xml文件对应的元素的值)
在其他地方就可以使用该自定义的属性了:
setting.xml文件属性(与pom属性同理,用户可以用以settings.开头的属性引用setting.xml文件的XML元素值)
${settings.localRepository}表示本地仓库的地址
java系统属性(所有的java系统属性都可以用env,开头的maven属性引用)
使用mvn help:system命令可查看所有环境变量;
${env.JAVA_HOME}表示JAVA_HOME环境变量的值;
参考:
https://www.cnblogs.com/oscar1987121/p/10959083.html
https://blog.csdn.net/weixin_41358004/article/details/107399647
https://www.cnblogs.com/cxyyh/p/10847620.html
https://www.cnblogs.com/feiyujun/p/12122159.html