Maven是什么?
Maven是一个项目管理和综合工具。Maven提供了开发人员构建一个完整的生命周期框架。开发团队可以自动完成项目的基础工具建设,Maven使用标准的目录结构和默认构建生命周期。类似PHP语言的Composer,Js语言的yarn
在多个开发团队环境时,Maven可以设置按标准在非常短的时间里完成配置工作。由于大部分项目的设置都很简单,并且可重复使用,Maven让开发人员的工作更轻松,同时创建报表,检查,构建和测试自动化设置。
Windows安装Maven
首先需要JDK的支持,Maven3.2.*版本需要JDK1.6的支持,Maven3.3.*以上需要JDK1.7以上的支持,JDK的安装以及配置在此不多赘述。 前往Maven官网下载zip包,地址:Maven – Download Apache Maven
步骤1、将安装包apache-maven-3.6.3-bin.zip解压到任意地址,我的路径是G:\Tools\apache-maven-3.6.0
步骤2、新建环境变量M2_HOME和MAVEN_HOME。指向G:\Tools\apache-maven-3.6.0,Maven说只是添加 M2_HOME , 但一些项目仍引用 Maven 的文件夹 MAVEN_HOME, 因此,为了安全也把它添加进去。如下图:
步骤3、在环境变量path追加【;%MAVEN_HOME%\bin;%M2_HOME%\bin】,如下图:
步骤4、打开cmd输入mvn –v,如下图表示maven环境变量配置成功:
Maven常用配置
由于maven中心库是国外网站,连接下载速度很是揪心,所以强烈推荐使用阿里云的镜像库,主流jar包都有,而且速度非常快,如图在{M2_HOME}\conf\\setting.xml文件中进行如下配置。虽然 mirrors 可以配置多个子节点,但是它只会使用其中的一个节点,即默认情况下配置多个 mirror 的情况下,只有第一个生效,只有当前一个 mirror 无法连接的时候,才会去找后一个;而我们想要的效果是:当a.jar在第一个 mirror 中不存在的时候,maven会去第二个 mirror 中查询下载,但是maven不会这样做!注意:配置多个mirror时,mirrorOf不能配置" * "," * " 的意思就是(根据mirrorOf和repository的id)匹配所有的仓库(repository)
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<!-- 公司内部mirror -->
<mirror>
<id>repo2</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://mycompany.maven.org/maven2/</url>
</mirror>
</mirrors>
通过命令设置可以是哪个mirror生效,执行:
mvn help-effective-settings -Drepo2=central
1.Maven本地资源库
Maven的本地资源库是用来存储所有项目的依赖关系(插件jar和其他文件,这些文件被Maven下载)到本地文件夹。很简单,当你建立一个Maven项目,所有相关文件将被存储在你的Maven本地仓库。 Maven的本地资源库默认为 .m2 目录文件夹:
Unix/Mac OS X – ~/.m2
Windows – C:\Users\{your-username}\.m2
我们可以找到 {M2_HOME}\conf\setting.xml, 更新 localRepository项,选择我们想要存放的目录位置。
改为你想放的位置:
2.Maven中央存储库与远程存储库
当你建立一个 Maven 的项目,Maven 会检查你的 pom.xml 文件,以确定哪些依赖下载。首先,Maven 将从本地资源库获得 Maven 的本地资源库依赖资源,如果没有找到,然后把它会从默认的 Maven 中央存储库 – http://repo1.maven.org/maven2/ 查找下载。
若是中央存储库也没有找到,还可以在pom.xml中自定义远程存储库,Maven会去远程存储库下载,例如:
告诉 Maven 来获得 Java.net 的依赖,你需要声明远程仓库在 pom.xml 文件这样:
<repositories>
<repository>
<id>java.net</id>
<url>https://maven.java.net/content/repositories/public/</url>
</repository>
</repositories>
3.安装自定义jar包到本地Maven库
当出现下列情况时:
1.要使用的 jar 不存在于 Maven 的中心储存库中。
2.您创建了一个自定义的 jar ,而另一个 Maven 项目需要使用。
远程服务器需要在 {M2_HOME}\conf\settings.xml中配置server用户名密码
<server>
<id>n</id>
<username>abc</username>
<password>12345</password>
</server>
需要手动将所需要的jar包存放至Maven本地资源库,可以再cmd中输入以下命令:
mvn install:install-file -Dfile=c:\userdefined-1.0.jar -DgroupId=pers.test.code -DartifactId=userdefined -Dversion={1.0} -Dpackaging=jar
远程库命令如下
mvn deploy:deploy-file -DgroupId=com.abc.com3rd.policy -DartifactId=policy-sdk -Dversion=20180502102622 -Dpackaging=jar -Dfile=D:\jar\local_policy.jar -DrepositoryId=repo-huotu -Durl=http://repo.abc.com:8081/nexus/content/repositories/releases/ -DgeneratePom=false
各参数代表含义为:
-Dmaven.test.skip=true //跳过编译、测试
-Dfile=D:\MvnProject\service-mvn-1.0.0.jar //jar包文件地址,绝对路径
-DgroupId=pri.roy.mvn.test //gruopId--pom坐标,自定义
-DartifactId=mvn-api //artifactId--pom坐标,自定义
-Dversion //版本号
-Dpackaging //打包方式
-DrepositoryId //远程库服务器ID
-Durl //远程库服务器地址
安装成功后,在pom.xml文件中可以使用了
<dependency>
<groupId>pers.test.code</groupId> <!-- pers/test/code目录 -->
<artifactId>userdefined </artifactId>
<version>1.0</version>
</dependency>
Maven仓库中有源包,不能下载到本地解决办法
IDEA的配置JDK,Tomcat,Maven
配置JDK,先点击File——Project Structure——SDKs进行配置
File-project structure,配置自己的jdk安装路径
tomcat配置
File—Setting—Build,Exception,Deployment—Build Tools—Application Servers中。Springboot项目自带tomcat无需配置
maven配置
配置Gradle
使用国内源
https://mirrors.cloud.tencent.com/gradle/gradle-7.3.2-bin.zip
下载成功后,可以看到下面有gradle-7.3.2-bin.zip文件
C:\Users\Administrator\.gradle\wrapper\dists\gradle-7.3.2-bin
打包运行命令
进入到项目根目录
(1)执行mvn compile命令会在根目录生成target文件 (第一次执行会下载各种插件、依赖包慢点)
(2)执行mvn clean可将根目录下生成的target文件移除
(3)mvn install命令将本地工程打包成jar包,放入到本地仓库中
#打包demo-eureka,demo-gateway,demo-api及所有demo-eureka,demo-gateway,demo-api依赖的包util,common等
mvn clean package -DskipTests -pl demo-eureka,demo-gateway,demo-api -am
#运行命令:
nohup java -jar dist.jar --spring.profiles.active=prod >log.out &
看到下面信息运行成功
IDE打Jar包
Idea卡在Resolving Maven dependencies的解决方案
修改maven Importing的jvm参数, 默认为700多, 直接修改成 -Xms1024m -Xmx2048m
idea中运行springboot项目跳过测试类
file -> settings -> build…->build tools -> maven -> runner, 勾选skip tests。
Idea中Module is not specified并且use classpath of module下拉框中no module
解决idea中pom文件的依赖不会自动下载
IDEA一致卡在build时间过长问题解决
一,经过范围排查修改位置最终确认问题为Build process heap size 过小导致。
File | Settings | Build, Execution, Deployment | Compiler
将对应参数扩大,例700 改为2048