Help us understand the problem. What is going on with this article?

よく使うMavenコマンド集

More than 3 years have passed since last update.

仕事上によく使うMavenのコマンド集を整理しました。

検証環境

・macOS Sierra
・java version 1.8.0_111
・Apache Maven 3.3.9

コマンド集

Mavenのインストール

tarファイルを解凍し、PATHに追加するためにbash_profileにM3_HOMEを追記する。

$ tar xzvf apache-maven-3.3.9-bin.tar 
$ vi ~/.bash_profile
bash_profile
export M3_HOME=/Users/local/apache-maven-3.3.9
M3=$M3_HOME/bin
export PATH=$M3:$PATH

インストール後の確認

$ mvn --version

雛形プロジェクトの作成。

$ mvn -B archetype:generate \
 -DarchetypeGroupId=org.apache.maven.archetypes \
 -DgroupId=com.myapp \
 -DartifactId=myapp

またはmvn archetype:generateで対話式でプロジェクト新規作成できる。

$ mvn archetype:generate

Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 923: 
Choose org.apache.maven.archetypes:maven-archetype-quickstart 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: 
Define value for property 'groupId': : com.myapp
Define value for property 'artifactId': : myapp
Define value for property 'version':  1.0-SNAPSHOT: : 
Define value for property 'package':  com.myapp: : 
Confirm properties configuration:
groupId: com.myapp
artifactId: myapp
version: 1.0-SNAPSHOT
package: com.myapp
 Y: : 

プロジェクト検証

コンパイルを実行せず、プロジェクトに誤りがないかをチェックする。

$ mvn validate

コンパイル

プロジェクトをコンパイルする

$ mvn compile

コンパイル時JDKバーションまたは、JVMオプションを指定する場合、pom.xmlに以下の情報を追記する。

pom.xml
<project>
  ...

  <build>
    <plugins>
      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.3</version>
          <configuration>
              <source>1.8</source>
              <target>1.8</target>
              <encoding>UTF-8</encoding>
              <compilerArgs>
                  <arg>-g</arg>
                  <arg>-Xlint</arg>
              </compilerArgs>
          </configuration>
      </plugin>
    </plugins>
  </build>

</project>

テストの実行

Junitテストクラスの実行

$ mvn test

特定のクラスのみテストを実行する。

$ mvn test -Dtest=BlogicTest

特定のクラス、特定メソッドのみテストを実行する。

$ mvn test -Dtest= BlogicTest#blogicTest1

ワイルドカードを使って対象となるテストクラスを一括実行する。

$ mvn test -Dtest=Blogic*Test

パッケージ生成

JAR、WAR等の成果物を生成する。
packageを実行すればvaliate、compile、test、packageのフェーズも実行される。

$ mvn package

テストコードの実行をスキップし、JARを生成する。

$ mvn package -DskipTests

テストコードのコンパイル、およびテストの実行をスキップする。

$ mvn package -Dmaven.test.skip

インストール

JARをローカルリポジトリにインストールする。

$ mvn install

サードパーティJARをローカルリポジトリにインストールする。

mvn install:install-file -Dfile=target/foo.jar -DgroupId=com.foo -DartifactId=foo \
-Dversion=1.0 -Dpackaging=jar -DgeneratePom=true

テストコードの実行をスキップする。

$ mvn install -DskipTests

テストコードのコンパイル、およびテストの実行をスキップする。

$ mvn install -Dmaven.test.skip

デプロイ

パッケージをリモートリポジトリに登録する。
deployを実行すれば、その前のフェーズが全部実行される。

$ mvn deploy

Clean

targetディレクトリを削除する。

$ mvn clean

package、installの先に実行するのは一般的です。

$ mvn clean package
$ mvn clean install

情報表示

プロジェクトが持つ依存関係をtreeで表示する。

$ mvn dependency:tree

デフォルト設定を含め、pomファイルの情報を表示する。

$ mvn help:effective-pom

デフォルト設定を含め、設定ファイルの情報を表示する。

$ mvn help:effective-settings

ANT用build.xmlの生成

maven-ant-pluginを利用して、ant用build.xmlを生成する。

$ mvn ant:ant
$ tree
.
├── build.xml
├── maven-build.properties
├── maven-build.xml
├── pom.xml
└── src
    ├── main
    │   └── java
    │       └── com
    │           └── myapp
    │               └── App.java
    └── test
        └── java
            └── com
                └── myapp
                    └── AppTest.java

Eclipse用プロジェクトの生成

maven-eclipse-pluginを利用して.project.classpathが生成され、Eclipseでインポートできるようになる。

$ mvn eclipse:eclipse

ライブラリの出力

dependency-maven-pluginを利用し、依存するライブラリを特定のディレクトリにコピーする。

$ mvn dependency:copy-dependencies -DoutputDirectory=lib

アセンブリの出力

maven-assembly-pluginを利用して、ビルド済みのプロジェクトから実行可能Jar(アセンブリ)を作成する。

$ mvn assembly:assembly -DdescriptorId=bin

Javadoc

Javadocを生成する。

$ mvn javadoc:javadoc

ライブラリソース

依存しているライブラリのソースを出力する。

$ mvn dependency:sources
KevinFQ
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした