Skip to content

Instantly share code, notes, and snippets.

@yukihane
Last active May 19, 2018 08:07
Show Gist options
  • Save yukihane/6c862490b783cd1c515fb5fd514bbd82 to your computer and use it in GitHub Desktop.
Save yukihane/6c862490b783cd1c515fb5fd514bbd82 to your computer and use it in GitHub Desktop.
多言語プログラマだけどJavaコードを編集してビルドしたい

はじめに

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

なんてことがたまにあります。

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

ビルドするソースコード一式を取得したら、ディレクトリ構成を確認します。 プロジェクトルートディレクトリに 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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment