本文 START
我々のプロジェクトビルドシステムの使用法が説明される
話題: UNO (Universal Network Objects)
-Hypothesizer
我々は、我々のいずれかのシリーズの中でzipファイルにアーカイブされたサンプルプログラムに言及する時、ある同じプロジェクトビルドシステムを使用している。プロジェクトをビルドする方法を毎回記述するのは面倒なので、ここ一箇所にそれを記述しよう。
-Rebutter
オーケー。
-Hypothesizer
我々はGradleかAntを使う(両方は必要ない)ので、その少なくとも1つとJDKをインストールしておかなければならない。これらのインストール方法は、Linux用はここ、Windows用はここに、既に記述した。
-Rebutter
ふーむ、他の製品についての情報も含んでいるが、不要な部分は無視すればよい。
-Hypothesizer
UNO拡張機能をビルドするのでなければ、LibreOffice(またはApache OpenOffice)、LibreOffice SDK(またはApache OpenOffice SDK)、wmctrlは必要ない。
各製品は好きなようにインストールして問題ないが、製品のバージョンは以下より上であると想定されている。
-
JDK 1.8.0
-
Ant 1.9.6
-
Gradle 3.1
-Rebutter
これより下のバージョンでは絶対うまくいかないと言っているわけではないだろう?
-Hypothesizer
上のバージョンは我々が使ってきたバージョンだというだけだ。若干下のバージョンでうまくいかないとする特別の理由を私は知らない、JDKを除いては。JDKについては、下のバージョンではうまくいかないだろう。というのは、例えば、我々はラムダ表現を使っているから。
-Hypothesizer
zipファイルにアーカイブされたサンプルプログラムに我々が言及したとき、そのzipファイルは、ディレクトリ構造を維持して、あるディレクトリに展開しなければならない。
-Rebutter
この、展開のルートディレクトリを、「開発ベースディレクトリ」と呼ぼう。
-Hypothesizer
開発ベースディレクトリの下のディレクトリ群は、プロジェクトディレクトリ群であり、開発ベースディレクトリの下の'commonBuild*.gradle'、'commonBuild*.xml'、'commonBuild.properties'は、共通(「他の、プロジェクト専用ビルドスクリプトまたはビルドファイルによって使われている」という意味)ビルドスクリプトまたはビルドファイルだ。全てのプロジェクトをビルドするには . . .
-Rebutter
その前に、共通ビルドスクリプトまたはビルドファイル1つのいくつかのプロパティを変更しなければならないように思ったが。
-Hypothesizer
ああ、忘れていた。UNO拡張機能プロジェクトをビルドする場合は、Antの'commonBuild.properties'またはGradleの'commonBuild01.gradle'の'LIBREOFFICE_DIRECTORY_NAME'と'LIBREOFFICE_SDK_DIRECTORY_NAME'は、もし、それらが自環境と合っていなければ、変更しなければならない。
-Rebutter
それらをどのように変更すればよいのか?
-Hypothesizer
'LIBREOFFICE_DIRECTORY_NAME'は、LibreOfficeがインストールされたディレクトリ、'LIBREOFFICE_SDK_DIRECTORY_NAME'は、LibreOffice SDKがインストールされたディレクトリだ。Windowsでは、これらは、常に変更しなければならないだろう。その際、ディレクトリの区切り文字には、'\'ではなく'/'を使う(例えば、'D:/LibreOffice')。
-Rebutter
ふーむ . . .
-Hypothesizer
LibreOfficeのバージョンが我々が予期しているものより下の場合、変更しなければならない他のプロパティーもあるかもしれない。
-Rebutter
最低バージョンとして我々が予期しているものはなんだ?
-Hypothesizer
'5.1.4'だ。
-Rebutter
ふーむ . . .
-Hypothesizer
プロパティが正しく設定されたら、開発ベースディレクトリをカレントディレクトリにして、'gradle'または'ant'を実行すると、すべてのプロジェクトがビルドされる。
個別のプロジェクトをビルドしたい場合は、そのプロジェクトディレクトリをカレントディレクトリにして、'gradle'または'ant'を実行すればよい。
-Rebutter
ターゲットである生成物はどこにあるのか?
-Hypothesizer
各プロジェクトディレクトリの'target'ディレクトリにあるはずだ。
プロジェクトがUNO拡張機能プロジェクトである場合、UNO拡張機能は、LibreOfficeに登録される。その前に、LibreOfficeのプログラムインスタンス(もしあれば)を落とそうと試みられるだろう。
-Rebutter
まだ保存していない文書を無慈悲に閉じて突然落とすわけではないのだろう?
-Hypothesizer
そうした文書を保存するように丁重に尋ねられる。
このサイトで言及されている複数のzipファイルの間の関係
-Rebutter
共通ビルドスクリプト群と共通ビルドファイル群は、このサイトで言及される全てのzipファイルに含まれている。1つのディレクトリに2つのzipファイルを展開した場合、古いものは、新しいもので上書きすべきなのか?
-Hypothesizer
新しいもの(ファイル変更日を見て欲しい)で古いものを上書きすべきだ。新しいものはどのプロジェクトもうまく扱えるはずだ(バグがなければだが)。
-Rebutter
複数のzipファイルに含まれているユーティリティプロジェクトはどうだ?
-Hypothesizer
うーん、これらは、実験中のプロジェクトだから、我々はこれらを頻繁に変更し、互換性を常に維持しているわけではない。もし、新しいユーティリティプロジェクトがより古いプロジェクトと合わなければ、zipファイルは別のディレクトリに展開しなければならないだろう。または、我々は、このサイトのzipファイルを、新しいユーティリティプロジェクトに対応したアップデートされたzipファイルで置き換えるので、アップデートされたzipファイルを使うこともできる。
-Rebutter
すると、あるzipファイル内のプロジェクトには、そのzipファイルに言及している記事に関係ない多くのファイルが含まれる可能性があるということになる。
-Hypothesizer
実際、そういうことになる。まあ、分かるだろうが、各zipファイルから無関係なファイルを除くのは大変すぎるから . . .
-Rebutter
それでは、もし、ある記事で言及されたzipファイルに、無関係なファイル群が含まれていたら、それは、ほかの記事のためのものなわけだ。
既存のプロジェクトディレクトリは、zipファイルにそれらのプロジェクトが含まれている場合、そのzipファイルを展開する前に削除する必要はないのか?
-Hypothesizer
原則としては、そうしなければならない、というのも、zipファイルのそうしたプロジェクトから一部のファイルが削除されている可能性があるから。ただし、多くの場合、それらを削除しなくても害はなにもないだろう。
-Hypothesizer
あるプロジェクトにJavaのメインクラス(mainメソッドを持つクラス)が含まれている場合、そのプログラムを、プロジェクトディレクトリをカレントディレクトリにして、以下のようにして実行できる
Gradleの場合:
@
bash or cmd Source Code
gradle run -PMAIN_CLASS_NAME="<the main class name>" -PCOMMAND_LINE_ARGUMENTS="<the command line arguments>"
Antの場合:
@
bash or cmd Source Code
ant run -DMAIN_CLASS_NAME="<the main class name>" -DCOMMAND_LINE_ARGUMENTS="<the command line arguments>"
本文 END