自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

手?jǐn)]一款屬于自己的 Maven 插件,說干就干

存儲
今天,冰河給大家分享一篇大部分人都不會的技能,那就是我們自己動手寫一款屬于自己的Maven插件。好了,直接進入今天的主題吧。

[[432395]]

大家好,我是冰河~~

今天,冰河給大家分享一篇大部分人都不會的技能,那就是我們自己動手寫一款屬于自己的Maven插件。好了,直接進入今天的主題吧。

Maven插件的相關(guān)概念

插件坐標(biāo)定位

插件與普通jar包一樣包含坐標(biāo)定位屬性即:groupId、artifactId、version,當(dāng)使用該插件時會從本地倉庫中搜索,如果沒有則從遠(yuǎn)程倉庫下載,例如下面的配置所示。

  1. <!-- 唯一定位到dependency 插件 --> 
  2. <groupId>org.apache.maven.plugins</groupId> 
  3. <artifactId>maven-dependency-plugin</artifactId> 
  4. <version>2.10</version> 

execution配置

execution 配置包含一組指示插件如何執(zhí)行的屬性:

  • id :執(zhí)行器命名
  • phase:標(biāo)識執(zhí)行的階段
  • goals:標(biāo)識執(zhí)行的目標(biāo)或功能
  • configuration:標(biāo)識執(zhí)行目標(biāo)所需的配置文件

插件的配置和使用示例

將插件依賴拷貝到指定目錄。

  1. <plugin> 
  2.   <groupId>org.apache.maven.plugins</groupId> 
  3.   <artifactId>maven-dependency-plugin</artifactId> 
  4.   <version>3.1.1</version> 
  5.   <executions> 
  6.     <execution> 
  7.       <id>copy-dependencies</id> 
  8.       <phase>package</phase> 
  9.       <goals> 
  10.         <goal>copy-dependencies</goal> 
  11.       </goals> 
  12.       <configuration>        
  13.         <outputDirectory>${project.build.directory}/alternateLocation</outputDirectory> 
  14.         <overWriteReleases>false</overWriteReleases> 
  15.         <overWriteSnapshots>true</overWriteSnapshots> 
  16.         <excludeTransitive>true</excludeTransitive> 
  17.       </configuration> 
  18.     </execution> 
  19.   </executions> 
  20. </plugin> 

常用插件的使用

通過命令執(zhí)行插件語法

除了通過配置的方式使用插件以外,Maven也提供了通過命令直接調(diào)用插件目標(biāo)其命令格式如下所示。

  1. mvn groupId:artifactId:version:goal -D{參數(shù)名} 

通過命令執(zhí)行插件示例

(2)展示pom的依賴關(guān)系樹

  1. mvn org.apache.maven.plugins:maven-dependency-plugin:2.10:tree 

(3)直接簡化版的命令,但前提必須是maven 官方插件

  1. mvn dependency:tree 

其它常用插件

(1)查看pom 文件的最終配置

  1. mvn help:effective-pom 

(2)原型項目生成

  1. archetype:generate 

(3)快速創(chuàng)建一個Web程序

  1. mvn archetype:generate -DgroupId=io.mykit.web -DartifactId=mykit-maven-web -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false 

(4)快速創(chuàng)建一個Java項目

  1. mvn archetype:generate -DgroupId=io.mykit.java -DartifactId=mykit-maven-java -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false 

自定義Maven插件

這里,我們先來說說自定義Maven插件的步驟,這里,我將自定義Maven插件的步驟總結(jié)如下。

(1)創(chuàng)建maven 插件項目

(2)設(shè)定packaging 為maven-plugin

(3)添加插件依賴

(4)編寫插件實現(xiàn)邏輯

(5)打包構(gòu)建插件

接下來,我們就來實現(xiàn)自定義Maven插件。

配置插件項目的pom.xml

這里,我直接跳過了Maven項目的創(chuàng)建,相信小伙伴們都會創(chuàng)建Maven項目,這里,我就不再贅述了,直接給出pom.xml文件的配置,如下所示。

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" 
  3.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  4.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
  5.     <modelVersion>4.0.0</modelVersion> 
  6.     <groupId>io.mykit.plugin</groupId> 
  7.     <version>1.0.0-SNAPSHOT</version> 
  8.     <artifactId>mykit-maven-plugin</artifactId> 
  9.     <packaging>maven-plugin</packaging> 
  10.     <dependencies> 
  11.         <dependency> 
  12.             <groupId>org.apache.maven</groupId> 
  13.             <artifactId>maven-plugin-api</artifactId> 
  14.             <version>3.5.0</version> 
  15.         </dependency> 
  16.         <dependency> 
  17.             <groupId>org.apache.maven.plugin-tools</groupId> 
  18.             <artifactId>maven-plugin-annotations</artifactId> 
  19.             <version>3.5</version> 
  20.         </dependency> 
  21.     </dependencies> 
  22.     <build> 
  23.         <plugins> 
  24.             <plugin> 
  25.                 <groupId>org.apache.maven.plugins</groupId> 
  26.                 <artifactId>maven-compiler-plugin</artifactId> 
  27.                 <version>3.6.1</version> 
  28.                 <configuration> 
  29.                     <source>1.8 </source> 
  30.                     <target>1.8 </target> 
  31.                 </configuration> 
  32.             </plugin> 
  33.         </plugins> 
  34.     </build> 
  35. </project> 

Maven插件的實現(xiàn)類

接下來,我們來編寫Maven插件的實現(xiàn)類。這里,我直接給出類的源代碼,如下所示。

  1. package io.mykit.plugin;  
  2.  
  3. import javafx.beans.DefaultProperty; 
  4. import org.apache.maven.plugin.AbstractMojo; 
  5. import org.apache.maven.plugin.MojoExecutionException; 
  6. import org.apache.maven.plugin.MojoFailureException; 
  7. import org.apache.maven.plugins.annotations.LifecyclePhase; 
  8. import org.apache.maven.plugins.annotations.Mojo; 
  9. import org.apache.maven.plugins.annotations.Parameter; 
  10.  
  11. /** 
  12.  * @author binghe 
  13.  * @description 自定義Maven插件 
  14.  */ 
  15. @Mojo(name = "binghe"
  16. public class MykitMavenPlugin extends AbstractMojo { 
  17.     private final Logger logger = LoggerFactory.getLogger(MykitMavenPlugin.class); 
  18.     @Parameter(property="sex"
  19.     String sex; 
  20.  
  21.     @Parameter(property="describe"
  22.     String describe; 
  23.  
  24.     public void execute() throws MojoExecutionException, MojoFailureException { 
  25.         logger.info(String.format("binghe sex=%s describe=%s",sex,describe)); 
  26.     } 

打包安裝插件

將自定義的Maven插件打包并安裝到本地Maven倉庫,如下所示。

  • 打包
  1. mvn clean package 
  • 安裝到本地倉庫
  1. mvn clean install 

其他項目中引用自定義插件

如果需要在其他項目中使用我們自定義的Maven插件,則只需要創(chuàng)建一個Maven項目,在Maven項目的pom.xml文件中引入如下配置即可。

  1. <build> 
  2.     <plugins> 
  3.         <plugin> 
  4.             <!--引入剛剛的插件依賴--> 
  5.              <groupId>io.mykit.plugin</groupId> 
  6.              <version>1.0.0-SNAPSHOT</version> 
  7.              <artifactId>mykit-maven-plugin</artifactId> 
  8.             <!-- 這里加入的是相關(guān)參數(shù),這些參數(shù)必須跟插件實現(xiàn)里面的屬性保持一致 --> 
  9.             <configuration> 
  10.                 <sex>男</sex> 
  11.                 <describe>冰河技術(shù)微信公眾號作者</describe> 
  12.             </configuration> 
  13.         </plugin> 
  14.     </plugins> 
  15. </build> 

好了,今天就到這兒吧,我是冰河,我們下期見!!

 

責(zé)任編輯:武曉燕 來源: 冰河技術(shù)
相關(guān)推薦

2022-04-18 19:02:53

chrome擴展瀏覽器

2021-09-26 05:00:11

Vscode插件

2015-04-09 09:38:53

Tap4FunAWS手游

2021-05-14 13:30:17

Mybatis分表插件

2024-06-11 00:00:00

Java線程安全緩存組件

2011-08-09 09:16:44

Eclipse

2011-01-19 13:19:39

Thunderbird插件

2013-09-04 13:27:05

Linux發(fā)行版

2011-06-17 11:22:33

jQueryjQuery插件

2022-05-13 08:35:42

單元測試IDEA

2022-04-30 09:49:58

終端工具插件

2022-04-22 08:22:50

MVCCMySQLC++

2021-11-05 15:23:35

Karta插件安全工具

2020-04-16 08:27:51

IDEA插件編輯工具Java

2009-11-30 16:59:49

2022-02-23 14:21:20

Chrome插件瀏覽器

2022-03-01 11:38:51

RPC框架后端

2013-10-15 10:29:44

天天酷跑手游

2013-10-15 10:15:28

2023-12-28 18:40:42

點贊
收藏

51CTO技術(shù)棧公眾號