Java/JavaEE開発キットの作成

Javaアプリ開発者のローカルPCに、ファイル展開するだけで開発環境をできるようにするための開発キットの準備について記載します。
★随時更新予定★

背景

Java/JavaEE等を使ったアプリ開発では、所定の手順に従いeclipse, APサーバ、subversin/git等のミドルウェアをインストールし、それぞれの設定を行うことが多い。
このような作業は、手順が複雑になり時間がかかる場合もあり、手順を間違えた場合は期待した通りの環境にならないことがある。
開発者がより簡単・確実に開発環境を構築できるようにするために、次の環境構築方法が考えられる。

  1. リモートサーバまたはローカルPC上の仮想マシンに開発環境を構築し、そこに接続して開発する。
  2. ローカルPCに開発環境を構築し、開発する。

私が経験してきた案件では、新規開発案件が多く、そのためのメンバを一時的に集めて開発がスタートします。各メンバには、CPUやメモリの条件が良いPCが割り当てられるため、ローカルPCの力を使った後者の方法が採用されます。
ここでは、後者のローカルPCに開発環境を容易に構築するための開発キットの準備方法について記載します。

なお、複数案件の保守を複数メンバで対応する場合、各メンバのローカルPCに全の案件の環境を準備するのは難しいことが多いため、このような状況では前者の方法を推奨します。

前提や注意点

  • ここでいう「開発キット」とは、開発に必要となるIDEやツールを一纏めにしたパッケージ(フォルダ・ファイル一式)です。
    案件の要件・要求を把握し、開発標準化担当者がこの開発キットを準備する想定です。
    本格的な開発が開始されるまでに、開発標準化担当者が準備した開発キットを、開発者が参照可能な場所に配置します。
    開発者達は公開された手順書等に基づいて、この開発キットをローカルPCにダウンロード・展開し、開発を開始する想定です。
  • この開発キットを開発者に導入してもらうための手順書を別途作成する必要があります。
  • 開発キットの保守や、バージョンアップ(新版作成)時の参考として、設定内容を記録しておくことをお勧めします。
  • Java/JavaEEアプリの開発を想定しており、次のミドルウェアを前提とします。
    • IDE環境: OpenJDK1.8 + Eclipse Photon(4.8)
    • ビルドツール: maven
    • APサーバ: JBoss EAP7
    • バージョン管理システム: git
  • 開発PCとしてWindows10(64ビット)を想定しています。経験的にPCのスペックはCore-i5、メモリ8GB以上を推奨です。
  • プロジェクト用のgitリポジトリが構築されていること。
  • 開発キットの展開を容易にするために、すべてファイルをCドライブ直下の開発キット用フォルダに配置する。
    開発キットを準備する環境によっては、既定でJava/APサーバ実行環境の参照先、設定ファイルの保存先が、ベースフォルダの外になる場合がある。結果として、開発キット展開時に設定内容の消失やAPサーバ実行時エラーが発生する。
    そのため、後述の手順では依存ミドルウェアや設定内容をこのフォルダ内で完結できるようにする。
    ここではベースフォルダを(“C:\jee7devkit”)とするが、特定の開発案件向け固定フォルダ名を変更すること。
  • JBoss関連の開発をするなら、JBoss Developer Studioの方が適切かもしれないが、ここではより汎用的なJava/JavaEE開発を想定しているので、eclipse(+JBossプラグイン)を使用する。
  • 以降の手順で想定するフォルダ構成は次の通り。経験的に、1~2GB程度のサイズになります。
    • C:\jee7devkit
      • java-1.8.0-openjdk-1.8.0.181-1.b13.redhat.windows.x86_64
      • eclipse
      • workspace
      • .m2
  • 開発キットを配布するために、windowsやlhaplusで圧縮・解凍すると一部のファイルが正常に解凍できず、設定が消失する場合があります。正常に圧縮解凍できるツールを採用するか、圧縮しない方法を検討してください。

開発キットの構築

Eclipseのインストール

Eclipseの実行に必要なJDKをインストール後に、Eclipseをインストールする。

  1. OpenJDKを展開する。
    1. 下記のURLで「Accept License Agreement」をチェックし、Windows版のOpenJDK9をダウンロードする。
      Red Hat Developer | OpenJDK Download
    2. ダウンロードしたzipファイル(java-1.8.0-openjdk-1.8.0.181-1.b13.redhat.windows.x86_64.zip)を任意の場所に解凍し、ベースフォルダに移動する。(結果として、”C:\jee7devkit\java-1.8.0-openjdk-1.8.0.181-1.b13.redhat.windows.x86_64″ができる。)
  2. Eclipseを展開する。
    1. Eclipse Photon(4.8)のJava EE開発用パッケージ(zip)をダウンロードする。
      Eclipse IDE for Java EE Developers
    2. ダウンロードしたzipファイル(eclipse-jee-photon-R-win32-x86_64.zip)を任意の場所に解凍し、ベースフォルダに移動する。(結果として、”C:\jee7devkit\eclipse”ができる。)
  3. pleiadesでEclipseを日本語化する。
    setup.exeで自動設定することもできますが、失敗する場合があるので昔からのplugins, featuresフォルダの上書き方法(pleiades-win.zip付属のreadme.txtを参照のこと。)を採用しています。

    1. Eclipse日本語化プラグイン(Pleiades プラグイン)をダウンロードする。
      Pleiades – Eclipse プラグイン日本語化プラグイン
      ※上記のEclipseパッケージを日本語化する想定なので”Pleiades All in One”ではなく、”Pleiades プラグイン・ダウンロード”からWindows用zipをダウンロード
    2. ダウンロードしたzipファイル(pleiades-win.zip)を任意の場所に展開する。
    3. 展開したフォルダのpluginsとfeaturesフォルダを、eclipseの同フォルダ(“C:\jee7devkit\eclipse”にあるplugins, featuresフォルダ)に上書きする。
    4. eclipse.iniの編集が必要だが、他の設定と纏めて編集するので、ここでは何もしない。
  4. eclipse起動オプションの構成
    C:\jee7devkit\eclipseにあるeclipse.iniを開き、下記の強調行の内容を追加・編集する。(編集前に念のためeclipse.ini.orgというファイルにコピー)
    [code title=”eclipse.ini” highlight=”1,2,18,19,28,29″]-vm
    C:/jee7devkit/java-1.8.0-openjdk-1.8.0.181-1.b13.redhat.windows.x86_64/bin/javaw.exe
    -startup
    plugins/org.eclipse.equinox.launcher_1.5.0.v20180512-1130.jar
    –launcher.library
    plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.700.v20180518-1200
    -product
    org.eclipse.epp.package.jee.product
    -showsplash
    org.eclipse.epp.package.common
    –launcher.defaultAction
    openFile
    –launcher.defaultAction
    openFile
    –launcher.appendVmargs
    -vmargs
    -Dosgi.requiredJavaVersion=1.8
    -Dosgi.instance.area.default=C:\jee7devkit\workspace
    -Duser.home=C:/jee7devkit
    -Dfile.encoding=utf-8
    -XX:+UseG1GC
    -XX:+UseStringDeduplication
    –add-modules=ALL-SYSTEM
    -Dosgi.requiredJavaVersion=1.8
    -Dosgi.dataAreaRequiresExplicitInit=true
    -Xms256m
    -Xmx1024m
    –add-modules=ALL-SYSTEM
    -Xverify:none
    -javaagent:plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
    [/code]
    • -vm: 開発キット内にあるJDKを指定する。なお、-vmにjavaw.exeではなくjava.exeを指定してしまうと、次のエラーがDOSプロンプト上に表示されるので注意。
      “org.eclipse.m2e.logback.configuration: The org.eclipse.m2e.logback.configuration bundle was activated before the state location was initialized. Will retry after the state location is initialized. …”
    • -Dosgi.instance.area.default: 使用するワークスペースフォルダを固定する。gitの利用手順書等で保存先を任意にしてしまうと混乱するので、固定パスのワークスペースに保存する前提とする。
    • -Duser.home: “.eclipse”等の設定情報を保存するフォルダを開発キット内に変更する。設定情報を開発キット内に含めないと、開発キット展開時にeclipse設定が初期化されて状態になってしまい、展開後に再設定が必要になってしまうため。
    • -Dfile.encoding: eclipseの既定のエンコーディングをUTF-8とする。(既定ではMS932)
    • -Xms, -Xmx: 既定で変更する必要する必要はないと思うが、ビルド等のeclipse動作が遅い場合は、APサーバ等の他ツールへのメモリ割り当ても考慮の上、チューニングする。
    • -Xverify, -javaagent: Pleiadesの設定手順に記載された内容
  5. C:\jee7devkit\eclipse\eclipse.exeを実行する。
    ワークスペースの選択画面で、ワークスペースの場所が”C:\jee7devkit\workspace”になっていることを確認する。「この選択をデフォルトとして使用し、今後この質問を表示しない」をチェックし、起動ボタンをクリックする。
    エラーメッセージが表示されずにeclipseが起動すること。

eclipseの基本設定

[ヘルプ]-[Eclipseマーケットプレイス]を選択し、次のプラグインをインストールする。

  • JBossツール: WildflyとEAP用のサーバプロファイルを使用するため。(インストールしないとサーバ追加時に適切なバージョンのプロファイルを指定できないため。)
  • Checkstyleプラグイン: チェックスタイルを使って品質確保する運用を想定しているため。(プロジェクト毎にCheckstyleをアクティブ化する必要があります。)
  • プロパティ-エディター: プロパティファイルを日本語編集するため。
  • (gitクライアント): 既にインストール済みなので対応不要

eclipseの設定を変更する。
※表中の「設定ウインドウ」とは、[ウインドウ]-[設定]で表示されるウインドウのことです。

全般:
設定内容設定手順
ソースコート等のeclipseで取り扱うファイルの既定のエンコーディングをUTF-8とする。設定ウインドウの[一般]-[ワークスペース]を開き、テキストファイルエンコーディングがUTF-8になっていること。
フォントを等幅フォントに変更する。設定ウインドウの[一般]-[外観]-[色とフォント]を開き、[基本]-[テキスト・フォント]を選択し[編集]をクリックする。
フォント名でMSゴシック等の等幅フォント、9ptを選択し、[OK]をクリックする。
[適用]をクリックする。
HTML, XMLエディターの見づらい斜体フォントをやめる。設定ウインドウの[Web]-[HTMLファイル]-[エディター]-[構文の色指定]を開き、[構文要素]の[属性値]を選択し[斜体]のチェックを外す。
同様に、
  • プロキシを使用する場合はproxies要素のコメントアウトを外し、プロキシサーバの情報を定義してください。
  • EAP, Wildfly等のJBoss系のAPサーバを使用する想定なので、JBossのリポジトリを定義しています。社内やプロジェクトでリポジトリを管理している場合、そのリポジトリを参照するように設定してください。
  • 詳細はmavenのリファレンスを参照のこと。
  • Eclipseの設定ウインドウで、[maven]-[ユーザ設定]を開く。ユーザ設定が”C:\jee7devkit\.m2\settings.xml”であることを確認する。(なっていない場合、この値を設定する。)
  • APサーバの設定

    APサーバ関連のフォルダや設定ファイルを作成する。
    基本的な作業手順は、APサーバ展開→JDBCドライバ設定→AP設定ファイルを編集、である。
    次の2つの想定のAPサーバ構築手順を記載する。

    1. 個人でのAPサーバ運用を目標としたCentOS+Wildfly+MariaDBを使った環境
    2. OSS系の商用サービスの運用を目標としたRHEL+EAP7+PostgreSQLを使った環境

    A. Wildflyを使用する場合:

    1. Wildfly11をダウンロードする。
      Downloads · WildFly
    2. ダウンロードしたzipファイル(wildfly-11.0.0.Final.zip)を任意の場所に解凍し、ベースフォルダに移動する。(結果として、”C:\jee7devkit\wildfly-11.0.0.Final”ができる。)
    3. 開発キット内のJDKを使用するようC:\jee7devkit\wildfly-11.0.0.Final\binのファイルを次のように変更する。念のため、jboss-cli.batも実行できるよう変更する。
      [code title=”jboss-cli.bat” highlight=”8″]@echo off
      setlocal ENABLEEXTENSIONS

      rem WARNING: Delayed expansion is enabled prior to execute JVM.
      rem Do not enable delayed expansion until the JVM execution.
      rem ‘!’ contained in JBOSS_HOME or JAVA_HOME paths would be removed from variables.

      set JAVA_HOME="C:\jee7devkit\java-1.8.0-openjdk-1.8.0.181-1.b13.redhat.windows.x86_64"

      rem ————————————————————————-
      rem JBoss Admin CLI Script for Windows

      [/code]

    4. コアモジュールとしてJDBCドライバを登録する。
      1. JDBCドライバ(現時点で最新のmariadb-java-client-2.3.0.jar)をダウンロードする。
        MariaDB Connector/J – MariaDB
      2. コアモジュールの配置場所は”C:\jee7devkit\wildfly-11.0.0.Final\modules”である。この配下に”org\mariadb”を作成した。また、コアモジュールのネーミングルールに合わせて、mainフォルダも作成する。
      3. mainフォルダの下に上記のJDBCドライバをコピーする。また、次のmodule.xmlを作成する。

    5. “C:\jee7devkit\wildfly-11.0.0.Final\standalone\configuration”にある設定ファイルstandalone.xmlを開き、下記の強調部分を追記する。接続先スキーマやユーザ名等は環境に合わせて適宜変更する。

    6. Eclipseにサーバとして追加する。
      1. Eclipseの設定ウインドウで、[サーバー]-[ラインタイム環境]を開き、[新規]をクリックする。
      2. [ランタイム環境のタイプを選択]で[Wildfly 11 Runtime]を選択し、[新規ローカル・サーバーの作成]をチェックし、[次へ]をクリックする。
      3. 表示された「JBossラインタイム」ウインドウで、次の値を入力し、[次へ]をクリックする。
        名前:
        WildFly 11.0 Runtime
        ホーム・ディレクトリー:
        C:\jee7devkit\wildfly-11.0.0.Final
        ランタイムJRE:
        代替JRE(java-1.8.0-openjdk-1.8.0.181-1.b13.redhat.windows.x86_64)
        サーバー・ベース・ディレクトリー:
        standalone
        構成ファイル:
        standalone.xml
      4. 表示された「新規JBossサーバを作成します」ウインドウで、次の値を入力し、[完了]をクリックする。
        サーバ:
        [ローカル]を選択
        制御:
        [ファイルシステム及び操作]を選択
        サーバーのライフサイクルを外部で管理する: 非チェック
      5. 設定ウインドウで[適用して閉じる]をクリックする。
      6. Eclipse(JavaEEパースペクティブ)の画面下にある[サーバー]ビューに上記のサーバ([WildFly 11.0 Runtime サーバー])が追加されていることを確認する。
      7. 名前が微妙なので、このサーバをダブルクリックして設定ウインドウを表示し、[サーバ名]を”WildFly 11.0 サーバー”変更する。
      8. このサーバを右クリックし、[開始]をクリックする。
      9. [コンソール]ビューにログが順次流れ始め、最後に”… started in …”と出力されることを確認する。
      10. サーバを右クリックし、[停止]をクリックする。

    B. EAP7を使用する場合:
    ※次のリファレンスを参考にしています。

    1. EAP7をダウンロードする。
      Red Hat Developer | Red Hat JBoss Enterprise Application Platform Download
    2. ダウンロードしたzipファイル(jboss-eap-7.1.0.zip)を任意の場所に解凍し、ベースフォルダに移動する。(結果として、”C:\jee7devkit\jboss-eap-7.1″ができる。)
    3. 開発キット内のJDKを使用するよう”C:\jee7devkit\jboss-eap-7.1\bin”のファイルを次のように変更する。jboss-cli.batも実行できるよう変更する。
      [code title=”jboss-cli.bat” highlight=”8″]@echo off
      setlocal ENABLEEXTENSIONS

      rem WARNING: Delayed expansion is enabled prior to execute JVM.
      rem Do not enable delayed expansion until the JVM execution.
      rem ‘!’ contained in JBOSS_HOME or JAVA_HOME paths would be removed from variables.

      set JAVA_HOME="C:\jee7devkit\java-1.8.0-openjdk-1.8.0.181-1.b13.redhat.windows.x86_64"

      rem ————————————————————————-
      rem JBoss Admin CLI Script for Windows

      [/code]

    4. リファレンスを参考に、コアモジュールとしてJDBCドライバを登録する。
      1. JDBCドライバ(現時点で最新のpostgresql-42.2.5.jar)をダウンロードする。
        PostgreSQL JDBC Download
      2. コアモジュールの配置場所は”C:\jee7devkit\jboss-eap-7.1\modules”である。この配下に”com\postgresql”を作成した。また、コアモジュールのネーミングルールに合わせて、mainフォルダも作成する。
      3. mainフォルダの下に上記のJDBCドライバをコピーする。また、次のmodule.xmlを作成する。
    5. “C:\jee7devkit\jboss-eap-7.1\standalone\configuration”にある設定ファイルstandalone.xmlを開き、下記の強調部分を追記する。接続先スキーマやユーザ名等は環境に合わせて適宜変更する。
    6. Eclipseにサーバとして追加する。
      1. Eclipseの設定ウインドウで、[サーバー]-[ラインタイム環境]を開き、[新規]をクリックする。
      2. [ランタイム環境のタイプを選択]で[Red Hat JBoss Enterprise Application Platform 7.1 Runtime]を選択し、[新規ローカル・サーバーの作成]をチェックし、[次へ]をクリックする。
      3. 表示された「JBossラインタイム」ウインドウで、次の値を入力し、[次へ]をクリックする。
        名前:
        JBoss EAP 7.1 Runtime
        ホーム・ディレクトリー:
        C:\jee7devkit\jboss-eap-7.1
        ランタイムJRE:
        代替JRE(java-1.8.0-openjdk-1.8.0.181-1.b13.redhat.windows.x86_64)
        サーバー・ベース・ディレクトリー:
        standalone
        構成ファイル:
        standalone.xml
      4. 表示された「新規JBossサーバを作成します」ウインドウで、次の値を入力し、[完了]をクリックする。
        サーバ:
        [ローカル]を選択
        制御:
        [ファイルシステム及び操作]を選択
        サーバーのライフサイクルを外部で管理する: 非チェック
      5. 設定ウインドウで[適用して閉じる]をクリックする。
      6. Eclipse(JavaEEパースペクティブ)の画面下にある[サーバー]ビューに上記のサーバ([JBoss EAP 7.x Runtime サーバー])が追加されていることを確認する。
      7. 名前が微妙なので、このサーバをダブルクリックして設定ウインドウを表示し、[サーバ名]を”JBoss EAP 7.1 サーバー”変更する。
      8. このサーバを右クリックし、[開始]をクリックする。
      9. [コンソール]ビューにログが順次流れ始め、最後に”… で開始しました …”と出力されることを確認する。
      10. サーバを右クリックし、[停止]をクリックする。

    案件固有の設定

    • gitのリポジトリが認証不要で参照可能であれば、gitパースペクティブに登録しておくと開発者の手間が減ります。