我正在尝试创建一个插件,可以从Maven中心下载并安装jar作为系统工具。所以我希望我的行像
mvn install-plugin:install org.chaschev:cap4j:1.0
类似于Ruby的
gem install capistrano
此插件将收集有关从JAR创建的快捷方式的所有必需信息。即这个jar将包含一个实现安装接口的类。
Maven如何理解为了执行像release:prepare
这样的命令,它需要下载发布插件并运行它?有更好的/其他方式吗?
答案 0 :(得分:1)
你的意思是如何定义comamnd行中的插件/目标与插件实现之间的关系?然后答案是plugin.xml
。请参阅plugin.xml以获取发布插件,例如行家离型插件-2.0.jar:
<goalPrefix>release</goalPrefix>
...
<mojos>
<mojo>
<goal>help</goal>
...
<mojo>
<goal>prepare</goal>
...
或者你的意思是,Maven如何发现哪些插件可用?然后答案是:
org.apache.maven.plugins
和org.codehaus.mojo
${prefix}-maven-plugin
,例如cap4j-maven-plugin
cap4j
,然后将插件说明放在<plugins>
<pluginRepositories>
指向POM或settings.xml中的插件存储库答案 1 :(得分:0)
将默认Maven组用于您自己的项目并不好。 相反,为您的插件定义自己的组,如下所示:
<pluginGroups>
<pluginGroup>org.chaschev</pluginGroup>
</pluginGroups>
并将您的插件从cap4j
重命名为cap4j-maven-plugin
。然后,Maven将在POM中发现你的插件,而不会再进行任何改变。
替代方案,没有<pluginGroups>
,只需将以下内容放入您的POM:
<plugins>
<plugin>
<groupId>org.chaschev</groupId>
<artifactId>cap4j</artifactId>
<version>...</version>
<configuration>
...
</configuration>
</plugin>
...
</plugins>