maven基础配置

目录

安装和环境变量

maven配置

配置本地仓库

仓库分类

本地仓库

远程仓库(三种)

配置阿里云仓库

idea关联maven

创建maven项目


安装和环境变量

官网(Maven – Welcome to Apache Maven),选择对应版本的bin.zip文件下载。

配置环境变量:

MAVEN_HOME:E:\apache-maven-3.9.3,path:%MAVEN_HOME%\bin

cmd输入mvn -v检查是否安装配置成功。

maven配置

打开conf的settings.xml

配置本地仓库

在55行添加:

<localRepository>E:\apache-maven-3.9.3</localRepository>

仓库分类

本地仓库>私服(如果配置了的话)>公共仓库(如果配置了的话)>中央仓库

本地仓库

本地仓库是自己电脑中的仓库,即在settings.xml文件中配置的目录。 项目中使用过的依赖都会自动存储在本地仓库中,后续可以复用。

远程仓库(三种)

中央仓库

Maven中央仓库是由Maven社区提供的仓库,不用任何配置,Maven中内置了中央仓库的地址。其中包含了绝大多数流行的开源Java构件。 可以通过仓库搜索服务网址https://mvnrepository.com/搜索需要的依赖的相关信息。中央仓库地址:Central Repository:

公共仓库

中央仓库在国外,下载依赖速度过慢,所以都会配置一个国内的公共仓库替代中央仓库。

常用阿里云仓库(仓库服务 )

私服

通过Nexus来创建、管理一个私服,不对外开放。

配置阿里云仓库

阿里云仓库介绍:

name:仓库名
    type:仓库类型
        group:仓库组,可以包含多个仓库,客户端值需要连它就可以连到它所管理的所有仓库
        proxy:代理仓库,去中央仓库或者镜像仓库啦jar包并且保存的。我们可以在这里配置成阿里云的镜像
        hosted:本地仓库,自己公司的项目,或者上传一些其他公司的jar。
    Format:仓库格式
    Status:仓库状态
    URL:客户端连接的url地址
    health check:健康检查

仓库种类

  •     maven-central:代理仓库,去中央仓库或镜像仓库拉jar包
  •     maven-public:仓库组,默认把其他几个java仓库全部包含了进来,一般直接连它就好了
  •     maven-releases:release版本仓库,一般把正式发布的jar包上传到这里
  •     maven-snapshots:snapshot版本仓库,一般把还没正式发布,但是其他人员又需要的jar上传到这里

配置阿里云仓库

在settings.xml的mirrors标签里添加:

  <!-- 配置阿里云镜像仓库 -->
         <mirror>   
           <id>alimaven</id>
           <name>aliyun maven</name>
           <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
           <mirrorOf>central</mirrorOf>
         </mirror>

配置jdk8

在profiles标签里添加

<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>

配置jdk17

<profile>
    <id>jdk-17</id>
    <activation>
<activeByDefault>true</activeByDefault>
<jdk>17</jdk>
    </activation>
    <properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<maven.compiler.compilerVersion>17</maven.compiler.compilerVersion>
    </properties>
</profile>

idea关联maven

创建maven项目

1.选择项目Generators:Maven Archetype,archetype里添加相应的web版本

2.搭建项目结构:

src/main/java:存放源代码,建包,放项目中的代码(service,dao,entity...)
src/main/resources:书写配置文件,项目中的配置文件(database.properties)
src/test/java:书写测试代码,项目中测试案例代码
src/test/resources:书写测试案例相关配置文件
目录/pom.xml(project object model)maven项目核心文件,其中定义项目构建方式,声明依赖等

3.项目关联:

  1. src/main/java 关联为 Sources Root:(右击java》选择mark Dirctory as》选择Sources Root)
  2. src/main/resources 关联为Resources Root:(右击resources》选择mark Dirctory as》选择Resources Root)
  3. src/test/java 关联为Test Sources Root:(右击test文件夹下test》选择mark Dirctory as》选择Test Sources Root)
  4. src/test/resources 关联为 Test Resources Root:(右击test文件夹下resources》选择mark Dirctory as》选择Test Resources Root)

4.配置pom.xml,根据项目类型,在pom.xml中做出对应配置,添加配置war/jar

5.添加jar包,在dependencies标签里添加,相关依赖可从https://mvnrepository.com/ 中查找

<dependency>
      <groupId></groupId>
      <artifactId></artifactId>
      <version></version>
      <scope></scope>
</dependency>

maven标签

maven结构


<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <!-- 基础设置 -->
    <groupId>...</groupId>
    <artifactId>...</artifactId>
    <version>...</version>
    <packaging>...</packaging>
 
    <name>...</name>
    <description>...</description>
    <url>...</url>
 
    <dependencies>...</dependencies>
    <parent>...</parent>
    <dependencyManagement>...</dependencyManagement>
    <modules>...</modules>
    <properties>...</properties>
 
    <!--构建设置 -->
    <build>...</build>
    <reporting>...</reporting>
 
    <!-- 更多项目信息 -->
    <inceptionYear>...</inceptionYear>
    <licenses>...</licenses>
    <organization>...</organization>
    <developers>...</developers>
    <contributors>...</contributors>
 
    <!-- 环境设置-->
    <issueManagement>...</issueManagement>
    <ciManagement>...</ciManagement>
    <mailingLists>...</mailingLists>
    <scm>...</scm>
    <prerequisites>...</prerequisites>
    <repositories>...</repositories>
    <pluginRepositories>...</pluginRepositories>
    <distributionManagement>...</distributionManagement>
    <profiles>...</profiles>
</project>

dependence标签

<dependency>  
  <groupId>groupB</groupId>  
  <artifactId>artifactB</artifactId>  
  <version>1.0</version>
  <optional>true</optional>    
  <exclusions>  
     <exclusion>  
       <groupId>groupC</groupId>  
       <artifactId>artifactC</artifactId>  
     </exclusion>  
  </exclusions>  
</dependency>  

使用exclusion排除依赖:假设有这样一种依赖关系,A->B->C,这个时候由于某些原因,我们不需要对C的依赖,但是我们又必须要对B的依赖,这个时候该怎么办呢?针对这种情况,Maven给我们提供了一个exclusion功能,我们可以在添加A对B的依赖时申明不需要引进B对C的依赖。

在定义项目的依赖项的时候,我们可以通过scope来指定该依赖项的作用范围。scope的取值有compile、runtime、test、provided、system和import。

  • compile:这是依赖项的默认作用范围,即当没有指定依赖项的scope时默认使用compile。compile范围内的依赖项在所有情况下都是有效的,包括运行、测试和编译时。
  • runtime:表示该依赖项只有在运行时才是需要的,在编译的时候不需要。这种类型的依赖项将在运行和test的类路径下可以访问。
  • test:表示该依赖项只对测试时有用,包括测试代码的编译和运行,对于正常的项目运行是没有影响的。
  • provided:表示该依赖项将由JDK或者运行容器在运行时提供,也就是说由Maven提供的该依赖项我们只有在编译和测试时才会用到,而在运行时将由JDK或者运行容器提供。
  • system:当scope为system时,表示该依赖项是我们自己提供的,不需要Maven到仓库里面去找。指定scope为system需要与另一个属性元素systemPath一起使用,它表示该依赖项在当前系统的位置,使用的是绝对路径。

可选的依赖项表示可有可无,不一定需要的,它只是做一个标记。为了便于大家理解,我们先看这样一种情况,假设项目B依赖于项目C,这个时候我们把B对C的依赖利用optional标记为可选的,它意味着B中只有部分地方用到了C,并不是必须要的,当你依赖于B,但是又不需要使用到B的C功能时,可以不依赖于C。这样当A->B->C时,在建立项目A的时候将不会加入对C的依赖,因为C对B是可选的,我们不一定会用到C。但是在建立项目B的时候,Maven就会加入对C的依赖。也就是说这种标记为optional的依赖项对项目本身而言是没有什么影响的,它影响的是以该项目作为依赖项的其他项目,如这里的项目A。这种可选的依赖项有一个好处就是它会默认的作为exclusion项排除

properties标签

使用properties标签配置项目版本,可将项目的版本号配置为一个属性,以方便统一管理和修改版本号。

bulid表示对项目的一些编译配置

plugins 插件配置

parent继承父类模块:常和module配合创建聚合工程,子工程使用此标签标记父工程

modules标识子模块列表:常和parent配合创建聚合工程,父工程使用此标签标记子工程

dependencyManagement:父工程管理依赖的版本  不做实际引入

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值