20多个Maven命令和选项(速查表)

时间:2020-02-23 14:41:34  来源:igfitidea点击:

如果您使用Java,则必须了解Maven。
Maven是最流行的Java应用程序项目和依赖管理工具。
Maven提供了许多命令和选项来帮助我们完成日常任务。

Maven命令

让我们研究一些流行的必须知道的Maven命令。
我们将使用一个示例Maven项目来展示命令输出。

1.mvn clean

此命令通过删除目标目录来清理Maven项目。
命令输出相关消息如下所示。

$mvn clean
...
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ maven-example-jar --
[INFO] Deleting /Users/hyman/Desktop/maven-examples/maven-example-jar/target
...
$

2. mvn compiler:compile

此命令编译maven项目的java源类。

$mvn compiler:compile
...
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-cli) @ maven-example-jar --
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to /Users/hyman/Desktop/maven-examples/maven-example-jar/target/classes
...
$

3. mvn compiler:testCompile

此命令编译maven项目的测试类。

$mvn compiler:testCompile
...
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-cli) @ maven-example-jar --
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to /Users/hyman/Desktop/maven-examples/maven-example-jar/target/test-classes
...
$

4. mvn package

此命令将构建Maven项目并将其打包到JAR,WAR等中。

$mvn package
...
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ maven-example-jar --
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to /Users/hyman/Desktop/maven-examples/maven-example-jar/target/classes
...
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ maven-example-jar --
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to /Users/hyman/Desktop/maven-examples/maven-example-jar/target/test-classes
[INFO] 
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ maven-example-jar --
[INFO] Surefire report directory: /Users/hyman/Desktop/maven-examples/maven-example-jar/target/surefire-reports

------------------------------------------------------
 T E S T S
------------------------------------------------------
Running com.theitroad.maven.classes.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.005 sec

Results :

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

[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ maven-example-jar --
[INFO] Building jar: /Users/hyman/Desktop/maven-examples/maven-example-jar/target/maven-example-jar-0.0.1-SNAPSHOT.jar
[INFO] -----------------------------------------------------------------------
[INFO] BUILD SUCCESS
...

输出显示JAR文件的位置,恰好在" BUILD SUCCESS"消息之前。
请注意,打包目标在打包构建版本之前先执行compile,testCompile和test目标。

5. mvn install

此命令将构建Maven项目并将项目文件(JAR,WAR,pom.xml等)安装到本地存储库。

$mvn install
...
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ maven-example-jar --
...
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ maven-example-jar --
...
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ maven-example-jar --
...
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ maven-example-jar --
...
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ maven-example-jar --
...
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ maven-example-jar --
...
[INFO] --- maven-install-plugin:2.4:install (default-install) @ maven-example-jar --
[INFO] Installing /Users/hyman/Desktop/maven-examples/maven-example-jar/target/maven-example-jar-0.0.1-SNAPSHOT.jar to /Users/hyman/.m2/repository/com/theitroad/maven/maven-example-jar/0.0.1-SNAPSHOT/maven-example-jar-0.0.1-SNAPSHOT.jar
[INFO] Installing /Users/hyman/Desktop/maven-examples/maven-example-jar/pom.xml to /Users/hyman/.m2/repository/com/theitroad/maven/maven-example-jar/0.0.1-SNAPSHOT/maven-example-jar-0.0.1-SNAPSHOT.pom
...

6. mvn部署

此命令用于将工件部署到远程存储库。
应该在项目pom.xml文件distributionManagement标记中正确配置远程存储库。
maven settings.xml文件中的服务器条目用于提供身份验证详细信息。

7. mvn deploy

此命令验证Maven项目是否一切正确,并且所有必要的信息均可用。

8. mvn dependency:tree

此命令生成Maven项目的依赖关系树。

$mvn dependency:tree
...
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ Mockito-Examples --
[INFO] com.theitroad.mockito:Mockito-Examples:jar:1.0-SNAPSHOT
[INFO] +- org.junit.platform:junit-platform-runner:jar:1.2.0:test
[INFO] |  +- org.apiguardian:apiguardian-api:jar:1.0.0:test
[INFO] |  +- org.junit.platform:junit-platform-launcher:jar:1.2.0:test
[INFO] |  \- org.junit.platform:junit-platform-suite-api:jar:1.2.0:test
[INFO] |     \- org.junit.platform:junit-platform-commons:jar:1.2.0:test
[INFO] +- org.junit.jupiter:junit-jupiter-engine:jar:5.2.0:test
[INFO] |  +- org.junit.platform:junit-platform-engine:jar:1.2.0:test
[INFO] |  |  \- org.opentest4j:opentest4j:jar:1.1.0:test
[INFO] |  \- org.junit.jupiter:junit-jupiter-api:jar:5.2.0:test
[INFO] +- org.mockito:mockito-junit-jupiter:jar:2.19.0:test
[INFO] |  \- org.mockito:mockito-core:jar:2.19.0:test
[INFO] |     +- net.bytebuddy:byte-buddy:jar:1.8.10:test
[INFO] |     +- net.bytebuddy:byte-buddy-agent:jar:1.8.10:test
[INFO] |     \- org.objenesis:objenesis:jar:2.6:test
[INFO] \- org.testng:testng:jar:6.14.3:test
[INFO]    +- com.beust:jcommander:jar:1.72:test
[INFO]    \- org.apache-extras.beanshell:bsh:jar:2.0b6:test

9. mvn dependency:analyze

此命令分析maven项目以标识未使用的已声明和已使用的未声明依赖项。
通过识别未使用的依赖项并将其从pom.xml文件中删除,可以减小构建大小。

$mvn dependency:analyze
...
[INFO] --- maven-dependency-plugin:2.8:analyze (default-cli) @ Mockito-Examples --
[WARNING] Used undeclared dependencies found:
[WARNING]    org.junit.jupiter:junit-jupiter-api:jar:5.2.0:test
[WARNING]    org.mockito:mockito-core:jar:2.19.0:test
[WARNING] Unused declared dependencies found:
[WARNING]    org.junit.platform:junit-platform-runner:jar:1.2.0:test
[WARNING]    org.junit.jupiter:junit-jupiter-engine:jar:5.2.0:test
[WARNING]    org.mockito:mockito-junit-jupiter:jar:2.19.0:test
...
$

10. mvn archetype:generate

Maven原型是一个Maven项目模板工具包。
我们可以使用此命令生成不同类型的骨架Maven项目,例如JAR,Web应用程序,Maven站点等。

推荐读物:使用Maven原型创建Java项目

11. mvn:site

此命令为项目生成一个站点。
执行此命令后,您将在目标中注意到一个"站点"目录。
目录中将有多个HTML文件,这些文件提供与项目有关的信息。

12.mvn test

该命令用于使用maven-surefire-plugin运行项目的测试用例。

$mvn test
...
[INFO] --- maven-surefire-plugin:2.22.0:test (default-test) @ Mockito-Examples --
[INFO] 
[INFO] ------------------------------------------------------
[INFO]  T E S T S
[INFO] ------------------------------------------------------
[INFO] Running TestSuite
first-element
second-element
Employee setName Argument = hyman
...
[INFO] Results:
[INFO] 
[INFO] Tests run: 5, Failures: 0, Errors: 0, Skipped: 0
...
$

13. mvn compile

它用于编译项目的源Java类。

$mvn compile
...
[INFO] --- maven-compiler-plugin:3.7.0:compile (default-compile) @ Mockito-Examples --
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
[INFO] Compiling 10 source files to /Users/hyman/Desktop/maven-examples/Mockito-Examples/target/classes
...
$

14.mvn verify

此命令将构建项目,运行所有测试用例,并对集成测试的结果进行任何检查,以确保符合质量标准。

Maven选项

Maven提供了许多命令行选项来更改Maven构建过程。
让我们看一些重要的Maven选项。

15. mvn -help

此命令将打印Maven用法和所有可用选项供我们使用。

16. mvn -f maven-example-jar/pom.xml package

此命令用于从其他位置构建项目。
我们提供pom.xml文件位置来构建项目。
当您必须通过脚本运行Maven构建时,此功能非常有用。

17. mvn -o package

此命令用于在脱机模式下运行Maven构建。
当我们在本地存储库中下载了所有必需的JAR且不希望Maven在远程存储库中查找任何JAR时,这很有用。

18. mvn -q package

在安静模式下运行Maven构建,仅显示测试用例结果和错误。

$mvn -q package         

------------------------------------------------------
 T E S T S
------------------------------------------------------
Running com.theitroad.maven.classes.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.006 sec

Results :

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

19. mvn -X package

打印Maven版本并在调试模式下运行构建。
它与安静模式相反,您会在控制台中看到很多调试消息。

20. mvn -v

用于显示Maven版本信息。

$mvn -v
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /Users/hyman/Downloads/apache-maven-3.6.3
Java version: 13.0.1, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home
Default locale: en_IN, platform encoding: UTF-8
OS name: "mac os x", version: "10.15.1", arch: "x86_64", family: "mac"
$

21. mvn -V package

此命令将打印Maven版本,然后继续进行构建。
等效于命令mvn -v; mvn package

22. mvn -DskipTests package

skipTests系统属性用于从构建周期中跳过单元测试用例。
我们也可以使用-Dmaven.test.skip = true来跳过测试用例的执行。

23. mvn -T 4 package

该命令告诉maven使用指定的线程数运行并行构建。
在可以并行构建模块的多个模块项目中很有用。
它可以减少项目的构建时间。