Skip to content

nimbus-org/nimbus-javaversion-filecontrol-maven-plugin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nimbus-javaversion-filecontrol-maven-plugin

機能概要

コンパイルするJavaバージョン毎の差異を吸収するための、コメント化(文字列置換)、ファイル名変換コピーを行うプラグインです。

インストール方法

Mavenのpom.xmlに以下の記載を追加する。

        <plugins>
            ・・・
            <plugin>
                <groupId>com.github.nimbus-org</groupId>
                <artifactId>nimbus-javaversion-filecontrol-maven-plugin</artifactId>
                <version>X.X</version>
                <configuration>
                    ・・・
                </configuration>
            </plugin>
            ・・・
        </plugins>

使用方法(replace)

configuration

設定キー 説明 必須 デフォルト値 設定例
javaVersion コンパイルに使用するJavaのバージョン System.getProperty("java.specification.version")で取得できるJavaバージョン 8
checkJavaVersions 置換チェックするJavaのバージョン 6,7,8,9 6,7,8,9 (※1)
fromDir 置換元ファイルルートディレクトリ 無し ${basedir}/src/main/java
toDir 置換後ファイルコピー先ルートディレクトリ 無し ${basedir}/target/gen-src
replaceTargetDirs 置換元ファイルディレクトリ 無し jp/ossc/nimbus/** (※1)
fromFileExtention 置換対象ファイル拡張子 無し javapp
toFileExtention 置換後ファイル拡張子 java java
encoding ファイルの読み込み書き込みEncoding システムのデフォルトエンコーディング UTF-8

※1 複数指定が可能なため、<param>XXXX</param>で複数記載する。

設定例

  • Java8でコンパイル
  • Java6,7,8,9をチェック
  • /src/main/java 配下のソースが置換対象
  • /target/gen-src に置換後ファイルを配置
  • jp/ossc/nimbus/** にある(パッケージである)ソースが置換対象
  • javappが置換対象ファイル拡張子
  • 置換後のファイル拡張子はjava
  • ソースファイルのエンコーディングはUTF-8
        <plugins>
            ・・・
            <plugin>
                <groupId>com.github.nimbus-org</groupId>
                <artifactId>commentout-by-javaversion-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>replace</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>replace</goal>
                        </goals>
                        <configuration>
                            <javaVersion>8</javaVersion>
                            <fromDir>${basedir}/src/main/java</fromDir>
                            <toDir>${basedir}/target/gen-src</toDir>
                            <fromFileExtention>javapp</fromFileExtention>
                            <toFileExtention>java</toFileExtention>
                            <encoding>UTF-8</encoding>
                            <checkJavaVersions>
                                <param>6</param>
                                <param>7</param>
                                <param>8</param>
                                <param>9</param>
                            </checkJavaVersions>
                            <replaceTargetDirs>
                                <param>jp/ossc/nimbus/**</param>
                            </replaceTargetDirs>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            </plugin>
            ・・・
        </plugins>

コメント置換ルール

ルールに従った文字列を記載することで、コメントアウトのON/OFFを行う

コメントブロック記載ルール

説明 設定文字列ルール 設定例
コメント開始 "@START" + "条件" + "JAVA" + "バージョン" + "@" @START=JAVA9@
コメント終了 "@END" + "条件" + "JAVA" + "バージョン" + "@" @END=JAVA9@

使用可能条件

条件文字列 説明 設定例 設定例説明
= 対象のJavaバージョンと等しい場合に有効となる @START=JAVA9@ ~~~ @END=JAVA9@ Java9でコンパイルする場合にのみ有効となる
> 対象のJavaバージョンより大きい場合に有効となる @START>JAVA7@ ~~~ @END>JAVA7@ Java7より大きいバージョンでコンパイルする場合にのみ有効となる
>= 対象のJavaバージョン以上の場合に有効となる @START>=JAVA8@ ~~~ @END>=JAVA8@ Java8以上のバージョンでコンパイルする場合にのみ有効となる
< 対象のJavaバージョンより小さい場合に有効となる @START<JAVA7@ ~~~ @END<JAVA7@ Java7より小さいバージョンでコンパイルする場合にのみ有効となる
<= 対象のJavaバージョン以下の場合に有効となる @START<=JAVA7@ ~~~ @END<=JAVA7@ Java7以下のバージョンでコンパイルする場合にのみ有効となる

ソース記載例

Javaバージョンによるimportの制御を行う例

@START<JAVA9@
import sun.reflect.ReflectionFactory;
@END<JAVA9@
@START=JAVA9@
import jdk.internal.reflect.ReflectionFactory;
@END=JAVA9@

上記の設定でJava9でコンパイルした場合

/* **Java Version Difference Comment Start**
import sun.reflect.ReflectionFactory;
**Java Version Difference Comment End** */

import jdk.internal.reflect.ReflectionFactory;

上記の設定でJava8,7,6でコンパイルした場合

import sun.reflect.ReflectionFactory;

/* **Java Version Difference Comment Start**
import jdk.internal.reflect.ReflectionFactory;
**Java Version Difference Comment End** */

使用方法(copy)

configuration

設定キー 説明 必須 デフォルト値 設定例
javaVersion コンパイルに使用するJavaのバージョン System.getProperty("java.specification.version")で取得できるJavaバージョン 8
fromDir コピー元ファイルルートディレクトリ 無し ${basedir}/src/main/java
toDir コピー後ファイルコピー先ルートディレクトリ 無し ${basedir}/target/gen-src
fromFileExtention コピー対象ファイル拡張子 無し javapp
toFileExtention コピー後ファイル拡張子 java java
encoding ファイルの読み込み書き込みEncoding システムのデフォルトエンコーディング UTF-8

設定例

  • Java8でコンパイル
  • /src/main/java 配下のソースがコピー対象
  • /target/gen-src にコピー後ファイルを配置
  • javappがコピー対象ファイル拡張子
  • コピー後のファイル拡張子はjava
  • ソースファイルのエンコーディングはUTF-8
        <plugins>
            ・・・
            <plugin>
                <groupId>com.github.nimbus-org</groupId>
                <artifactId>commentout-by-javaversion-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>copy</goal>
                        </goals>
                        <configuration>
                            <javaVersion>8</javaVersion>
                            <fromDir>${basedir}/src/main/java</fromDir>
                            <toDir>${basedir}/target/gen-src</toDir>
                            <fromFileExtention>javapp</fromFileExtention>
                            <toFileExtention>java</toFileExtention>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            ・・・
        </plugins>

ファイルコピールール

コピー元ファイルディレクトリからコピー対象ファイル拡張子のファイルを検索し、そのファイルに記載されたコピールールに従ってコピー後ディレクトリにファイルをコピーする

コピー条件記載ルール

チェック対象JavaのVersionを@JAVA_VERSION@とし、不等号(=、<、<=)で有効なVersionを指定する

使用可能条件

条件文字列 説明 設定例 設定例説明
= 対象のJavaバージョンと等しい場合に有効となる @JAVA_VERSION@=8 Java8でコンパイルする場合に有効となる
< 対象のJavaバージョンより大きい、小さい場合に有効となる 6<@JAVA_VERSION@<9 Java6より大きく、Java9より小さいバージョンでコンパイルする場合に有効となる
<= 対象のJavaバージョン以上、以下の場合に有効となる 6<=@JAVA_VERSION@<=9 Java6以上、Java9以下のバージョンでコンパイルする場合に有効となる

ソース記載例

Java6以上、Java9より小さい場合にコピーを行う。

// 6<=@JAVA_VERSION@<9

Releases

No releases published

Packages

No packages published

Languages