应该记住的Maven命令可以在TERASOLUNA5.x中学习
首先/一开始
在TERASOLUNA Server Framework for Java (5.x)中,我们使用Maven作为构建工具。在本次讲解中,我将解释一些在TERASOLUNA5.x的Web应用开发中经常使用和记忆的Maven命令。
另外,请参考“在Windows上安装Maven(通过代理/NEXUS)的方法”以了解Maven的安装步骤。
1.1. 验证环境
-
- Java 1.8.0_131
-
- TERASOLUNA Server Framework for Java 5.3.0
-
- Apache Maven 3.3.9
- SonarQube 4.5.2
1.2. 需要记住的Maven命令
mvn package
親プロジェクト2テストをスキップしてビルドするmvn package -Dmaven.test.skip=true
親プロジェクト3javadocを出力するmvn javadoc:javadoc
domainプロジェクト4JUnitテストを実行するmvn test
親プロジェクト5Sonarによる静的ソースコード解析を実行するmvn sonar:sonar
親プロジェクト1.3 项目构成
我打算利用本次的「将TERASOLUNA5.x的空白项目转换为支持PostgreSQL的方法」所创建的项目来进行讲解。
C:\work
└─demo-database-postgresql // 親プロジェクト
├─demo-database-postgresql-domain // domainプロジェクト
├─demo-database-postgresql-env // envプロジェクト
├─demo-database-postgresql-initdb // initdbプロジェクト
├─demo-database-postgresql-selenium // seleniumプロジェクト
├─demo-database-postgresql-web // webプロジェクト
└─pom.xml // 親pom
2. 進行建設
在TERASOLUNA5.x中,通过在父项目中执行mvn package命令来进行构建,这个构建过程包括编译Java文件并生成class文件,然后创建jar文件或war文件。
C:\work\demo-database-postgresql>mvn package
[INFO] Scanning for projects...
...省略...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] TERASOLUNA Server Framework for Java (5.x) Web Blank Multi Project (MyBatis3) SUCCESS [ 0.016 s]
[INFO] demo-database-postgresql-env ....................... SUCCESS [ 1.700 s]
[INFO] demo-database-postgresql-domain .................... SUCCESS [ 0.375 s]
[INFO] demo-database-postgresql-web ....................... SUCCESS [ 2.199 s]
[INFO] demo-database-postgresql-initdb .................... SUCCESS [ 0.032 s]
[INFO] demo-database-postgresql-selenium .................. SUCCESS [ 0.327 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5.179 s
[INFO] Finished at: 2017-09-04T18:59:36+09:00
[INFO] Final Memory: 22M/54M
[INFO] ------------------------------------------------------------------------
C:\work\demo-database-postgresql>
跳过测试并构建
如果在Maven的构建过程中,如果JUnit测试类包含在src/test目录中,那么会执行这些测试。
要禁止执行测试,需要设置maven.test.skip=true系统属性。
mvn package -Dmaven.test.skip=true
生成 javadoc
如果想要生成javadoc文档,可以执行mvn javadoc:javadoc命令。
默认情况下,可以在domain项目中生成javadoc文档。
如果想在web项目中生成javadoc文档,需要处理项目间的依赖关系错误。
C:\work\demo-database-postgresql\demo-database-postgresql-domain>mvn javadoc:javadoc
[INFO] Scanning for projects...
...省略...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5.388 s
[INFO] Finished at: 2017-09-04T20:13:24+09:00
[INFO] Final Memory: 16M/39M
[INFO] ------------------------------------------------------------------------
C:\work\demo-database-postgresql\demo-database-postgresql-domain>
可以在domain项目/site/apidocs/index.html中查看生成的javadoc。
执行JUnit测试
如果只想执行JUnit测试,可以使用”mvn test”命令来执行。
默认情况下,您可以在父项目中执行JUnit测试。
与javadoc类似,如果只想在web项目或领域项目中执行测试,就需要解决依赖关系错误。
C:\work\demo-database-postgresql>mvn test
[INFO] Scanning for projects...
...省略...
-------------------------------------------------------
T E S T S
-------------------------------------------------------
...省略...
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.183 sec
Results :
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0
...省略...
C:\work\demo-database-postgresql>
使用声纳执行静态源代码分析。
如果要执行基于Sonar的静态源代码分析,可以使用mvn sonar:sonar命令完成。
请注意,在执行此命令之前,需要先启动Sonar服务器。
C:\work\demo-database-postgresql>mvn sonar:sonar
[INFO] Scanning for projects...
...省略...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] TERASOLUNA Server Framework for Java (5.x) Web Blank Multi Project (MyBatis3) [ 24.196 s]
[INFO] demo-database-postgresql-env ....................... SKIPPED
[INFO] demo-database-postgresql-domain .................... SKIPPED
[INFO] demo-database-postgresql-web ....................... SKIPPED
[INFO] demo-database-postgresql-initdb .................... SKIPPED
[INFO] demo-database-postgresql-selenium .................. SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 25.039 s
[INFO] Finished at: 2017-09-04T21:39:37+09:00
[INFO] Final Memory: 39M/172M
[INFO] ------------------------------------------------------------------------
C:\work\demo-database-postgresql>
Sonar已经内置了用于演示的内存数据库h2db。
在实际的系统开发中,为了持续保留静态源代码分析的结果,通常需要在Sonar之外准备一个专用的数据库。
在这种情况下,可以通过系统属性指定数据库的连接信息。
mvn sonar:sonar -Dsonar.host.url=http://localhost:9000 -Dsonar.jdbc.url=jdbc:postgresql://localhost:5432/sonardb -Dsonar.jdbc.username=sonarUser -Dsonar.jdbc.password=sonarPass
ここではPostgreSQLを利用し、sonardbというデータベースを指定している3sonar.jdbc.usernamesonarUser2のdbに接続する際のユーザID4sonar.jdbc.passwordsonarPass2のdbに接続する際のユーザのパスワード
最后
我解释了在开发TEARSOLUNA5.x的Web应用程序时经常使用的Maven命令。我认为在Java系统开发中,我在这里解释的内容(构建,输出javadoc,执行JUnit等)都是经常使用的。
能够通过命令执行,意味着可以在Jenkins等持续集成服务器上执行。尽量将其集成到持续集成中,并实现自动执行。
补充一下,在这里解释的Maven命令是通用的,只要Maven项目的配置正确,不仅限于TEASOLUNA5.x,也可以正常运行。