Maven Compiler Plugin

| # Comments
基本的なMaven2プラグインである、 Maven Compiler Pluginを紹介します。

Javaソースコードをコンパイルするのに必要なプラグインです。
、、、と思いきや、設定によってはC#もコンパイルできるらしいです。

Goals

Compilerプラグインは2つのゴールがあります。

  • compiler:compile
    メインのソースコードをコンパイルします。
  • compiler:testCompile
    テストのソースコードをコンパイルします。

使い方

2つのゴールは、標準的なビルドライフサイクルに紐付けられているので、フェーズの指定をすれば実行できます。

メインのソースコードをコンパイル

$ mvn compile

ゴールを直接指定しても実行できます。

$ mvn compiler:compile

テストのソースコードをコンパイル

$ mvn test-compile

ゴールを直接指定しても実行できます。

$ mvn compiler:testCompile

設定

よく使う設定を紹介します。
その他の設定については、compiler:compilecompiler:testCompileを参照してください。

source

Javaコンパイラに対する -source オプションを指定します。

指定されたリリースとソースの互換性を保つ
javac -help より

デフォルトは1.4になっているのでGenericsなどの最近の文法を使っている場合にはいちいち指定しなくてはなりません。
そろそろ最近の設定(1.6?)に変更してほしい。。。

target

Javaコンパイラに対する -target オプションを指定します。

特定の VM バージョン用のクラスファイルを生成する
javac -help より

デフォルトは1.4になっているのでGenericsなどの最近の文法を使っている場合にはいちいち指定しなくてはなりません。
そろそろ最近の設定(1.6?)に変更してほしい。。。

encoding

Javaコンパイラに対する -encoding オプションを指定します。

ソースファイルが使用する文字エンコーディングを指定する
javac -help より

設定例

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>
		</plugins>

	・・・・

	</build>

	・・・・

</project>

おまけ

C#のコンパイル

Using Non-Javac Compilersによると、以下のような設定でC#のコンパイルができるようです。

<project>
  [...]
  <build>
    [...]
    <plugins>
      [...]
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <compilerId>csharp</compilerId>
        </configuration>
        <dependencies>
          <dependency>
            <groupId>org.codehaus.plexus</groupId>
            <artifactId>plexus-compiler-csharp</artifactId>
            <version>1.5.2</version>
          </dependency>
        </dependencies>
      </plugin>
  [...]
</project>

C#はまったくわからないので実際にコンパイルされるかどうかはわかりませんが、上記設定で実行してBUILD SUCCESSFULとなることは確認しました。


そう考えるとMaven2ってJavaのビルドツールというよりはもっと汎用的なビルドツールとして使えるんだな。
今はまだプラグインが充実してないけれど。

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