当前位置: 首页 > news >正文

Maven的配置与安装

1. Maven的下载安装

在Maven的官网即可下载,点击访问Apache Maven。

1.1. Windows安装

下载后解压即可,解压后目录结构如下:

Maven常用配置
在配置之前请将JDK安装好。

  1. 环境变量配置
    添加M2_HOME:对应Maven的解压目录即可。

编辑Path环境变量:

测试,在cmd窗口输入mvn -v查看
显示如下即配置成功:

1.2. Centos下安装

wget https://dlcdn.apache.org/maven/maven-3/3.8.5/binaries/apache-maven-3.8.5-bin.tar.gz
这个地址只作参考哈
wget https://dlcdn.apache.org/maven/maven-3/3.8.5/binaries/apache-maven-3.8.5-bin.tar.gz
解压
tar -zxvf apache-maven-3.8.5-bin.tar.gz
mv apache-maven-3.8.5 /usr/local/maven/
配置环境变量
vim /etc/profile

MAVEN_HOME=/usr/local/maven
PATH= M A V E N H O M E / b i n : {MAVEN_HOME}/bin: MAVENHOME/bin:{PATH}
export PATH

刷新
source /etc/profile

查看
mvn -v

2. 修改配置文件

通常我们需要修改解压目录下conf/settings.xml文件,这样可以更好的适合我们的使用。

此处注意:所有的修改一定要在注释标签外面,不然修改无效。Maven很多标签都是给的例子,都是注释掉的。
文章最后附上我的整个Settings.xml文件配置。

2.1 本地仓库位置修改

在标签内添加自己的本地位置路径

本地仓库位置修改
在<localRepository>标签内添加自己的本地位置路径

  <!-- 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:\tools\repository</localRepository>

2.2. 修改maven默认的JDK版本

在标签下添加一个标签,修改maven默认的JDK版本。

<profile>     
    <id>JDK-1.8</id>       
    <activation>       
        <activeByDefault>true</activeByDefault>       
        <jdk>1.8</jdk>       
    </activation>       
    <properties>       
        <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>       
</profile>

添加国内镜像源

添加标签下,添加国内镜像源,这样下载jar包速度很快。默认的中央仓库有时候甚至连接不通。一般使用阿里云镜像库即可。这里我就都加上了,Maven会默认从这几个开始下载,没有的话就会去中央仓库了。

<!-- 阿里云仓库 -->
<mirror>
    <id>alimaven</id>
    <mirrorOf>central</mirrorOf>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>

<!-- 中央仓库1 -->
<mirror>
    <id>repo1</id>
    <mirrorOf>central</mirrorOf>
    <name>Human Readable Name for this Mirror.</name>
    <url>http://repo1.maven.org/maven2/</url>
</mirror>

<!-- 中央仓库2 -->
<mirror>
    <id>repo2</id>
    <mirrorOf>central</mirrorOf>
    <name>Human Readable Name for this Mirror.</name>
    <url>http://repo2.maven.org/maven2/</url>
</mirror>

常用IDE下配置Maven
目前常用的开发工具如idea,eclipse都自身集成了一个版本的Maven。但是通常我们使用自己已经配置好的Maven。

3. IDEA下配置Maven

在这里插入图片描述
File->Setting下面,然后如上图,找到对应的maven进行设置即可

4. 组件版本号查询

Marven的各个组件需要查询和安装对应的版本号的,如何查询版本号?
通过官网:http://mvnrepository.com/,或者:https://search.maven.org/
在搜索栏中输入想要引入的依赖group id或者artifact id名称即可查找到。

5. 本地jar包加载

5.1 方案一

  1. 首先要将本地jar包放入lib目录下,创建和resource平级的目录,如下:
    在这里插入图片描述
    然后把要加入的jar放到里面去
  2. 增加pom依赖
<dependency>
      <groupId>com.asiainfo.encrypt.utils</groupId>
      <artifactId>encrypt_tools</artifactId>
      <version>1.0</version>
      <scope>system</scope>
      <systemPath>${basedir}/src/main/lib/encrypt_tools.jar</systemPath>
</dependency>

  1. 绑定plugins设置
    注意,下面的标签是为了打包成独立的jar要用到的,参见打包jar的说明,这里有一个大坑,这个标签不能在pluginManagement里面,否则就无效了
<!--添加了本地jar包后需要的-->
        <plugin>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-maven-plugin</artifactId>
          <configuration>
             <includeSystemScope>true</includeSystemScope>
<mainClass>com.qfkj.App</mainClass>
          </configuration>
        </plugin>
  1. 重新设置reosurce
<!--添加了本地jar包后需要的-->
    <resources>
      <resource>
        <directory>lib</directory>
        <targetPath>BOOT-INF/lib/</targetPath>
        <includes>
          <include>**/*.jar</include>
        </includes>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
        <targetPath>BOOT-INF/classes/</targetPath>
      </resource>
      <!--这个不加上,直接就找不到yml配置了-->
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
      </resource>

</resources>

5.2 本地jar包加载的另外一个方案

把jar包下载下来,然后运行:

mvn install:install-file -Dfile=wechatpay-apache-httpclient-0.1.5.jar -DgroupId=com.github.wechatpay-apiv3 -DartifactId=wechatpay-apache-httpclient -Dversion=0.1.5 -Dpackaging=jar

这命令相当于手动将jar包安装一次到本地仓库中。
上的参数包括jar文件,安装的groupId名,artifactId名,以及version

安装完后,安装命令中的groupId名,artifactId名,以及version编写pom就可以了

这个方法的缺点显而易见,不能将仓库搬到代码库上,所以在git团队项目中,其他人获取这个工程,会编译不过。

6. 父子项目构建

父项目中要设定模块,这个模块和子项目的id相同:
父项目pom:

<!--项目 id-->
<artifactId>expressway-cloud-travel</artifactId>
<packaging>pom</packaging>

<!-- 子模块-->
<modules>    
    <module>expressway-cloud-travel-service</module>
</modules>

子项目pom:

<!--项目id-->
<artifactId>expressway-cloud-travel-service</artifactId>

<parent>

    <groupId>com.hiscene</groupId>
    <!--父项目id-->
    <artifactId>expressway-cloud-travel</artifactId>
    <version>1.0.0</version>
    <relativePath>../pom.xml</relativePath>
</parent>

这里的核心就是在父项目中加module、在子项目中加parent

但这里有一个矛盾,就是子项目中如果用spring boot本身就有一个parent,但一个项目不允许有两个parent,所以必须要把这个parent挪到父项目中。

相关文章:

  • 阿里云 OSS
  • MacOS 12 Monterey根目录无法创建目录
  • 【牛客网-公司真题-前端入门篇】——百度2021校招Web前端研发工程师笔试卷(第一批)
  • 【Android控件】HorizontalScrollView的基础使用记录(滚动条自定义)
  • 盘点下常用的接口测试工具,有几个你肯定没用过
  • 成都市级科技计划项目验收公告、专精特新“小巨人”奖励申报等
  • 磁珠法RNA pull down试剂盒、蛋白质-核酸相互作用
  • GC 垃圾回收机制
  • C语言排序代码汇总测试
  • 力扣第五十六题(合并区间)详解
  • 【毕业设计】LSTM天气预测系统(时间序列预测)
  • Python毕业设计源代码员工人事系统
  • 授人为师,首期明道云零代码教练员研修班圆满结束
  • NR 物理层编码: 循环码译码
  • H5使用a标签时,在ios app中无法跳转
  • Angular 2 DI - IoC DI - 1
  • ES6 学习笔记(一)let,const和解构赋值
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • redis学习笔记(三):列表、集合、有序集合
  • Vue UI框架库开发介绍
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 使用docker-compose进行多节点部署
  • 通过git安装npm私有模块
  • 微信开放平台全网发布【失败】的几点排查方法
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #、%和$符号在OGNL表达式中经常出现
  • #LLM入门|Prompt#3.3_存储_Memory
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • $NOIp2018$劝退记
  • (5)STL算法之复制
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (转)shell调试方法
  • (转)winform之ListView
  • (转)程序员疫苗:代码注入
  • (转)可以带来幸福的一本书
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .net 无限分类
  • .net中我喜欢的两种验证码
  • // an array of int
  • @Transient注解
  • [202209]mysql8.0 双主集群搭建 亲测可用
  • [④ADRV902x]: Digital Filter Configuration(发射端)
  • [AUTOSAR][诊断管理][ECU][$37] 请求退出传输。终止数据传输的(上传/下载)