PancrasL的博客

maven

2022-01-06

img

Maven的生命周期

img

阶段 处理 描述
验证 validate 验证项目 验证项目是否正确且所有必须信息是可用的
编译 compile 执行编译 源代码编译在此阶段完成
测试 Test 测试 使用适当的单元测试框架(例如JUnit)运行测试。
包装 package 打包 创建JAR/WAR包如在 pom.xml 中定义提及的包
检查 verify 检查 对集成测试的结果进行检查,以保证质量达标
安装 install 安装 安装打包的项目到本地仓库,以供其他项目使用
部署 deploy 部署 拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程

常用Maven命令

  • 安装单独的jar包到本地仓库
1
$ mvn install:install-file -Dfile=sparrow-core-1.0-SNAPSHOT-jar-with-dependencies.jar -DgroupId=github.pancras -DartifactId=sparrow-core -Dversion=1.0-SNAPSHOT -Dpackaging=jar
  • 将源码一同发布到本地仓库
1
$ mvn clean source:jar install
  • 将依赖也打包进jar

添加依赖,并使用assembly:assembly打包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5.5</version>
<configuration>
<archive>
<manifest>
<mainClass>github.pancras.NettyServerMain</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
1
$ mvn assembly:assembly
  • 测试
1
2
3
4
5
# 执行测试
$ mvn clean test
# 跳过测试
$ mvn clean package -DskipTests=true

  • 运行jar
1
2
$ java -classpath **.jar **.**.className
$ mvn exec:java -Dexec.mainClass="MainApplication"
  • 打包
1
2
3
4
5
$ mvn clean install -DskipTests=true
# 对指定模块及其依赖的模块进行操作
$ mvn clean package -pl
# 打包并进行格式检查
$ mvn clean package -P checkstyle -DskipTests
  • seata安装
1
$ mvn clean install -P checkstyle -DskipTests
  • 引入外部依赖

先在 src 文件夹下添加 lib 文件夹,然后将你工程需要的 jar 文件复制到 lib 文件夹下。我们使用的是 ldapjdk.jar.

1
2
3
4
5
6
7
8
9
10
<dependencies>
<!-- 在这里添加你的依赖 -->
<dependency>
<groupId>ldapjdk</groupId> <!-- 库名称,也可以自定义 -->
<artifactId>ldapjdk</artifactId> <!--库名称,也可以自定义-->
<version>1.0</version> <!--版本号-->
<scope>system</scope> <!--作用域-->
<systemPath>${basedir}\src\lib\ldapjdk.jar</systemPath> <!--项目根目录下的lib文件夹下-->
</dependency>
</dependencies>

Maven模板文件

  • 父模块
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>org.example</groupId>
<artifactId>java-spi</artifactId>
<version>1.0-SNAPSHOT</version>

<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>

</project>
  • 子模块
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>indi.pancras</groupId>
<artifactId>java-spi</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>

<artifactId>demo</artifactId>

</project>