1.はじめに
ポンポンを書くときに私たちはしばしば、それはプラグインの様々な内部数で構築する、プラグインは、彼らはしばしば、これらのプラグインの役割は、プロジェクトを構築するプロセスであるモジョと呼ばれているMavenプラグインである、いくつかを実行しますそのような達人-ジャーのプラグインプラグインを使用するなどのアクション、挙動は、ジャーを包装するために使用されます。私たちは春のブートを使用するときに別の例として、なぜMVN春・ブートを実行:実行時間を我々は内部ビルドでは、ばねブートのmaven-pluginのが装備されているので、Mavenは、いくつかの春ブートが構築されているでしょうプラグイン、および実行クラスを実行します。ここでは、モジョをカスタマイズします。
2.プラグインの命名規則
私たちは、カスタムプラグインの作成を開始する前に、のは、正式にXXX-のmaven-pluginのをお勧めすることができますどのような名前から実際に命名を見て、取る次の例を見てみましょう
:しかし、一つのこと、彼らはコマンドを実行する必要があるとき、我々は書かなければならない存在であるグループ名:モジュール名:バージョン:実行中の名前は
ほんの少し退屈な、何の問題を書くませんが、我々は-maven、プラグイン用のプラグインを終了した場合、我々は言葉遣いを簡素化し、同じ効果を達成するために使用することができます実行します名前:[モジュール名は-maven-プラグインを削除しました]
3.カスタムコンポーネントを書き始めます
日食、またはアイデアはMavenプロジェクト、モジュールの選択肢を作成することができればIDEのすべての種類を通じ、彼らはモジョモジュールを選択することができ、IDEはすばやくの開発にモジョの開発環境を構築するのに役立ちますポンポンポンポン内の2つのプラグインを過ごす、シンプルな構造ですが、モジョを開発したいならば、我々はまた、2つのプラグインを導入する必要がある、のmaven-pluginの-APIである、のmaven-pluginの-注釈で、我々は書くことができます私たちのカスタムプラグインに属しています
< プロジェクトのxmlns = "http://maven.apache.org/POM/4.0.0" のxmlns:XSI = "http://www.w3.org/2001/XMLSchema-instance" のxsi:schemaLocationの= "のhttp:/ /maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd」> < modelVersion > 4.0.0 </ modelVersion > < groupIdを> com.test.maven </ groupIdを> < たartifactId >私の-のmaven-pluginの</ たartifactId > < パッケージ>のmaven-pluginの</ 梱包> < バージョン> 1.0-SNAPSHOT </ バージョン> < 名前>私の-のmaven-pluginのMavenのモジョ</ 名前> < URL > http://maven.apache.org </ URL > < 依存性> < 依存> < groupIdを> org.apache .maven </ のgroupId > < たartifactId >達人-プラグインAPI </ たartifactId > < バージョン> 2.0 </ バージョン> </ 依存> < 依存> < groupIdを> org.apache.maven.plugin-ツール</ groupIdを> < たartifactId >のmaven-pluginの-注釈</ たartifactId > < バージョン> 3.1 </ バージョン> </ 依存関係> </ 依存関係> </ プロジェクト>
ここでは、クラスのJava実装である、我々は必要がAbstractMojoクラスを継承し、我々は特定の実装するロジックですexecuteメソッドをオーバーライドする書き込み操作を実行したいが、ここで重要な点は、我々は、後に詳細にコメント説明されています
パッケージcom.test.maven。 輸入org.apache.maven.plugin.AbstractMojo; 輸入org.apache.maven.plugin.MojoExecutionException。 輸入org.apache.maven.plugins.annotations.Execute。 輸入org.apache.maven.plugins.annotations.LifecyclePhase; 輸入org.apache.maven.plugins.annotations.Mojo; 輸入org.apache.maven.plugins.annotations.Parameter。 / ** *タイムスタンプファイルに触れるゴール。 * * @goalタッチ * * @phaseプロセス-ソース * / @Mojo(名前 = "こんにちは"、defaultPhase = LifecyclePhase.CLEAN) パブリック クラス MyMojo延びAbstractMojo { @parameter プライベート文字列の試験; 公共 のボイドは、実行()スローMojoExecutionException { System.out.printlnは( "---------- >>こんにちは私のプラグインは=" + テスト); } }
これら二つのことを書いた後、私たちは、リポジトリにインストールされ、このプラグインを入れて実行MVNインストールすることができます。その他のプロジェクトは、私たちはこのプロジェクトに当社の事業の一部のカスタムにこのプラグインを使用できるように
POM他のプロジェクトは、いつものようにこのプラグインで引用された他のプロジェクトでは、内部のプラグインのビルドに情報を書き込みます
< プロジェクトのxmlns = "http://maven.apache.org/POM/4.0.0" のxmlns:XSI = "http://www.w3.org/2001/XMLSchema-instance" のxsi:schemaLocationの= "のhttp:/ /maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd」> < modelVersion > 4.0.0 </ modelVersion > < groupIdを> com.test。 maven.phase </ groupIdを> < たartifactId >私の-mavenのテスト相</ たartifactId > < バージョン> 0.0.1-SNAPSHOT </ バージョン> <構築> < プラグイン> < プラグイン> < groupIdを> com.test.maven </ groupIdを> < たartifactId >私の-のmaven-pluginの</ たartifactId > < バージョン> 1.0-SNAPSHOT </ バージョン> </ プラグイン> </ プラグイン> </ ビルド> </ プロジェクト>
次に実行する、ハローここで対応することは@Mojo名属性内部の私たちのカスタムコンポーネントの上にある:私のMVN:こんにちは
4.カスタムコンポーネントのプロパティについて説明します
以下は、コンポーネントの注釈そのうちの1つは2つのファイルでは、説明するためにポンポン構成書かれているプロジェクトをいくつかの例を見つけます
例1:
//组件组件
@Mojo(name="hello")
<!-- 项目配置 如果这里不配置执行目标,或者执行所在的生命周期,执行后是不会产生效果的 -->
<build> <plugins> <plugin> <groupId>com.test.maven</groupId> <artifactId>my-maven-plugin</artifactId> <version>1.0-SNAPSHOT</version> <executions> <execution> <goals> <!-- 执行目标 --> <goal>hello</goal> </goals> <!-- 执行这个目标所在的生命周期 --> <phase>clean</phase> </execution> </executions> <configuration> <test>peter</test> </configuration> </plugin> </plugins> </build>
例子2:
//自定义组件,名称为hello, 默认执行周期 clean,
@Mojo(name="hello",defaultPhase = LifecyclePhase.CLEAN)
<!-- 这里就不需要想例子一当中 在pom里面指定生命周期的执行阶段了 -->
<build> <plugins> <plugin> <groupId>com.test.maven</groupId> <artifactId>my-maven-plugin</artifactId> <version>1.0-SNAPSHOT</version> <executions> <execution> <goals> <!-- 执行目标 --> <goal>hello</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
例子3:
//声明参数,用于pom注入参数 @Parameter private String test;
<build> <plugins> <plugin> <groupId>com.test.maven</groupId> <artifactId>my-maven-plugin</artifactId> <version>1.0-SNAPSHOT</version> <executions> <execution> <goals> <!-- 执行目标 --> <goal>hello</goal> </goals> </execution> </executions>
<!-- 这里对应的test节点,就是对应的自定义组件中,参数名 里面的值就是要注入的值,使用场景是,当需要注入目标项目的相对路径或者项目名称等等一些信息 -->
<configuration> <test>peter</test> </configuration> </plugin> </plugins> </build>