MAVEN
Maven是一个项目管理和构建自动化工具。
下图是一个Maven系统架构
Maven的几个常用命令
mvn clean compile
:编译命令,Maven自动扫描src/main/java
下的代码并完成编译工作,执行完成后会在根目录下生成target/classes
目录;mvn clean package
:编译并打包命令,即先执行上面的编译命令,然后执行jar打包命令,结果是将所有的java文件和资源打包成一个jar包(是java的一个压缩包形式);mvn clean install
:执行安装命令,即执行上面的编译和打包命令,然后执行install命令将器安装的本地的Maven仓库目录中(${user_name}/.m2
);mvn compile exec:java -Dexec.mainClass=${main}
:即执行完编译命令之后,执行运行java的命令,具体执行那个类有后面的参数指定,如执行com.kevin.Test
类,则mvn compile exec:java -Dexec.mainClass=com.Kevin.Test
POM(Project Object Model)
1. Maven坐标
- groupId类似文件夹的名字,需要避免与其他人的相同
- artifactId类似文件名,在同一个groupId中要唯一
- Maven工程执行完成后将工程打包成packaging指定的文件格式(jar、war、ear、pom)
- version分为开发阶段(SNAPSHOT)和稳定发布版(RELEASE)
<groupId>com.kevin.essay</groupId>
<artifactId>app</artifactId>
<packaging>jar</packaging>
<version>1.0.0-SNAPSHOT</version>
约定:执行
mvn package、mvn install
命令生成的jar文件名为[artifactId]-[version].jar
2. Maven属性配置
首先properties
中的标签是可以自定义的,一般来说使用小写字母+.
的形式
<properties>
<java.version>1.8</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.target>${java.version}</maven.compiler.target>
</properties>
3. 依赖管理 dependencies
一旦我们在pom.xml
文件中声明了dependency信息,Maven会先去本地用户目录下的.m2
文件夹下找相应的内容,如果找不到则去中央仓库下载并存入.m2文件夹
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.2.2</version>
</dependency>
</dependencies>
一个
pom.xml
文件中只能有一个<dependencies>
标签,其内容就是Maven坐标;一般别人写的代码库称为三方库,自己或团队写的代码库称为二方库。
中央仓库
阿里云镜像中央仓库
插件体系plugins
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
</plugin>
</plugins>
</build>
一个栗子
1. pom.xml
2. 创造并实现接口MessageService
注意这里需要添加
@service
注解