Maven的基本使用和Eclipse配置Maven

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38409944/article/details/81841929

前言:

Maven解决项目的依赖,在线下载jar包到本地。
来一张图显示:
这里写图片描述

仓库地址:

  https://mvnrepository.com/  

流程:
项目根据pom.xml的jar包,从外导入jar顺序:

工作空间-->本地仓库-->私服仓库-->Maven中心仓库

maven 软件目录 :

1.lib :共享库。maven软件依赖的lib jar包

2.boot :plexus-classworlds-2.5.1.jar 
该文件是jar包下载的引擎 ,通过该工具来下载第三方项目依赖的jar包
- maven本身的软件构建的生命周期插件的jar包,默认是没有集成这些插件  如:清除插件 --编译插件 -- 打包插件
- 
3.conf: maven 配置文件
C:\apache-maven-3.2.1\conf\settins.xml
 配置的是本地仓库地址 以及服务器的验证

4.bin 
    maven 可执行的命令
    mvn  命令

Maven项目的结构都是一定的 ,这样才方便操作。

约定项目结构:

  - 按maven规约的目录结构,创建java项目
      Hello项目
        - src
            ---main
                ---java
                    ---包和类
                        包: cn.it
                            类:Demo
                ---resources
            ---test
                ---java
                ---resources
      - target  : 该文件夹可有可无,  
      是编译src后的输出文件的目录,没有则自动创建
      - pom.xml : (project ojbect  model):项目对象模型 ,  
      它是maven核心配置文件

注意:

src中 main对应着普通代码  
test对应着测试代码

生命周期:

clean   compile     test    package   install   deploy  
clean 清空target  无法清空仓库中install的文件

compile 编译 main  添加target中的main的class

test 编译 添加target中的main的class和test的class   
从中心仓库或者私服下载测试要用到jar包到本地仓库

package是在test的基础上将他们打包 先执行 test然后打包

install是将打包的内容上传到本地的仓库中 不包括test测试代码

刚开始用的时候需要下载插件 所有会比较慢
使用test的时候就会从中央仓库中 下载需要的jar包到本地 这里本地我们以及自定义位置了

pom.xml配置文件:

<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>
 <!--组id  
         maven 用坐标概念来标识 jar包
          坐标=groupId+artifactId+version
      -->
      <groupId>cn.itcast.maven</groupId>
      <!--构建物id :产品id-->
      <artifactId>Hello</artifactId>
      <!--版本 :SNAPSHOT :测试版本 ,镜像版本   release :发行版本,最终版本-->
      <version>0.0.1-SNAPSHOT</version>
      <!--发布的是jar包  ,默认是jar包,也可以使war包等-->
      <packaging>jar</packaging>
      <!--项目名称 ,可写可不写-->
      <name>Hello</name>
      <properties>  
        <!-- 文件拷贝时的编码 -->  
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>  
        <!-- 编译时的编码 -->  
        <maven.compiler.encoding>UTF-8</maven.compiler.encoding>  
    </properties>  
        <dependencies>
          <!--jar包声明式依赖  依赖  junit4.9jar包-->
            <dependency>
               <!--用坐标来标识jar包: 坐标=groupId+artifactId+version -->
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.9</version>
                <!--依赖的jar包的使用范围 : 当测试时使用该jar包
                    test 、 compile(默认)  
                -->
                <scope>test</scope>
            </dependency>       
        </dependencies>
    </project>
在eclipse中  <artifactId>就是项目的名字   
  as是保存到仓库中时的根目录   
  可以理解为 <groupId>是公司 <artifactId>是具体的项目
  而不是类的路径     
  之前喜欢把包名当<groupId>  类名当<artifactId>  
  其实两者并不关联 

举例:

<groupId>as</groupId>
<artifactId>11</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>     

<groupId>这里不是填包名
它是以项目为操作单位 最后install上传到仓库的时候才有用
用到的jar也是应用于整个项目

install打包上传后 就是在仓库中的as文件下的11文件下的 0.0.1-SNAPSHOT文件下有
11- 0.0.1-SNAPSHOT.jar文件 即打包好的jar包
但是里面没有test测试文件

pom.xml中的两个标签:没用过
plugins配置
用于指定使用的插件
pom.xml 中的build标签是用于配置 pom 的,
相当于 pom 的 configuration,主要用于:

1、定义(或声明)项目的目录结构 
2、使用maven的插件(maven plugins)。

总结:
pom.xml中的<dependencies>是对整个项目进行配置

 关于:<scope>test</scope>   <scope>compile</scope>
         测试时才有效           编译时就有效
  1. 流程就是用到需要什么jar包或者项目引用先去仓库中寻找 ,如果找到了就直接用 找不到就到中心仓库再下载到本地
  2. 如果一个项目引用别的项目类 先把该项目install上传到本地才行 测试代码的class文件不会 然后compile编译的时候 会先去本地寻找
还可以连用  mvn clean compile

外部应用项目的话 pom配置:

   <dependency>
      <groupId>as</groupId>
      <artifactId>11</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <scope>compile</scope>
    </dependency>
  </dependencies>

这是定位到仓库的 as文件下的11文件下的0.0.1-SNAPSHOT文件下 相当于在项目中引用了该类的jar包 然后需要用到的地方直接:import org.hello; 那个jar包内的 路径+类名即可

eclipse中 如果一个maven引用另一个maven 先配置pom 然后 先关闭close被引用的项目 ,这个时候 maven Dependencies就会出现
被引入的文件 而且显示是来自仓库

间接依赖:

倚赖的jar包必须是compile范围 如果是test范围 刚发布的jar包不会包含test范围依赖的jar包
所以 要在被引用项目的pom修改junit test 为compile 其实默认就是compile
依赖项目可以不用写junit配置 直接写 被引用项目即可

每次被依赖的项目 被修改后要install 不然就会 是使用原来的 会报错
注意:
会先从本工作区寻找被依赖的项目 如果没找到再去仓库

Eclipse配置Maven

第一步配置path:

PATH: D:\apache-maven-3.5.4\bin
这里写图片描述

判断是否配置成功?

cmd:mvn -v

结果显示如下则表示成功

Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)
Maven home: D:\apache-maven-3.5.4\bin\..
Java version: 1.8.0_181, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk1.8.0_181\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

第二步配置本地仓库:

默认存放地址:

C:\Users\蒋家聪\.m2\repository

修改的文件:

D:\apache-maven-3.5.4\conf\setting.xml

我们来修改自定义存放地址:添加地址

  <!-- 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:/apache-maven-3.5.4/mvn_repo/repository</localRepository>

第二步配置Maven jdk版本:

默认是 jdk1.5
修改的文件:

D:\apache-maven-3.5.4\conf\setting.xml

修改jdk配置:添加jdk1.8

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

配置Eclipse:
这里写图片描述
这里写图片描述
注意:
全局配置(global settings )
本台电脑的配置,使用这台电脑的所有用户都是用这个配置

个人配置(user settings)
当前用户的配置
个人配置(user settings )会覆盖全局配置(global settings)

第三步:Eclipse中搜索添加Jar组件”坐标”

Eclipse与Maven配合提供了强大的jar组件集成功能.
更新Maven库的索引文件
说明:Mavne索引用于搜索jar组件”坐标”, 更新索引以后就可以在Eclipse中搜索jar组件”坐标”, 但这个功能不是必须的
这里写图片描述

这里写图片描述

参考:
eclipse配置 maven

猜你喜欢

转载自blog.csdn.net/qq_38409944/article/details/81841929