专注Java教育14年 全国咨询/投诉热线:444-1124-454
星辉LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 Maven命令和选项

Maven命令和选项

更新时间:2021-10-13 10:55:31 来源:星辉 浏览672次

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

Maven 命令

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

1.mvn 清洁

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

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

2.mvn 编译器:编译

该命令编译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/pankaj/Desktop/maven-examples/maven-example-jar/target/classes
...
$

3.mvn 编译器: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/pankaj/Desktop/maven-examples/maven-example-jar/target/test-classes
...
$

4.mvn包

此命令构建 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/pankaj/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/pankaj/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/pankaj/Desktop/maven-examples/maven-example-jar/target/surefire-reports
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.journaldev.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/pankaj/Desktop/maven-examples/maven-example-jar/target/maven-example-jar-0.0.1-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
...

输出在“BUILD SUCCESS”消息之前显示 JAR 文件的位置。请注意,包目标在打包构建之前执行 compile、testCompile 和 test 目标。

5.mvn 安装

此命令构建 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/pankaj/Desktop/maven-examples/maven-example-jar/target/maven-example-jar-0.0.1-SNAPSHOT.jar to /Users/pankaj/.m2/repository/com/journaldev/maven/maven-example-jar/0.0.1-SNAPSHOT/maven-example-jar-0.0.1-SNAPSHOT.jar
[INFO] Installing /Users/pankaj/Desktop/maven-examples/maven-example-jar/pom.xml to /Users/pankaj/.m2/repository/com/journaldev/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 验证

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

8.mvn 依赖:树

该命令生成maven项目的依赖树。

$ mvn dependency:tree
...
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ Mockito-Examples ---
[INFO] com.journaldev.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 依赖:分析

此命令分析 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 原型:生成

Maven archetypes 是一个 Maven 项目模板工具包。我们可以使用这个命令来生成不同类型的maven项目骨架,比如JAR、web应用、maven站点等。

11.mvn 站点:站点

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

12.mvn测试

此命令用于运行项目的测试用例,使用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 = Pankaj
...
[INFO] Results:
[INFO] 
[INFO] Tests run: 5, Failures: 0, Errors: 0, Skipped: 0
...
$

13.mvn 编译

它用于编译项目的源 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/pankaj/Desktop/maven-examples/Mockito-Examples/target/classes
...
$

14.mvn 验证

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

Maven 选项

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

15.mvn -帮助

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

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

此命令用于从不同位置构建项目。我们提供了 pom.xml 文件位置来构建项目。当您必须从脚本运行 Maven 构建时,它很有用。

17.mvn -o 包

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

18.mvn -q 包

以安静模式运行maven build,只显示测试用例结果和错误。

$ mvn -q package         
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.journaldev.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 包

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

20.mvn -v

用于显示maven版本信息。

$ mvn -v
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /Users/pankaj/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 包

此命令打印 Maven 版本,然后继续构建。它相当于命令mvn -v;mvn package。

22.mvn -DskipTests 包

该skipTests系统属性用于跳过从构建循环单元测试用例。我们还可以使用-Dmaven.test.skip=true跳过测试用例执行。

23.mvn -T 4 包

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

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>