Building Java Project
   6 min read

はじめに

  • 他者が作成したプログラムにちょっと変更を加えて使いたい
  • その言語は未経験だけれど、コードの変更自体は検索したり周辺コードのコピペで何とかなりそう
  • しかし、変更したコードをどうやってビルドすれば良いんだ…?

なんてことがたまにあります。
そんな時に参考になるようなドキュメントを目指して記述しました。

プロジェクトの構造を確認する

ビルドするソースコード一式を取得したら、ディレクトリ構成を確認します。
プロジェクトルートディレクトリに pom.xml というファイルがあれば本ドキュメントが対象としている Java プロジェクトです。

an-app
├── pom.xml
└── src
    ├── main
    │   ├── java
    │   │   └── (ディレクトリ階層とJavaソースコード)
    │   └── resources
    │       └── (ディレクトリ階層とリソースファイル)
    └── test
        ├── java
        │   └── ...
        └── resources
            └── ...

複数のモジュールで構成されている場合は次のように入れ子になっている場合もあります:

an-app-parent
├── an-app-core
│   ├── pom.xml
│   └── src
│       └── ...
├── an-app-lib
│   ├── pom.xml
│   └── src
│       └── ...
└── pom.xml

この場合、それぞれのディレクトリがpom.xmlを持ちます。

pom.xml は プロジェクト構造を記述するファイルで、Apache Maven が使用します。

Java では Maven 以外にも同じようにプロジェクト構造を管理するアプリケーションがあります。それぞれルートディレクトリに固有のファイルやディレクトリを作成しますので、そのファイル/ディレクトリを見れば何でプロジェクトが管理されているか分かる、ということになります。
本ドキュメントの対象外ですが、一例を示します。

ファイル 説明
build.gradle Gradle管理プロジェクト。Android プログラムの標準はこれ。
build.xml Apache Ant管理プロジェクト。Maven が主流になる前のデファクトスタンダード。歴史のあるプロダクトでまだ利用されていることも。

ビルドに必要なアプリケーションをインストールする

必要な Java バージョンを調べる

ビルドに必要な Java のバージョンを調べておきます。
基本的には実行環境と同じバージョンでビルドすれば良いはずなので、エンドユーザ向けドキュメントが付属しているのであれば、そこに必要とする Java のバージョンが書かれているでしょう。
あるいは、ルートディレクトリにあるpom.xmlを開き、次の項目の値を調べてみても良いでしょう。通常、どちらか一方にコンパイルに使用する Java のバージョンが記載されています(参考)。

  • project > properties > maven.compiler.source
  • maven-compiler-plugin という単語を検索し、その下に書かれている configuration > source

なお、 Java5 から Java8 までは、 JavanJava1.n というのは同じものを指します( Java8 = Java1.8 )。
バージョン 9 以降は、単に Java9 , Java10 と言い、 Java1.9Java1.10 という呼び方はしません。

バージョンが分からなかったら?

取り敢えず、現時点では 1.8 を利用することにしておけば問題が起こりにくいでしょう。
1.8 までは概ね後方互換性を保っていますが、9 以降はコンパイルオプションが変わったりしており、必ずしも過去に作成したソースがそのまま通るとは限りません。

アプリケーションのダウンロードしインストールする

次の通り、JDK 及び Maven をダウンロードし、インストールします。

JDK

上で確認したバージョンの JDK をインストールします。
Linux であればパッケージマネージャから OpenJDK がインストールできるでしょう。
Windows であれば Oracle のサイトから OracleJDK インストーラをダウンロードするのが簡単でしょう。
OpenJDK/OracleJDK どちらの実装でも大抵は問題ないはずですが、保守的に行くのであれば OracleJDK をインストールする方が無難と言えます。

OracleJDK は次の URL からダウンロードできます。

古いバージョンが必要な場合は、このページの下の方にあるリンク、"Java Archive“をたどります。

ダウンロードするのは JRE ではなくJDKです。これは OpenJDK を導入する場合も同様です。
JRE は実行環境のみで、コンパイラなどを含んでいません。

Apache Maven

次の URL から最新版(本ドキュメント記載時点で 3.5.3 )をダウンロードし、適当な場所に展開します。Linux であればパッケージマネージャからインストールできるかもしれませんが、バージョンが古い場合もありますので注意してください。

binディレクトリにPATHを通しておきましょう。

環境変数設定(必須ではない)

モノによっては次の環境変数を要求するものもあります。何かそれっぽいエラーが出たら本節を思い出して設定してみてください。
具体的な設定値については検索してください。

環境変数名 説明
JAVA_HOME Java インストール場所を設定する
M2_HOME Maven インストール場所を設定する(最新版を使用していればこれを要求されることはないはずですが)

ビルドする

プロジェクトルートディレクトリで次のコマンドを実行します。

mvn -Dmaven.test.skip clean package

ビルドが成功すると、targetディレクトリ直下に所望のファイルが生成されているはずです。

以上です。おつかれさまでした。

アンインストールする

行いたい作業を終えたら、環境をクリーンアップします。
能動的に行ったこと以外で変わっていることとしては、ホームディレクトリに Maven のキャッシュディレクトリ .m2 ができていますので、これを削除するのを忘れずに。

その他情報

IDE(Eclipse)を使用する

ソースコードを改変しようとした場合、あまり慣れていない言語なのでコード補完が欲しくなります。
そこで Eclipse の導入手順についても触れておきます。

ダウンロードとインストール

次のページの Eclipse IDE for Java Developers をダウンロードし適当な場所に展開します。

展開したディレクトリのeclipeコマンド(Windows はeclipse.exeかも?)で起動できます。

補完ショートカットキーの確認/変更

Preferencesメニュー(Ubuntu の場合 Window > Preferences )を選択します。
開かれたダイアログのツリーメニューで General > Keys を選択し、 Content Assist コマンドを検索しましょう。ここで設定されているBindingが補完ショートカットキーです。

eclipse-contentassist.png

プロジェクトのインポート

メニューで File > Import を選択し、ダイアログのツリーメニューで Maven > Existing Maven Projectsを選択します。その後、編集対象のディレクトリを指定すれば完了です。

eclipse-import.png

おわりに

実は私はこれから C#を学ぼうと思っています。
そんな状況で、こういうドキュメントが有れば良いのに、というのが思い浮かんだので自分がよく知っている言語である Java 版を作成してみました。

だれか C#版をください…