Mavenのアーキタイプのメモ。
|
|
Mavenでは、「アーキタイプ」を用いてプロジェクトを作成する。
いわばテンプレート・雛形のことか。
archetype:generateにより、プロジェクトの雛形を生成できる。
D:\temp\pom> mvn archetype:generate
これを実行すると、雛形の選択肢が大量に出てくる(汗)
[INFO] Generating project in Interactive mode [INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0) Choose archetype: 1: remote -> com.agilejava.docbkx:docbkx-quickstart-archetype (-) 2: remote -> com.alibaba.citrus.sample:archetype-webx-quickstart (-) 3: remote -> com.bsb.common.vaadin:com.bsb.common.vaadin.embed-simple-archetype (-) 4: remote -> com.bsb.common.vaadin:com.bsb.common.vaadin7.embed-simple-archetype (-) 〜 201: remote -> org.apache.maven.archetypes:maven-archetype-portlet (An archetype which contains a sample JSR-268 Portlet.) 202: remote -> org.apache.maven.archetypes:maven-archetype-profiles (-) 203: remote -> org.apache.maven.archetypes:maven-archetype-quickstart (An archetype which contains a sample Maven project.) 204: remote -> org.apache.maven.archetypes:maven-archetype-site (An archetype which contains a sample Maven site which demonstrates some of the supported document types like 〜 613: remote -> se.vgregion.javg.maven.archetypes:javg-minimal-archetype (-) 614: remote -> sk.seges.sesam:sesam-annotation-archetype (-) Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 203:
どのアーキタイプを使用するか、番号を指定する。
今回はデフォルトが203(org.apache.maven.archetypes:maven-archetype-quickstart
)になっているので、それを選んでみる。
(これはシンプルなJavaプロジェクトのアーキタイプらしい)
すると、次に、そのアーキタイプのバージョンの入力を求められる。
Choose version: 1: 1.0-alpha-1 2: 1.0-alpha-2 3: 1.0-alpha-3 4: 1.0-alpha-4 5: 1.0 6: 1.1 Choose a number: 6:
そして、作りたいプロジェクトの情報(グループID等)を入力する。
この際、スペースを入れると、そのスペースもデータとして含まれてしまうので注意。
例えばartifactIdにスペースを入れてから値を入れると、スペース入りのディレクトリーが作られてしまう!
Define value for property 'groupId': :
Define value for property 'artifactId': :
Define value for property 'version': 1.0-SNAPSHOT: :
Define value for property 'package': com.example: :
Confirm properties configuration: 入力した内容の再確認
groupId: com.example
artifactId: example1
version: 1.0-SNAPSHOT
package: com.example
Y: :
[INFO] ---------------------------------------------------------------------------- [INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-quickstart:1.1 [INFO] ---------------------------------------------------------------------------- [INFO] Parameter: groupId, Value: com.example [INFO] Parameter: packageName, Value: com.example [INFO] Parameter: package, Value: com.example [INFO] Parameter: artifactId, Value: example1 [INFO] Parameter: basedir, Value: D:\temp\pom [INFO] Parameter: version, Value: 1.0-SNAPSHOT [INFO] project created from Old (1.x) Archetype in dir: D:\temp\pom\example1 [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------
定義名 | 内容 | 例 |
---|---|---|
groupId | グループ名。 | com.example |
artifactId | アーティファクト名。 プロジェクトのディレクトリー名になる。 また、このプロジェクトをビルドして出来るファイルのファイル名にも使われる。 |
example1 |
version | 今回作成するプロジェクトのバージョン。適当な文字列を付ける。 このプロジェクトをビルドして出来るファイルのファイル名の一部に使われる。 |
1.0-SNAPSHOT |
package | パッケージ名。デフォルトはgroupIdと同じ。 このプロジェクトで生成するJavaソースのpackageとなる。 |
com.example |
この例だとexample1というディレクトリーが作られ、その下にpom.xmlとデフォルトのソースファイル等が作られる。
D:\temp\pom> tree /f example1 D:\TEMP\POM\EXAMPLE1 │ pom.xml │ └─src ├─main │ └─java │ └─com │ └─example │ App.java │ └─test └─java └─com └─example AppTest.java
今回使ったアーキタイプの場合、App.javaと、そのテスト用クラスであるAppTest.javaが作られる。
ディレクトリー構成はsrc/main/javaの下にJavaソース、src/test/javaの下にテストソースを置く。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>example1</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>example1</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
最初の選択肢が多すぎるので、絞ることが出来る。
filterを指定すると、指定した文字列が含まれるものだけ抽出する。
mvn archetype:generate -Dfilter=org.apache.maven.archetypes:maven-archetype-quickstart mvn archetype:generate -Dfilter=org.apache.maven.archetypes: mvn archetype:generate -Dfilter=maven-archetype-quickstart
:
」で、指定した文字列がグループIDに含まれているものだけ抽出する。:
文字列」または「文字列」で、指定した文字列がアーティファクトIDに含まれるものだけ抽出する。:
文字列」で、指定した文字列がグループIDおよびアーティファクトIDに含まれるものだけ抽出する。archetypeCatalogを指定すると、カタログファイル内に指定されているものだけ抽出する。
mvn archetype:generate -DarchetypeCatalog=http://asakusafw.s3.amazonaws.com/maven/archetype-catalog.xml
interactiveModeをfalseにすることで、対話形式でなく全自動で作ることも出来る。
定義名 | 内容 | 例 |
---|---|---|
interactiveMode | 対話形式でパラメーターを指定するかどうか。 | -DinteractiveMode=false |
archetypeGroupId archetypeArtifactId archetypeVersion |
雛形となるアーキタイプの指定。 | |
groupId artifactId version package |
生成するプロジェクトの情報。 | |
packaging | プロジェクトをビルドすることによって生成するファイルの種類。 | -Dpackaging=jar |
mvn archetype:generate -DinteractiveMode=false ^
-DarchetypeGroupId=org.apache.maven.archetypes ^
-DarchetypeArtifactId=maven-archetype-quickstart ^
-DarchetypeVersion=1.1 ^
-DgroupId=com.example ^
-DartifactId=example2 ^
-Dversion=1.0-SNAPSHOT ^
-Dpackage=com.example ^
-Dpackaging=jar
Mavenでは、Eclipseのプロジェクトの設定を生成することが出来る。
pom.xmlのあるディレクトリーで、「eclipse:eclipse」を実行する。
D:\temp\pom> cd example1 D:\temp\pom\example1> mvn eclipse:eclipse
これにより、Eclipseの「.project
」「.classpath
」ファイルが作られる。
そして、このexample1をEclipseからインポートすることが出来る。