Project Jigsaw ことはじめ(その4)
Project Jigsaw ことはじめ(その3) - torutkのブログ の続きです。
今回は、作成したモジュールを配布するためのパッケージ化(ファイル化)です。
前回作成した2つのモジュール
- org.example.bravo
- org.example.delta
を、配布用にファイル化します。
配布用にファイル化するには、d:id:torutk:20120602 の記事で軽く触れたjpkgコマンドを使用します。
まずは、org.example.deltaモジュールから生成します。
$ jpkg -m build/org.example.delta jmod org.example.delta $ ls build lib org.example.delta@2.0.jmod src $
org.example.delta@2.0.jmod ファイルが生成されました。
このファイルを配布し、受領した側でモジュール・ライブラリにインストールします。
$ jmod create -L mylib $ jmod install -L mylib org.example.delta@2.0.jmod $ jmod ls -L mylib org.example.delta@2.0 $
次に、org.example.bravoモジュールから生成します。
$ jpkg -m build/org.example.bravo jmod org.example.bravo $ ls build org.example.delta@2.0.jmod src lib org.example.bravo@1.0.jmod
org.example.bravo@1.0.jmod ファイルが生成されました。
このファイルを配布し、受領した側でモジュール・ライブラリにインストールします。
$ jmod ls -L mylib org.example.delta@2.0 $ jmod install -L mylib org.example.bravo@1.0.jmod org.openjdk.jigsaw.ConfigurationException: org.example.bravo@=1.0: Cannot resolve org.openjdk.jigsaw.cli.Command$Exception: org.openjdk.jigsaw.ConfigurationException: org.example.bravo@=1.0: Cannot resolve :
おっと、org.example.deltaのバージョン2.0は、org.example.bravoには対応してないので、エラーとなってしまいました。
org.example.deltaのバージョン1.1ソースからビルドして、再度モジュールファイルを生成します。
$ javac -d build -modulepath build -sourcepath src `find src/org.example.delta -name *.java` $ jpkg -m build/org.example.delta jmod org.example.delta $ ls *jmod org.example.bravo@1.0.jmod org.example.delta@1.1.jmod org.example.delta@2.0.jmod $
org.example.delta@1.1.jmod ファイルが生成できたので、これを配布し、受領側でモジュール・ライブラリにインストールします。
$ jmod ls -L mylib org.example.delta@2.0 $ jmod install -L mylib org.example.delta@1.1.jmod $ jmod ls -L mylib org.example.delta@1.1 org.example.delta@2.0 $ jmod install -L mylib org.example.bravo@1.0.jmod $ jmod ls -L mylib org.example.bravo@1.0 org.example.delta@1.1 org.example.delta@2.0 $
実行してみましょう。
$ java -L mlib -m org.example.bravo hello Bravo, Hello Delta 1.1 Warning: CLASSPATH environment variable ignored when -m specified
今回はここまでです。