Maven的一个很明显有别与Ant的优势就是在于明确了工程中所用资源包的版本信息
,目前我们在工程开发过程中都不免需要用到大量的免费开源的第三方插件,而这些插件在升级过程中的向前兼容做的有时候确实不太理想,就想Hibernate在升级到3.0后包结构的变化一样,让很多开发人员在刚开始使用时都是一头雾水,但是由于Maven2可以明确指明所使用的资源包版本信息,这样就避免了工程中由于资源包版本混乱导致程序崩溃
的问题。
一、创建Plug-In项目
mvn archetype:create -DgroupId=org.sonatype.mavenbook.plugins
-DartifactId=first-maven-plugin
-DarchetypeGroupId=org.apache.maven.archetypes
-DarchetypeArtifactId=maven-archetype-mojo
Maven会自动到远程库去下载maven-archetype-mojo的插件;
创建成功会生成一个first-maven-plugin的文件夹,里有一个pom.xml文件,内容:
<groupId>org.sonatype.mavenbook.plugins</groupId>
<artifactId>first-maven-plugin</artifactId>
<packaging>maven-plugin</packaging>
<version>1.0-SNAPSHOT</version>
<name>first-maven-plugin Maven Mojo</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
二、创建一个MoJo类
MOJO就是一个供插件调用处理的普通类
/**
* Echos an object string to the output screen.
* @goal echo
*/
public class MyMojo extends AbstractMojo {
/**
* Any Object to print out.
* @parameter expression="${echo.message}" default-value="Hello Maven World..."
*/
private Object message;
public void execute() throws MojoExecutionException {
getLog().info(message.toString());
}
创建了一个MyMojo类,必须继承AbstractMojo类,实现execute方法,这个方法就是插件调用的入口;
三、Build和Run自定义插件
mvn clean install
插件运行遵循groupId:artifactId:version:goal格式;
mvn org.sonatype.mavenbook.plugins:first-maven-plugin:1.0-SNAPSHOT:echo
-Decho.message="My first Maven plugin"
四、定义前缀
在setting.xml文件加:
<pluginGroups>
<pluginGroup>org.sonatype.mavenbook.plugins</pluginGroup>
</pluginGroups>
然后:
mvn first:echo -Decho.message="My first Maven plugin"
非常简单。
如果插件的artifactId遵循maven-first-plugin,或者first-maven-plugin模式。Maven就会自动为你的插件赋予前缀first。
${prefix}-maven-plugin, OR maven-${prefix}-plugin
也可自定义前缀,在pom.xml加:
<build>
<plugins>
<plugin>
<artifactId>first-maven-plugin</artifactId>
<version>2.3</version>
<configuration>
<goalPrefix>first</goalPrefix>
</configuration>
</plugin>
</plugins>
</build>
You can also configure your plugin to attach specific goals to a particular phase of the build lifecycle. Here is an example:
<build>
<plugins>
<plugin>
<groupId>sample.plugin</groupId>
<artifactId>hello-maven-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>sayhi</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
This causes the simple mojo to be executed whenever Java code is
compiled. For more information on binding a mojo to phases in the
lifecycle, please refer to the Build Lifecycle document.
分享到:
相关推荐
"Dynamic Parameter plug-in"是 Jenkins 插件家族中的一个重要成员,它为构建过程提供了更灵活的参数化构建功能。由于某种原因,这个插件在官方仓库可能无法直接搜索到,但它的价值在于能够帮助开发者自定义构建过程...
maven-nsis-plugin-2.0.jar
Fat Jar Plug-in是一个Maven插件,它简化了这个任务。 在Java开发中,我们经常需要引用多个外部库来完成项目。正常情况下,运行Java应用程序需要将所有依赖的jar文件放在类路径(classpath)下。然而,当项目需要...
该插件使您可以使用ProGuard开源混淆器来混淆Maven工件,ProGuard开源混淆器是一种非常强大且完善的Java混淆器。 也可以在SourceForge的http://proguard.sourceforge.net/上找到ProGuard。 可以从您的POM使用此插件...
Maven 1.0.X插件会自动为Eclipse Checkstyle插件生成.checkstyle文件。
In terms of capabilities, Maven is an improvement to Apache Ant-thanks to numerous plug-ins and built-in integration with unit testing frameworks such as JUnit. Tired of writing the same build logic ...
本书《Eclipse 4 Plug-in Development by Example: Beginner's Guide》是一本面向Java开发者的入门级指南,旨在教授如何利用Eclipse平台开发Eclipse插件,适合那些对Eclipse作为Java IDE有所了解但还未涉足插件开发...
idea创建Maven项目时,报错显示Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.0.2:resources,并且Maven插件内看不到 mybatis-generator。如下图: 折腾了好久发现配置放错地方了,...
Maven DocCheck插件是Apache Maven的报告类型插件。 它将使用Sun Doc Check Doclet添加有关丢失和损坏的javadoc注释的报告。
该压缩包文件“kuaidi_java_kuaidi_快递_seeyog_plug-in快递_源码.zip”主要包含了一个Java实现的快递查询插件的源代码。从名称上看,我们可以推断出这个项目主要用于处理与快递相关的业务,可能是通过API接口获取...
知识点5: Maven plug-in Maven 是一个项目管理工具,提供了丰富的插件和依赖管理功能。Docker-Maven-Plugin 是一个 Maven 插件,允许开发者使用 Maven 构建和部署 Docker 镜像。 知识点6:微服务架构 微服务架构...
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-plugin-plugin:3.2:descriptor (default -descriptor) on project maven-project: Error extracting plugin descriptor: ‘No mojo definitions wer...
- 需要安装Checkstyle Plug-in、FindBugs Plug-in、PMD Plug-in 和 Static Analysis Collector Plug-in。 - 插件安装步骤参考第二章的“安装插件”。 **2. 配置项目pom** - 在项目的 `pom.xml` 文件中 `...
- SVN 插件名称为 Subversion Plug-in,安装方式同 Maven 插件。 4. **安装 Deploy 插件** - Deploy 插件名称为 Deploy to Container Plugin,安装方式同前两者。 #### 创建构建项目 1. **配置 JDK 和 Maven** ...
1. 使用Eclipse的“Export”功能,选择“Plug-in Development” > “Deployable plug-ins and fragments”来生成一个可部署的`.jar`或`.zip`文件。 2. 或者,如果使用Maven或Gradle进行构建管理,可以配置相应的插件...
- **Plug-in**:提供Maven的各种功能,执行特定的任务,如编译、测试、打包等。 - **Repository**:存储和检索依赖的远程仓库,如Central Repository和企业内部的私有仓库。 3. Maven的工作原理: - **项目对象...
In terms of capabilities, Maven is an improvement to Apache Ant-thanks to numerous plug-ins and built-in integration with unit testing frameworks such as JUnit. Tired of writing the same build logic ...
- Maven Release Plug-in Plug-in:支持Maven项目的版本发布管理。 - SVN 1.4 Compatibility Plugin:提供对Subversion的支持。 - WildFly Deployer Plugin:用于将构建后的应用部署到Wildfly服务器。 安装完...