一、在插件工程中调用该插件
插件代码
import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugins.annotations.Mojo; @Mojo(name = "drive") public class Car extends AbstractMojo { @Override public void execute() throws MojoExecutionException, MojoFailureException { System.out.println("Car drive..."); } }
pom文件
<artifactId>hw-maven-plugin</artifactId> <version>1.0</version> <packaging>maven-plugin</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-plugin-api</artifactId> <version>3.5.4</version> </dependency> <dependency> <groupId>org.apache.maven.plugin-tools</groupId> <artifactId>maven-plugin-annotations</artifactId> <version>3.5.2</version> <scope>provided</scope> </dependency> </dependencies> <build> <plugins>
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.6.1</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>utf8</encoding> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>3.0.1</version> <configuration> <attach>true</attach> </configuration> <executions> <execution> <!-- 在maven的compile 阶段就开始打包 --> <phase>compile</phase> <goals> <!-- 源码单独作为一个jar包 --> <goal>jar</goal> <!--源码打进jar包中 类似执行mvn source:jar --> <!-- <goal>jar-no-fork</goal> --> </goals> </execution> </executions> </plugin> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin>
<plugin> <groupId>com.xzy</groupId> <artifactId>hw-maven-plugin</artifactId> <version>1.0</version> </plugin> </plugins> </build>
直接调试即可
二、在其他工程中调用插件
A工程是调用插件的工程,B工程是插件工程,以下用这两个工程来说明
第一步:上面的pom.xml中有几个插件是打jar包和打源码包的,
第二步:将打包好的jar包和源码包发布。我这边是发布到本地仓库,如要发布到私服,修改-Durl
mvn deploy:deploy-file -DgroupId=com.aaa -DartifactId=hw-maven-plugin -Dversion=1.0 -Dfile=hw-maven-plugin-1.0.jar -Dsources=hw-maven-plugin-1.0-sources.jar -Durl=file://G:/aaa
第三步:配置pom.xml文件
<dependencies> <!--<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency>--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.37</version> </dependency> <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-core</artifactId> <version>3.5.4</version> </dependency> <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-plugin-api</artifactId> <version>3.5.4</version> </dependency> <dependency> <groupId>org.apache.maven.plugin-tools</groupId> <artifactId>maven-plugin-annotations</artifactId> <version>3.5.2</version> </dependency> <!-- <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.5</version> </dependency>--> <dependency> <groupId>com.xzy</groupId> <artifactId>hw-maven-plugin</artifactId> <version>1.0</version> </dependency> </dependencies> <build> <plugins> <!-- <plugin> <groupId>com.xzy</groupId> <artifactId>mybatis-generator-ext</artifactId> <version>1.0</version> </plugin>--> <plugin> <groupId>com.xzy</groupId> <artifactId>hw-maven-plugin</artifactId> <version>1.0</version> </plugin> </plugins>
第四步:在A工程中配置远程调试
在idea中配置run/debug configurations中选择remote。
上图画红色部分需要选择插件源码所在的工程路径
在A工程中找到插件的源码,在源码上打上断点
第五步:用命令窗口在B工程目录下 mvndebug hw:drive
第六步:运行A工程刚才配置的remote。
结果: