プラグイン

| # Comments
Maven2はプラグインを使って機能拡張ができるように設計されています。

開発の基本となるコンパイルやパッケージングもプラグインによって処理が行われています。
初回の起動時にものすごく時間がかかるのは、必要なプラグインをセントラルレポジトリからいっせいにダウンロードしているからです。

今回はプラグインの基本について見てみます。

様々なプラグイン

Maven2でデフォルトで利用されているプラグインを見てみます。

パッケージングで使ったsample-jarのpom.xmlファイルを準備します。

$ mvn help:effective-pom

とすると現在のpom.xmlファイルを元に隠れている設定も含めたpom.xmlファイルが出力されます。
project/build/pluginManagementの設定に数多くのプラグインが表示されていると思います。

フェーズとゴール

Maven2の基本でフェーズについて簡単に説明しました。

プラグインにはゴールというものが設定されていて、パッケージングの種類に応じて各フェーズに割り当てられています。
例えば<packaging>jar</packaging>compileフェーズでは、maven-compiler-pluginプラグインのcompileゴールの処理を行う、という感じです。

ゴールの実行

デフォルトでフェーズに割り当てられているプラグインもそれぞれ単独で各ゴールを実行することができます。

例えばmaven-compiler-pluginプラグインのcompileゴールを実行します。

$ mvn org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile

本来であれば上記のように ${groupId}:${artifactId}:${version}:${goal} と指定してゴールを実行することになりますが、以下のルールにより短く記述することができます。

  • groupIdは、"org.apache.maven.plugins"であるもの、もしくはsettings.xmlかpom.xmlにて設定してあるものは省略することができる。
  • artifactIdは、maven-${name}-plugin、もしくは${name}-maven-pluginであるものは${name}と省略できる。
  • versionは省略すると、すでにローカルにあるものの内最新のもの、もしくはレポジトリから取得できる最新のものを利用する。

というわけで、

$ mvn compiler:compile

で実行できます。
compileフェーズの実行と違い前段のprocess-resourcesフェーズなどは実行されません。

プラグインの設定・追加

pom.xmlファイルに設定をすることでプラグインの設定・追加することができます。

maven-compiler-pluginプラグインにコンパイラオプションの設定を追加してみます。
また、jetty-maven-pluginプラグインを追加します。

pom.xml

<project>

	・・・・

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.6</source>
					<target>1.6</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.mortbay.jetty</groupId>
				<artifactId>jetty-maven-plugin</artifactId>
			</plugin>

	・・・・

		</plugins>
	</build>

	・・・・

</project>

<groupId>タグは、"org.apache.maven.plugins"であるもの、もしくはsettings.xmlで設定してあるものは省略することができます。
<version>タグでversionを明示的に指定することができます。

セントラルレポジトリ以外のレポジトリからダウンロードする場合には、<pluginRepository>タグでレポジトリの位置を指定します。

<project>

	・・・・

	<pluginRepositories>
		<pluginRepository>
			<id>maven.repository</id>
			<name>Sample Maven2 Repository</name>
			<url>http://maven.repository/maven2</url>
		</pluginRepository>
		<pluginRepository>
			<id>maven.repository</id>
			<name>Sample Maven2 SNAPSHOT Repository</name>
			<url>http://maven.repository/maven2-snapshot</url>
		</pluginRepository>

	・・・・

	</pluginRepositories>

	・・・・

</project>

comments powered by Disqus

Twitter Icon

AdSense

Creative Commons License
このブログはクリエイティブ・コモンズでライセンスされています。
Powered by Movable Type 5.14-ja

Google検索

カスタム検索

2013年10月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31