Maven

Maven介绍

  • 管理下载jar包的仓库
  • Maven——帮你规范整个组织的构建系统。不仅如此,它还有依赖管理、自动生成项目站点等超酷的特性。每天都有数以万计的开发者在访问中央仓库以获取他们需要的依赖。
  • Maven是跨平台的项目管理工具,主要服务于基于java平台的项目构建、依赖管理和项目信息管理。

    Maven依赖jar包使用的网站

  • www.maven.org是maven的中央仓库,搜索一个框架后,找到某个版本,可以下载jar,国外的,下载慢。

    • 比如搜索mysql.mysql
  • https://maven.aliyun.com/mvn/search
    • 国内的maven中央仓库,访问速度快
  • https://mvnrepository.com/
    • 查看框架的下载量,添加依赖的代码也在这里找

Maven作用

  • maven有个服务器,服务器中放了大量的jar
  • maven客户端,通过客户端从maven服务器上下载jar

image-20210113102141422.png

Maven项目创建

  • eclipse自动补全设置
    • 最简单的修改方式是:Windows——>Preferences——>Java—>Editor—>Content Asist,在Auto activation triggers for Java后面的文本框里只有一个“.”。现在你将其改为“.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”即可
  • Maven包http://maven.apache.org/download.cgi 下载地址

apache-maven-3.3.9.rar 直接解压使用

  • 修改conf/setting.xml中的localRepository
    • 这是你添加依赖后jar包下载的位置
  • 配置环境变量
    • maven/bin目录加入到系统环境变量path中,这样在任何地方就可以使用mvn命令
    • 重启dos,path配置才生效。
    • 输入mvn -version ,查看是否成功配置
  • 配置使用jdk
    • Windows->preferences->Java->InstalledJREs
    • 编辑为jdk的目录
    • 有极个别电脑要指向jre
  • 配置maven
    • Windows->preferences->Maven->User Setting
      • 引入解压后的maven, ../apache-maven-3.3.9/conf/seetting.xml
      • 两个都设置,后自动找到setting.xml中你设置的jar仓库
  • 新建项目
    • file->new Maven Project->
      • 选择internal maven-archetype-quickstart,next
    • Gropu id 公司名
    • Artifact id项目名
  • 项目出现pom.xml表示成功

Maven导入jar包

添加阿里云maven仓库有的jar包:依赖jackson框架并使用

  • jackson框架主要是解析Java对象为json字符串,让前台vue解析json字符串渲染页面

1.打开xml

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>com.tedu</groupId>
  5. <artifactId>maven01</artifactId>
  6. <version>0.0.1-SNAPSHOT</version>
  7. <packaging>jar</packaging>
  8. <name>maven01</name>
  9. <url>http://maven.apache.org</url>
  10. <properties>
  11. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  12. </properties>
  13. <dependencies>
  14. <dependency>
  15. <groupId>junit</groupId>
  16. <artifactId>junit</artifactId>
  17. <version>3.8.1</version>
  18. <scope>test</scope>
  19. </dependency>
  20. <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java
  21. 添加依赖,导入jar包
  22. 在https://mvnrepository.com/里面找到对象的依赖代码
  23. 保存之后自动下载,对应的jar包就会下载到设置的maven仓库中-->
  24. <dependency>
  25. <groupId>mysql</groupId>
  26. <artifactId>mysql-connector-java</artifactId>
  27. <version>8.0.22</version>
  28. </dependency>
  29. <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
  30. <!--
  31. <dependency>
  32. <groupId>com.fasterxml.jackson.core</groupId> 本地maven仓库里的公司
  33. <artifactId>jackson-databind</artifactId>
  34. <version>2.12.1</version>
  35. </dependency>
  36. -->
  37. </dependencies>
  38. </project>

2.新建Item.java

package com.tedu.maven01;
public class Item {

    Integer id;
    String name;

    public Item(Integer id, String name) {
        this.id = id;
        this.name = name;
    }

    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }    
}

3.App.java

package com.tedu.maven01;

import com.fasterxml.jackson.databind.ObjectMapper;
/**
 * Hello world!
 */
public class App 
{
    public static void main( String[] args )
    {
        try {
            System.out.println( "Hello World!" );
            Item item = new Item(1,"mate10");
            //创建把商品分类对象转成json字符串的对象
            ObjectMapper objectMapper = new ObjectMapper();
            //把商品分类对象转成json
            String jsonStr = objectMapper.writeValueAsString(item);
            System.out.println(jsonStr);
            } catch (Exception e) {
                // TODO: handle exception
            }

    }
}

手动添加阿里云maven仓库没有的jar包:pinyin4j-2.5.0.jar

1.打开xml文件,添加依赖

<dependency>
        <groupId>net.sourceforge.pinyin4j</groupId>
        <artifactId>pinyin4j</artifactId>
        <version>2.5.0</version>
</dependency>

2.复制jar包到仓库中

  • E:\ssm\apache-maven-3.3.9\repositorys\net\sourceforge\pinyin4j\pinyin4j\2.5.0

pinyin4j-2.5.0.jar
3.重新加载maven

  • 右键,maven,update project,选中force update of…, OK

4.转换为拼音

package com.tedu.maven02;

import java.util.Arrays;

import net.sourceforge.pinyin4j.PinyinHelper;

/**
 * Hello world!
 *
 */
public class App 
{
    public static void main( String[] args )
    {
        System.out.println( "Hello World!" );
        //静态方法,直接使用,返回字符串
        String[] str= PinyinHelper.toHanyuPinyinStringArray('虎');  
        System.out.println(Arrays.toString(str));   //[hu3, hu4]
    }
}

Maven项目打包成jar包

  • maven项目右键,Run as ,maven install
  • 可以再两个地方找到生成的jar包

    • 工作空间的项目的target文件夹
    • maven仓库的Gropu id和Artifact id组成路径,往里找到…jar

      在项目中添加依赖的java文件冲突如何解决

  • 在项目中添加同一jar包,不同版本,依赖 代码中的最先依赖(代码的优先顺序)

image.png

  • 所有人商量之后版本统一,设定一个父类来依赖需要使用的 所有的 jar包
  • 其它文件依赖这个parent形成的jar包即可

  • 新建Parent的Maven项目

    • Parent添加jackson依赖,Overview中jar替换为pom,maven install打包成pom包(告诉别人你可以继承我的依赖了)
  • 新建Item的Maven项目
    • Pom.xml里面Overview中添加父亲Parent,继承Parent的依赖
    • 打包为jar包
  • 新建User的Maven项目
    • Pom.xml里面Overview添加父亲Parent,继承Parent的依赖
    • 打包为jar包
  • 新建WWW的Maven项目
    • Pom.xml里面Dependencies,add添加Item和User的jar包依赖
  • WWW的Pom.xml的Dependency Hierarchy能看到两个依赖Item和User依赖版本一致,成功