言語実装パターンを写経するのでjavaの環境を用意したい。 そのために調べた基本的なことをメモ。

空のプロジェクトを手で作る

EclipseなどのIDEを使えば自動で作ってくれると思うのだが、Emacsで書きたいので調べた。

コマンド1

以下のコマンドを叩けば良い。参考1, 参考2

mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-simple -DarchetypeVersion=1.4

group id/artifacto idなどを聞かれる

コマンド2

もしくはこっち。参考3

mvn archetype:generate \
  -DarchetypeArtifactId=maven-archetype-quickstart \
  -DinteractiveMode=false \
  -DgroupId={group-id} \
  -DartifactId={project-name}

こっちは引数で指定するパターン。まぁどっちでも良さそう

groupId, artifactIdについて

公式を読むと・・

  • group idは、そのプロジェクトを世界中で一意に識別できるもの。よくjavaで見る、ドメインをヒックリ返した文字列のことであろう。
  • artifact idは、version名を除いたjarファイルの名前だそうです

pacakgeについて

参考4

ソースの先頭にpackageを書くとそのクラスの所属するパッケージが定義される。

package info.hotoku;

public class App{
    static void main(String[] args){
    }
}

このクラスを実行する場合には、

$ java info.hotoku.App

というコマンドを実行する。

パッケージ名とクラスパスの関係に注意が必要である。例えば、上のように作ったプロジェクトで mvn compileをした時には、target/classes/info/hotoku/App.classというパスにクラスファイルが作成されるが、起動するときには

$ java -cp target/classes info.hotoku.App

を実行する。つまり、javaの引数に渡すクラス名には、パッケージ名のドメイン部分も含める。そして、class pathには、そのドメイン部分は含まない。

その他

  • mvn compile: jarを作る
  • mvn test: testを実行する