Debian 9 に Maven をインストール 、その後、動作確認
1. Debian 9 に Maven をインストールする。
# apt-get install maven ..snip.. maven (3.3.9-4) を設定しています ... update-alternatives: /usr/bin/mvn (mvn) を提供するために自動モードで /usr/share/maven/bin/mvn を使います
2. インストール後に Maven のバージョンを確認
# mvn -version Apache Maven 3.3.9 Maven home: /usr/share/maven Java version: 1.8.0_25, vendor: Oracle Corporation Java home: /usr/lib/jvm/jdk1.8.0_25/jre Default locale: ja_JP, platform encoding: UTF-8 OS name: "linux", version: "4.9.0-9-686-pae", arch: "i386", family: "unix"
3. プロジェクトの作成
途中、'groupID': は com.myapp を、'artifactId': は myapp を入力、それ以外は Enter を入力
$ mvn archetype:generate [INFO] Scanning for projects... Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom (4 KB at 0.9 KB/sec) Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-plugins/22/maven-plugins-22.pom ..snip.. Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 1470: 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 7: 1.3 8: 1.4 Choose a number: 8: .. snip .. 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: : [INFO] ---------------------------------------------------------------------------- [INFO] Using following parameters for creating project from Archetype: maven-archetype-quickstart:1.4 [INFO] ---------------------------------------------------------------------------- [INFO] Parameter: groupId, Value: com.myapp [INFO] Parameter: artifactId, Value: myapp [INFO] Parameter: version, Value: 1.0-SNAPSHOT [INFO] Parameter: package, Value: com.myapp [INFO] Parameter: packageInPathFormat, Value: com/myapp [INFO] Parameter: package, Value: com.myapp [INFO] Parameter: version, Value: 1.0-SNAPSHOT [INFO] Parameter: groupId, Value: com.myapp [INFO] Parameter: artifactId, Value: myapp [INFO] Project created from Archetype in dir: /home/xxxx/project/work/myapp .. snip .. [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 19:50 min [INFO] Finished at: 2020-01-26T15:45:40+09:00 [INFO] Final Memory: 13M/61M [INFO] ------------------------------------------------------------------------
4. 検証する。
$ cd myapp $ mvn validate [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building myapp 1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 0.977 s [INFO] Finished at: 2020-01-26T15:48:00+09:00 [INFO] Final Memory: 4M/15M [INFO] ------------------------------------------------------------------------
5. コンパイルする。
$ mvn compile [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building myapp 1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-resources-plugin/3.0.2/maven-resources-plugin-3.0.2.pom ..snip.. Downloaded: https://repo.maven.apache.org/maven2/com/thoughtworks/qdox/qdox/2.0-M9/qdox-2.0-M9.jar (310 KB at 34.4 KB/sec) [INFO] Changes detected - recompiling the module! [INFO] Compiling 1 source file to /home/xxxx/project/work/myapp/target/classes [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 01:22 min [INFO] Finished at: 2020-01-26T15:50:49+09:00 [INFO] Final Memory: 14M/37M [INFO] ------------------------------------------------------------------------
6. テストする。
~/project/work/myapp$ mvn test [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building myapp 1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-surefire-plugin/2.22.1/maven-surefire-plugin-2.22.1.pom ..snip.. Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/surefire/surefire-junit4/2.22.1/surefire-junit4-2.22.1.jar (83 KB at 48.7 KB/sec) [INFO] [INFO] ------------------------------------------------------- [INFO] T E S T S [INFO] ------------------------------------------------------- [INFO] Running com.myapp.AppTest [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.369 s - in com.myapp.AppTest [INFO] [INFO] Results: [INFO] [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 [INFO] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 56.263 s [INFO] Finished at: 2020-01-26T16:04:26+09:00 [INFO] Final Memory: 16M/40M [INFO] ------------------------------------------------------------------------
7. パッケージを生成する。
~/project/work/myapp$ mvn package [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building myapp 1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-jar-plugin/3.0.2/maven-jar-plugin-3.0.2.pom ..snip.. [INFO] Building jar: /home/xxxx/project/work/myapp/target/myapp-1.0-SNAPSHOT.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 28.561 s [INFO] Finished at: 2020-01-26T16:08:19+09:00 [INFO] Final Memory: 12M/97M [INFO] ------------------------------------------------------------------------
8. フォルダ構成を確認する。
$ tree . ├── pom.xml ├── src │ ├── main │ │ └── java │ │ └── com │ │ └── myapp │ │ └── App.java │ └── test │ └── java │ └── com │ └── myapp │ └── AppTest.java └── target ├── classes │ └── com │ └── myapp │ └── App.class ├── generated-sources │ └── annotations ├── generated-test-sources │ └── test-annotations ├── maven-archiver │ └── pom.properties ├── maven-status │ └── maven-compiler-plugin │ ├── compile │ │ └── default-compile │ │ ├── createdFiles.lst │ │ └── inputFiles.lst │ └── testCompile │ └── default-testCompile │ ├── createdFiles.lst │ └── inputFiles.lst ├── myapp-1.0-SNAPSHOT.jar ├── surefire-reports │ ├── TEST-com.myapp.AppTest.xml │ └── com.myapp.AppTest.txt └── test-classes └── com └── myapp └── AppTest.class 28 directories, 13 files
9. pom.xml を変更する。
pom.xml のバックアップを取ってから、編集する。
$ cp -aiv pom.xml pom.xml.`date +%Y%m%d` 'pom.xml' -> 'pom.xml.20200126' $ vi pom.xml $ diff -u pom.xml.`date +%Y%m%d` pom.xml --- pom.xml.20200126 2020-01-26 15:45:40.525060334 +0900 +++ pom.xml 2020-01-26 16:56:36.444269386 +0900 @@ -51,6 +51,15 @@ <plugin> <artifactId>maven-jar-plugin</artifactId> <version>3.0.2</version> + <configuration> + <archive> + <manifest> + <addClasspath>true</addClasspath> + <classpathPrefix>lib/</classpathPrefix> + <mainClass>com.myapp.App</mainClass> + </manifest> + </archive> + </configuration> </plugin> <plugin> <artifactId>maven-install-plugin</artifactId>
10. パッケージを再生成する。
clean してから package を作成する。
$ mvn clean [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building myapp 1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/3.1.0/maven-clean-plugin-3.1.0.pom $ mvn package [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building myapp 1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-resources-plugin:3.0.2:resources (default-resources) @ myapp --- [INFO] Using 'UTF-8' encoding to copy filtered resources. ..snip.. [INFO] --- maven-jar-plugin:3.0.2:jar (default-jar) @ myapp --- [INFO] Building jar: /home/xxxx/project/work/myapp/target/myapp-1.0-SNAPSHOT.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 16.653 s [INFO] Finished at: 2020-01-26T16:59:54+09:00 [INFO] Final Memory: 12M/99M [INFO] ------------------------------------------------------------------------
11. 動作を確認
作成後の jar ファイルを実行して動作を確認する。
$ LANG=C java -jar target/myapp-1.0-SNAPSHOT.jar Hello World!