6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

コマンドでMavenプロジェクトを作ります

Last updated at Posted at 2019-03-21

Mavenは、コマンドを使って簡単にJavaやScalaいるんなプロジェクトの作成、Jarのビルドが行なえます。
Mavenのメリットは、プロジェクトのビルドに依存するさまざまなライブラリやリソースを管理してくれることができます。

Mavenプロジェクトの構造

代表的なMavenプロジェクトの構造は以下の通りになります。
MavenProject
┣━src
┃ ┣━main
┃ ┃ ┣━java
┃ ┃ ┗━resource
┃ ┗━test
┃ ┣━java
┃ ┗━resource
┗━pom.xml

Mavenプロジェクト作成

ローカル上、Mavenのコマンドで必要になったディレクトリを作成することができます。
例えば、MvnJavaプロジェクトを作ります。

cd /work
mvn archetype:generate \
  -DarchetypeArtifactId=maven-archetype-quickstart \
  -DinteractiveMode=false \
  -DgroupId=com.demo \
  -DartifactId=MvnJava

作成されたディレクトリは以下の通り。
MvnJava
┣━src
┃ ┣━main
┃ ┃ ┣━java
┃ ┃ ┃ ┗━main
┃ ┃ ┃   ┗━java
┃ ┃ ┃    ┗━com
┃ ┃ ┃     ┗━domo
┃ ┃ ┃      ┗━App.java
┃ ┃ ┗━resource
┃ ┗━test
┃ ┣━java
┃ ┃ ┗━java
┃ ┃   ┗━com
┃ ┃    ┗━domo
┃ ┃     ┗━AppText.java
┃ ┗━resource
┗━pom.xml
App.javaの中身は以下

package com.demo;
/**
 * Hello world!
 *
 */
public class App
{
    public static void main( String[] args )
    {
        System.out.println( "Hello World!" );
    }
}

AppTest.javaの中身は以下

package com.demo;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
/**
 * Unit test for simple App.
 */
public class AppTest
    extends TestCase
{
    /**
     * Create the test case
     *
     * @param testName name of the test case
     */
    public AppTest( String testName )
    {
        super( testName );
    }
    /**
     * @return the suite of tests being tested
     */
    public static Test suite()
    {
        return new TestSuite( AppTest.class );
    }
    /**
     * Rigourous Test :-)
     */
    public void testApp()
    {
        assertTrue( true );
    }
}

pom.xmlの編集

pomとは、「project object model」の略で、プロジェクトのさまざまな情報を扱うためのオブジェクトモデルです。pom.xmlでは、プロジェクトの設定をxmlのタグとして記述していきます。
今度、JUnitテストを行うために、テストに依存するライブラリを追加します。

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.demo</groupId>
  <artifactId>MvnJava</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>MvnJava</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
</project>

Mavenプロジェクトのコンパイル

Mavenプロジェクトをコンパイルします。

cd /work/MvnJava
mvn compile
# 下の結果が表示されたらコンパイル完了
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

targetディレクトリが作成されます。

JUnitテストに依存するJarは以下の場所に置かれてあります。

ls /Users/username/.m2/repository/junit/junit/3.8.1/
junit-3.8.1.jar	

JUnitの実施

mvn test
# 結果
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.demo.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.01 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 19.083 s
[INFO] Finished at: 2019-03-21T16:59:50+09:00
[INFO] ------------------------------------------------------------------------

Jarのビルド

mvn package
# 結果
[INFO] Building jar: /work/MvnJava/target/MvnJava-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 14.768 s
[INFO] Finished at: 2019-03-21T17:12:01+09:00
[INFO] ------------------------------------------------------------------------

MvnJava-1.0-SNAPSHOT.jarは、ビルドできたJarです。

Jarの実行

java -cp /work/MvnJava/target/MvnJava-1.0-SNAPSHOT.jar com.demo.App 
# 結果
Hello World!

Mavenよく使うコマンド

                              
mvn -v: Mavenバージョンを確認します。利用中のJDKの情報も含めます。
mvn compile: Maven内の項目をコンパイルします。Mavenディレクトリの直下にtargetディレクトリが生成されます。その中にクラスが置かれているclassesディレクトリなどが作成されています。
mvn test: Mavenのテストを実行します。そのためには、Targetディレクトリの中にテスト用のクラスとテスト結果を作成されます。
mvn package: Mavenプロジェクトをコンパイルして、targetディレクトリにビルドします。
mvn clean: targetディレクトリを削除します。
mvn install: ローカルリポジトリにインストールする。
6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?