Maven中扩展程序和插件之间的功能区别是什么?
以下示例摘自here,其中提供了一个简短的摘要,但没有很好地解释这些差异。
扩展示例:
<project>
...
<build>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ftp</artifactId>
<version>2.10</version>
</extension>
</extensions>
</build>
...
</project>
插件示例:
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
...
</configuration>
</plugin>
</plugins>
</build>
...
</project>
答案 0 :(得分:6)
扩展是此构建中要使用的工件列表。 它们将包含在正在运行的构建的类路径中。他们能 启用构建过程的扩展(例如添加ftp提供程序 对于Wagon运输机制),以及使插件有效 这会改变构建生命周期。简而言之,扩展是 在构建期间激活的工件。扩展不必 实际上做任何事情也不包含Mojo。出于这个原因,扩展 非常适合指定a的多个实现中的一个 常见的插件界面。
以上通常是调用构建扩展,通常使用org.apache.maven.AbstractMavenLifecycleParticipant
进行特定用法。
使用
定义的插件<extension>true</extension>
通常会定义它自己的生命周期或packaging types,就像maven-bundle-plugin一样,可以定义<packaging>bundle</packaging>
或Maven Tycho定义包装类型:<packaging>eclipse-plugin</packaging>
。