Mavenコンパイラプラグイン
1. 概要
このクイックチュートリアルでは、Mavenビルドツールのコアプラグインの1つであるcompilerプラグインを紹介します。
他のコアプラグインの概要については、this articleを参照してください。
2. プラグインの目標
The compiler plugin is used to compile the source code of a Maven project。 このプラグインには、デフォルトのライフサイクルの特定のフェーズに既にバインドされている2つの目標があります。
-
compile–はメインソースファイルをコンパイルします
-
testCompile–はテストソースファイルをコンパイルします
POMのcompilerプラグインは次のとおりです。
maven-compiler-plugin
3.7.0
...
このプラグインhereの最新バージョンを見つけることができます。
3. 設定
By default, the compiler plugin compiles source code compatible with Java 5, and the generated classes also work with Java 5 regardless of the JDK in use.configuration要素でこれらの設定を変更できます。
1.8
1.8
<-- other customizations -->
便宜上、JavaバージョンをPOMのプロパティとして設定できます。
1.8
1.8
javacコンパイラに引数を渡したい場合があります。 ここで、compilerArgsパラメータが役立ちます。
たとえば、コンパイラに次の構成を指定して、未チェックの操作について警告することができます。
-Xlint:unchecked
このクラスをコンパイルする場合:
public class Data {
List textList = new ArrayList();
public void addText(String text) {
textList.add(text);
}
public List getTextList() {
return this.textList;
}
}
コンソールにチェックされていない警告が表示されます。
[WARNING] ... Data.java:[7,29] unchecked conversion
required: java.util.List
found: java.util.ArrayList
compilerプラグインの両方の目標は、Mavenのデフォルトライフサイクルのフェーズに自動的にバインドされるため、コマンドmvn compileおよびmvn test-compileを使用してこれらの目標を実行できます。
4. Java 9アップデート
4.1. 設定
Java 8までは、バージョン番号を1。xとして使用していました。ここで、xは、Java 8の1.8のように、Javaのバージョンを表します。
Java 9以降では、バージョン番号を直接使用できます。
9
9
同様に、propertiesを使用してバージョンを次のように定義できます。
9
9
Mavenは3.5.0,でJava 9のサポートを追加したため、少なくともそのバージョンが必要になります。 また、少なくともthe maven-compiler-pluginの3.8.0が必要です。
org.apache.maven.plugins
maven-compiler-plugin
3.8.0
9
9
4.2. 造る
次に、構成をテストします。
まず、パッケージfrom another moduleをインポートするMavenCompilerPluginクラスを作成しましょう。
単純なものはjavax.xml.XMLConstants.XML_NS_PREFIX:です
public class MavenCompilerPlugin {
public static void main(String[] args) {
System.out.println("The XML namespace prefix is: "
+ XML_NS_PREFIX);
}
}
次に、それをコンパイルしましょう:
mvn -q clean compile exec:java
-Dexec.mainClass="com.example.maven.java9.MavenCompilerPlugin"
ただし、Java 9のデフォルトを使用すると、エラーが発生します。
[ERROR] COMPILATION ERROR :
[ERROR] .../MavenCompilerPlugin.java:[3,20]
package javax.xml is not visible
(package javax.xml is declared in module java.xml,
but module com.example.maven.java9 does not read it)
[ERROR] .../MavenCompilerPlugin.java:[3,1]
static import only from classes and interfaces
[ERROR] .../MavenCompilerPlugin.java:[7,62]
cannot find symbol
symbol: variable XML_NS_PREFIX
location: class com.example.maven.java9.MavenCompilerPlugin
このエラーは、このパッケージが、ビルドにまだ含まれていない別のモジュールに含まれているために発生します。
これを解決する最も簡単な方法は、a module-info.javaクラスを作成し、java.xmlモジュールが必要であることを示すことです。
module com.example.maven.java9 {
requires java.xml;
}
今、もう一度試すことができます:
mvn -q clean compile exec:java
-Dexec.mainClass="com.example.maven.java9.MavenCompilerPlugin"
出力は次のようになります。
The XML namespace prefix is: xml
5. 結論
この記事では、compilerプラグインについて説明し、その使用方法について説明しました。 また、MavenによるJava9のサポートについても学びました。
このチュートリアルの完全なソースコードは、over on GitHubにあります。