Maven是Java项目构建工具,可以用于管理Java依赖,还可以用于编译、打包以及发布Java项目,类似于JavaScript生态系统中的NPM。
构建环节: 清理-编译-测试-报告-打包-部署
官方安装包 ,直接下载二进制包,我使用的是 apach-maven-3.6.2-bin.tar.gz
weget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.2/binaries/apache-maven-3.6.2-bin.tar.gz tar xvf apache-maven-3.6.2-bin.tar.gz -C ~/opt echo "export PATH=$PATH:/Users/michael/opt/apache-maven-3.6.2/bin" >> ~/.zshrc source ~/.zshrc
到此,Mac 环境的 maven 的就已经安装好了,检测:
mvn --version
来源 my-config-files/maven/
可以定义本地仓库的实际路径:
<localRepository>/path/to/local/repo</localRepository>
Maven 镜像源设置,第一个 mirror 才会生效,其他的只是放这儿,后期可以将某个调整至第一个,使其生效,提高下载速度和稳定性:
<!-- https://blog.csdn.net/sayyy/article/details/80447757 --> <mirror> <!--This sends everything else to /public --> <id>nexus</id> <mirrorOf>*</mirrorOf> <url>https://maven.aliyun.com/nexus/content/groups/public/</url> </mirror> <mirror> <!--This is used to direct the public snapshots repo in the profile below over to a different nexus group --> <id>nexus-public-snapshots</id> <mirrorOf>public-snapshots</mirrorOf> <url>https://maven.aliyun.com/nexus/content/repositories/snapshots/</url> </mirror> <!-- https://mirrors.huaweicloud.com/ --> <!-- https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=1779 --> <mirror> <id>huaweicloud</id> <mirrorOf>*</mirrorOf> <url>https://mirrors.huaweicloud.com/repository/maven/</url> </mirror>
注: < mirrorOf>
可以设置为哪个中央仓库做镜像,为名为“central”的中央仓库做镜像,写作 < mirrorOf>central< /mirrorOf>
;为所有中央仓库做镜像,写作 < mirrorOf>*< /mirrorOf>
。Maven默认中央仓库的id 为 central。id是唯一的。
重要:除非你有把握,否则不建议使用 < mirrorOf>*< /mirrorOf>
的方式。
参考:
pom.xml
中, <project></project>
为最外层的标签;
<modelVersion>4.0.0</modelVersion>
定义了所使用的POM版本。这2个标签基本上是不变的。
groupId
、 artifactId
与 version
一起则定义了模块的坐标( Coordinates
),每个公共模块的坐标应该是唯一的:
groupId
:组织名称,通常是把域名反过来,例如 com.fundebug
artifactId
:模块名称,比如一个微服务的项目名称,例如 fundebug-java
version
:模块版本,例如 0.2.0
主版本号.次版本号.修订版本号 SNAPSHORT RELEASE M1 M2 ... RC( Release Candicate) GA(General availability) SNAPSHORT<M1<M2<...<RC<GA<RELEASE
SpringBoot Star 中可以看到版本的一个示例:
<dependencies></dependencies>
定义了当前项目所依赖的模块。Maven 可以根据 <dependency></dependency>
中定义的坐标,自动下载所依赖的模块。在 MacBook 上,Maven 将下载的模块缓存在 $HOME/.m2/
目录。
参考:
mvn compile
编译 Maven 工程,生成一些 class
文件和配置文件; mvn package
编译并打包,根据 pom.xml
中元素 packaging
是 jar
还是 war
进行打包。 mvn install
打包并安装到本地仓库。比如 env-service
服务可以安装到本地, deploy-service
服务可以通过项目在本地引用到; mvn deploy
同 install
,但打包并安装到远程仓库; mvn clean
删除 target 目录; 最近项目中用来打包生成 jar
包的命令:
mvn clean package
会在同目录下生成一个 target
目录, jar
包就在该子目录下;
同时,另外一个项目是 gradle 写的,类似命令:
gradle -x test build
跳过测试阶段,生成的 jar 包在 build 的子目录中;