按照顺序来做,可以入门maven。
1. 下载安装maven
提到下载外国的软件,直接搜镜像资源就得了,下载安装后记得配置环境变量。
2. maven全局配置和项目配置
setting.xml
安装maven的文件夹有conf文件夹,里面有setting.xml文件。这个文件是用来配置maven全局属性的。
全局属性主要作用于:
本地仓库地址 |
---|
私有仓库地址 |
远程仓库地址 |
一般在setting.xml文件中需要更改一下两个内容:
本地仓库地址 |
---|
远程仓库地址 |
本地仓库更改为一个自己喜欢的地方,我放在了D:maventools中。
<!--上面的这些是默认地址不用管-->
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<!--这里是我自己添加的本地仓库地址-->
<localRepository>D:\maventools\repository</localRepository>
远程仓库更改为阿里的国内镜像。
<mirrors>
<!--这里是默认注释掉的,不用管-->
<!-- mirror
| Specifies a repository mirror site to use instead of a given repository. The repository that
| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
|
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://my.repository.com/repo/path</url>
</mirror>
-->
<!--添加上此mirror节点-->
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
3. 用maven构建项目
步骤:
- cd到你向创建maven工程的目录下
- 执行maven创建项目工程的脚手架
mvn archetype:generate -DgroupId=这里填你的类的所属者 -DartifactId=这里填你的工程的名称 -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
eg:
mvn archetype:generate -DgroupId=wat -DartifactId=maven-test -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
执行完eg中的命令后,会创建出来mavent-test工程
工程下有
src和pom.xml
src中有main/java/wat/App.java
可以看到wat作为包的名字用了。
而maven-test作为工程名称用了。
4. 项目配置pom.xml
如果你用maven创建了一个项目,那么就会发现项目中有src文件夹和pom.xml配置文件这两个内容。这里的pom是用来配置maven的项目内属性的。
- pom.xml原始文件解释
<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/maven-v4_0_0.xsd">
<!--声明项目描述符遵循哪一个 POM 模型版本,上面的 xsd 规范定义了这个版本,默认就行,不需要修改,不可删除-->
<modelVersion>4.0.0</modelVersion>
<!--团体唯一标识符-->
<groupId>com.nasus</groupId>
<!--项目唯一标识符定位这个包-->
<artifactId>maven-test</artifactId>
<!--打包类型-->
<packaging>jar</packaging>
<!--打包版本-->
<version>1.0-SNAPSHOT</version>
<!--包名-->
<name>maven-test</name>
<!--不用管,删掉也行-->
<url>http://maven.apache.org</url>
<!--项目需要依赖的 jar 包-->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
</project>
- 向dependencies节点之前加上项目属性配置信息,用来指定编译的信息,一般这里面的内容不需要更改(我更改成了自己的版本,还报错了)
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>wat</groupId>
<artifactId>maven-test</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>maven-test</name>
<url>http://maven.apache.org</url>
<!--项目属性,在 <dependencies> 前加-->
<properties>
<!-- JDK编译版本 -->
<java.version>1.8</java.version>
<!-- 项目编码 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- JDK编译版本 -->
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
- 加入build配置信息,要不然后续运行工程的时候会找不到主类
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>wat</groupId>
<artifactId>maven-test</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>maven-test</name>
<url>http://maven.apache.org</url>
<!--项目属性,在 <dependencies> 前加-->
<properties>
<!-- JDK编译版本 -->
<java.version>1.8</java.version>
<!-- 项目编码 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- JDK编译版本 -->
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
<!-- 寻找主类的配置 -->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>wat.App</mainClass> <!-- 将这里面的内容设置为目录中java下的A.B.class -->>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
配置完成
5. 运行工程
这里操作的是先打包,再运行.jar
- 命令行中cd到maven-test目录。
- mvn clean ————清除原先不需要的目标文件夹的垃圾打包文件
- mvn package —————将工程打包
- cd target——————切换到target文件夹中
- java -jar xxx.jar ——————执行.jar文件
- 得到输出
还可以在maven-test目录下使用
mvn install
将打包文件转移到自己的本地仓库。
至此,maven的基础开发完结。
单元测试需要继续看看。。。。
2021.4.14
更新pluginmanagement 和 plugin的区别
pluginmanagement 标签内部包含的内容只能被继承使用,而不会在maven编译的时候直接使用。
plugin 标签内部的内容则是maven会在工作的时候使用的真正内容,所以,通常我们在pluginmanagement中定义好插件使用的时候的各种基本信息之后,在plugin标签中通过指定已经定义的插件的groupID和artifactID来使该插件生效!!!
还有一个标签 finalName 用来指定生成的最终结果的名称。