当前位置:   article > 正文

maven基础配置_maven 源

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标签里添加:

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

配置jdk8

在profiles标签里添加

  1. <profile>
  2. <id>jdk-1.8</id>
  3. <activation>
  4. <activeByDefault>true</activeByDefault>
  5. <jdk>1.8</jdk>
  6. </activation>
  7. <properties>
  8. <maven.compiler.source>1.8</maven.compiler.source>
  9. <maven.compiler.target>1.8</maven.compiler.target>
  10. <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
  11. </properties>
  12. </profile>

配置jdk17

  1. <profile>
  2. <id>jdk-17</id>
  3. <activation>
  4. <activeByDefault>true</activeByDefault>
  5. <jdk>17</jdk>
  6. </activation>
  7. <properties>
  8. <maven.compiler.source>17</maven.compiler.source>
  9. <maven.compiler.target>17</maven.compiler.target>
  10. <maven.compiler.compilerVersion>17</maven.compiler.compilerVersion>
  11. </properties>
  12. </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/ 中查找

  1. <dependency>
  2. <groupId></groupId>
  3. <artifactId></artifactId>
  4. <version></version>
  5. <scope></scope>
  6. </dependency>

maven标签

maven结构

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
  5. http://maven.apache.org/xsd/maven-4.0.0.xsd">
  6. <modelVersion>4.0.0</modelVersion>
  7. <!-- 基础设置 -->
  8. <groupId>...</groupId>
  9. <artifactId>...</artifactId>
  10. <version>...</version>
  11. <packaging>...</packaging>
  12. <name>...</name>
  13. <description>...</description>
  14. <url>...</url>
  15. <dependencies>...</dependencies>
  16. <parent>...</parent>
  17. <dependencyManagement>...</dependencyManagement>
  18. <modules>...</modules>
  19. <properties>...</properties>
  20. <!--构建设置 -->
  21. <build>...</build>
  22. <reporting>...</reporting>
  23. <!-- 更多项目信息 -->
  24. <inceptionYear>...</inceptionYear>
  25. <licenses>...</licenses>
  26. <organization>...</organization>
  27. <developers>...</developers>
  28. <contributors>...</contributors>
  29. <!-- 环境设置-->
  30. <issueManagement>...</issueManagement>
  31. <ciManagement>...</ciManagement>
  32. <mailingLists>...</mailingLists>
  33. <scm>...</scm>
  34. <prerequisites>...</prerequisites>
  35. <repositories>...</repositories>
  36. <pluginRepositories>...</pluginRepositories>
  37. <distributionManagement>...</distributionManagement>
  38. <profiles>...</profiles>
  39. </project>

dependence标签

  1. <dependency>
  2. <groupId>groupB</groupId>
  3. <artifactId>artifactB</artifactId>
  4. <version>1.0</version>
  5. <optional>true</optional>
  6. <exclusions>
  7. <exclusion>
  8. <groupId>groupC</groupId>
  9. <artifactId>artifactC</artifactId>
  10. </exclusion>
  11. </exclusions>
  12. </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:父工程管理依赖的版本  不做实际引入

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/87297
推荐阅读
相关标签
  

闽ICP备14008679号