機能 #111
未完了Spectrum Viewer公開版を作成する
80%
説明
スペクトラム解析装置の解析結果電子ファイルを読み込み、グラフ表示するプログラムを作成する。
非公開版からRDBMS機能を削除し、解析結果のグラフ表示に限った機能を公開版とする。
- 開発環境
Liberica JDK 14 full版
IntelliJ IDEA 2020.1.1 Community Edition
Gradle 6.4
JPMS(Java Platform Module System)の実行可能モジュールとしてビルドすること
オフライン(非インターネット接続)で開発できること
ソースコードリポジトリ
Github上
上述のRedmineリポジトリ参照 source:github_spectrumfileviewer|LICENSE
- 配布・実行
アプリケーション配布形態は、zipで配布し実行可能とする(別途JDKのインストール不要)
出来たら、jpackager でWindows向けインストーラーの作成も。
高橋 徹 さんがほぼ5年前に更新
新規プロジェクトの作り方を検討し決める¶
プロジェクトの作成方法は2通り想定される
- IntelliJ IDEAで新規プロジェクトをGradleで作成
- ✅ Gradleのinitタスクで作成し、IntelliJで既存ソースをimport
1.は、IntelliJ IDEA 2020.1が同梱するGradle 6.1で作られる(後からバージョンアップ可能)、JUnit 4.12を使う設定となる(変更は可能)、作成時にgradleとsyncしインターネット接続が発生する(IntelliJの設定でGradleをwrapperではなくローカルマシン上のパス指定でビルドは可能)。
2.は、Gradle 6.4で生成、JUnit 5を使う選択可能、作成時にインターネット接続不要、.gitignoreと.gitattributesが生成。こちらの方がオフライン環境には適。ただし、Windows環境では生成されるファイルの改行コードがCRLFとなってしまう。gitの設定(autocrlfをinput)でリポジトリ登録時にCRLFをLFと自動変換させることで対処。
1.のIntelliJ IDEAで新規プロジェクト作成¶
- 「Welcome to IntelliJ IDEA」画面から、[Create New Project]をクリック
- 「New Project」画面から、左側ペインで[Gradle]を選択、右側ペインでProject SDK欄に[Liberica JDK 14 full]を選択、Additional Libraries and Frameworks領域で[Java]にチェックを付けて[Next]ボタンをクリック
- Name欄にプロジェクト名として[SpectrumFileViewer]を入力、Location欄にプロジェクトのパス(D:\work\SpectrumFileViewer 等)を入力
- Artifact Coordinatesの左端の▼をクリックし、以下入力し[Finish]ボタンをクリック
- GroupId欄にプロジェクト成果物の代表パッケージ名とする[com.torutk.spectrum]を入力
- ArtifactId欄にプロジェクト成果物のJARファイル名(バージョン名、拡張子なしの基底名)とする[SpectrumFileViewer]を入力
- Version欄にはセマンティックバージョンに基づき、[0.1.0]を入力
セマンティックバージョニング2.0.0 のFAQより
2.のGradleのinitタスクで新規プロジェクト作成¶
- コマンドプロンプト(JDK 14とGradle 6.4へのパスを通しておく)を開き、プロジェクトディレクトリを作成
- プロジェクトディレクトリ内に移動し、gradle init実行
D:\work\SpectrumFileViewer> gradle init --type java-application ^ --dsl groovy --test-framework junit-jupiter ^ --project-name SpetrumFileViewer --package com.torutk.spectrum > Task :init SKIPPED The build file 'build.gradle' already exists. Skipping build initialization. BUILD SUCCESSFUL in 2s D:\work\SpectrumFileViewer>
git関連設定¶
共有すべきではないIntelliJ IDEAプロジェクト設定、ビルド成果物フォルダをgit無視ファイルに記載する。
改行コードが特定であるバッチファイルとリポジトリに登録するバイナリファイルをgit属性ファイルに記載する。
- .gitignore
# Ignore Gradle project-specific cache directory .gradle/ .idea/shelf/ .idea/workspace.xml .idea/tasks.xml .idea/usage.statistics.xml .idea/disctionaries .idea/uiDesigner.xml .idea/gradle.xml # Ignore Gradle build output directory build/
- .gitattributes
*.bat text eol=crlf *.jar binary
リポジトリに格納するテキストファイルは基本改行コードをLFとします。
Windows上で開発する際、GradleやIntelliJ IDEAが生成するファイルの改行コードがCR+LF(Windows OSのシステムデフォルト)となる場合が多々あるので、gitの設定でコミット時に改行コードをCR+LFからLFへ変換する設定を入れます(input)。ただし、リポジトリから取り出すときは改行コードはそのままとします。
C:\> git config --global core.autocrlf input
高橋 徹 さんがほぼ5年前に更新
- 説明 を更新 (差分)
開発環境の設定¶
使用するJDK、インターネット接続なしでの開発をするための設定を行う。
使用するJDKの設定¶
- IntelliJ IDEAでプロジェクトを開き、[File]メニュー > [Project Structure]を選択
- 「Project Structure」画面の左側ペインで[Project Settings] > [Project]を選択、右側ペインでProject SDK欄に[Liberica JDK 14 full]を選択
- [Liberica JDK 14 full]が未定義であれば先に同画面の[Platform Settings] > [SDKs]で設定しておく
Gradleビルド定義の修正¶
- repositories 設定でjcenter(JFlog Bintrayリポジトリ)の使用を削除し、代わりにローカルマシン上のJUnitフォルダを指定
- JPMSの使用を設定
- メインモジュール、メインクラスの指定
- JUnitのライブラリは、オールインワンのモノを指定(ローカルマシンのflatDir設定はmavenのように依存関係を自動解析、反映しないので、多数のライブラリファイルの指定が必要となってしまう)
- build.gradleには実パスを記載せずプロパティ参照としておき、%USERPROFILE%\.gradle\gradle.properties に実パスを設定
- build.gradle
plugins { id 'java' id 'application' } java { modularity.inferModulePath = true } repositories { flatDir { dirs "${project.'library.junit5.dir'}" } } dependencies { testImplementation 'org.junit.platform:junit-platform-console-standalone:1.6.2' } application { mainModule = 'com.torutk.spectrum' mainClass = 'com.torutk.spectrum.view.SpectrumFileViewApp' } test { useJUnitPlatform() }
- gradle.properties
library.junit5.dir = C:/Program Files/Java/junit5
高橋 徹 さんがほぼ5年前に更新
- 説明 を更新 (差分)
FXMLファイルを追加
- Gradleの標準ディレクトリ構成では、FXMLファイルをソースファイルと同じディレクトリ(src/main/java/<パッケージに対応するディレクトリ>/)に置くと、ビルド時にFXMLファイルはJARファイルにはコピーされないため、実行時にエラーとなる。
- src/main/resources/<パッケージに対応するディレクトリ>/ に置くのが正解。
→ ビルド結果のJARファイル内ではクラスファイルと同じフォルダにFXMLが保管されていた。
同一マシンでローカルリポジトリをクローンしてgradlewでビルド・実行を確認したところ結果は良