Maven cheatsheet
通用语法:
mvn plugin:target [-Doption1 -Doption2 dots]
常见命令
code | desc |
---|---|
clean | 删除target目录 |
validate | 验证项目是否正确 |
compile | 编译源代码,类存储在 target/classes |
test | 运行测试 |
package | 将编译后的代码打包成可分发的格式,例如 jar ,war |
verify | 运行任何检查以验证 MVN 包是否有效并符合质量标准 |
install | 将包安装到本地 repository 中 |
deploy | 将最终的 MVN 包复制到远程 repository |
clean
可以复合使用,例如mvn clean package
,mvn clean install
,进行全新的打包或安装。
创建新项目
打包成 jar
mvn archetype:create -DgroupId=Artifact Group
-DartifactId=Artifact ID
打包成 war
mvn archetype:create
-DgroupId=Artifact Group
-DartifactId=Artifact ID
-DarchetypeArtifactId=maven-archetype-webapp
安装第三方包到本地仓库
mvn install:install-file -Dfile=foo.jar
-DgroupId=org.foosoft -DartifactId=foo
-Dversion=1.2.3 -Dpackaging=jar
添加依赖
<project>
…
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>1.2.6</version>
</dependency>
…
</dependencies>
依赖作用域(scope)
compile
默认的scope
,编译依赖项在项目的所有类路径中都可用,并且依赖关系会传播。
provided
很像compile
,单表明希望JDK
或容器在运行时提供依赖项。例如,在为 Java Enterprise Edition
构建 Web
应用程序时,您可以将 Servlet API
和相关 Java EE API
的依赖项设置为提供的范围,因为 Web
容器提供这些类。具有此范围的依赖项被添加到用于编译和测试的类路径中,但不会添加到运行时类路径中。它不是传递性的。
runtime
此scope
表示该依赖项不是编译所必需的,而是执行所必需的。 Maven
在运行时和测试类路径中包含具有此范围的依赖项,但不包含在编译类路径中。
test
该作用域表示应用程序的正常使用不需要依赖,仅在测试编译和执行阶段可用。此作用域不可传递。通常,此范围用于测试库,例如 JUnit
和 Mockito
。如果这些库用于单元测试 (src/test/java)
但不在模型代码 (src/main/java)
中,它也可用于非测试库,例如 Apache Commons IO
。
system
类似于provided
,但必须提供明确包含它的 JAR
。该包始终可用,不会在存储库中查找。
import
仅在 <dependencyManagement>
部分中的 pom
类型依赖项上受支持。它指示依赖项将替换为指定 POM
的 <dependencyManagement
> 部分中的有效依赖项列表。由于它们被替换,不具备传递性。
添加开发者信息
<project>
…
<developers>
<developer>
<id>Baier</id>
<name>Hans Baier</name>
<email>hans.baier::at::focus-dv.de</email>
<organization>focus DV GmbH</organization>
<roles>
<role>Developer</role>
</roles>
</developer>
…
</developers>
设置编译器版本
<project>
…
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
…
</plugins>
</build>