maven入门

目录

一、maven是什么?

二、安装配置maven环境

三、maven三个仓库

四、创建maven仓库

使用maven指令完成项目的构建过程:

五、pom.xml文件配置

六、junit单元测试

七、scope作用域范围

八、lombok

1.下载jar包

2.启用lombok插件

3.使用插件

 面试题

1、maven的作用

2、maven 如何排除依赖

3、maven scope作用域有哪些?

4、javaSE 常见的IO流分类有哪些?

5、javaSE 集合框架 有哪些?区别和联系?

 5.1 List、Set、Map之间的区别是什么?

5.2 HashMap和HashTable有什么区别?

5.3 如何决定使用HashMap还是TreeMap?

5.4 ArrayList和LinkedList的区别是什么?

5.5  ArrayList和Vector的区别是什么?

5.6 Array和ArrayList有何区别?


一、maven是什么?

maven是一个项目构建和jar包管理工具。

项目构建:1、创建项目结构  2、写java文件  3、编译  4、测试  5、打包   6、install安装

jar包管理:1、引入jar包依赖   2、管理依赖 (自动下载相关依赖jar包)3、jar包版本统一管理

二、安装配置maven环境

1.maven官网下载  安装包

https://maven.apache.org/download.cgi

 解压缩到非中文目录

 2.配置环境变量  

注意:配置maven之前要先配置jdk

检查是否配置成功  win+r  cmd

 3.配置阿里云镜像

以下代码需要粘贴到<mirrors></mirrors>里面

<mirror>
      <id>central</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>        
</mirror> 

三、maven三个仓库

四、创建maven仓库

1.提前为以后的maven项目配置maven路径

file---new projects setup---setting for new projects

 搜索maven   配置maven  home path

使用maven指令完成项目的构建过程:

1、clean 清理  target目录

2、compile 编译   生成class文件(在target目录下)

3、test测试  运行测试类

4、package打包    将项目打成jar包或者war包

5、install 安装    将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>

  <!-- 组织名  公司域名倒写 -->
  <groupId>com.hl</groupId>
  <!--  项目名|模块名-->
  <artifactId>maven01</artifactId>
  <!-- 版本号 -->
  <version>1.0-SNAPSHOT</version>
  <!--项目打包方式-->
  <!--
    jar: javase 或者 springboot项目
    war: ssm = spring+springmvc+mybatis  外置tomcat
    pom:父项目 ,里面包含很多子模块,父项目中只声明依赖  父项目为pom
  -->
  <packaging>jar</packaging>

  <name>maven01</name>
  <url>http://maven.apache.org</url>

  <!-- 项目属性配置  -->
  <properties>
    <!--特定含义的,预定义标签-->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <!--自定义标签-->
    <mysql.version>5.1.49</mysql.version>
  </properties>

  <!--  声明项目依赖的所有jar包-->
  <dependencies>
    <!--项目坐标依赖-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <!--mysql依赖-->
    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>${mysql.version}</version>
    </dependency>
    <!--lombok-->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.36</version>
      <scope>provided</scope>
    </dependency>
    <!--文件上传下载  commons-fileupload自动关联下载依赖的jar包 commons-io -->
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.5</version>
    </dependency>
    <!--同一个组织的产品,尽量使用同一个版本号-->
    <!--spring-webmvc-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.3.39</version>
      <!--排除依赖-->
      <exclusions>
        <exclusion>
          <groupId>org.springframework</groupId>
          <artifactId>spring-web</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <!--spring-web-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>5.3.39</version>
      <!--排除依赖  不指定版本号-->
      <exclusions>
        <exclusion>
          <groupId>org.springframework</groupId>
          <artifactId>spring-beans</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.springframework</groupId>
          <artifactId>spring-core</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

  </dependencies>
</project>

六、junit单元测试

<!--项目坐标依赖-->
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.13</version>
  <scope>test</scope>
</dependency>

七、scope作用域范围

<!--项目坐标依赖-->
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.13</version>
  <!--作用域范围
    test:测试包中有效
    provided: lombok  servlet-api(tomcat包含)  只在编译、测试、开发阶段会用到,最终打包时不需要打进去,运行时不使用。
    compile:默认  所有地方都可以使用  最常用的
    system:本地jar包引入,使用是系统路径 c:/11/11.jar  (一般不用)
    runtime:  开发,编译不需要,打包,运行 需要的  比如mysql
  -->
  <scope>test</scope>

八、lombok

1.下载jar包

<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <version>1.18.36</version>
  <scope>provided</scope>
</dependency>

2.启用lombok插件

3.使用插件

package com.hl;

import lombok.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

//@Getter
//@Setter
//@EqualsAndHashCode
//@ToString
//@NoArgsConstructor  无参构造
@Data //@Data综合注解  等价于 以上的累加
@AllArgsConstructor  //有参构造
public class User {
    private Integer id;
    private String name;

    public static void main(String[] args) {
        User user = new User(1,"abc");
        System.out.println(user.getName());
        System.out.println(user.toString());
    }

}

 面试题

1、maven的作用

Maven 是一个 项目管理和构建工具,主要用于:

  • 依赖管理:自动下载和管理项目所需的库(JAR 文件)。

  • 标准化项目结构:约定优于配置,统一目录布局(如 src/main/java)。

  • 构建生命周期:支持编译、测试、打包、部署等阶段(cleancompiletestpackageinstall)。

  • 插件体系:可通过插件扩展功能(如 maven-compiler-plugin 指定 JDK 版本)。

2、maven 如何排除依赖

在 pom.xml 中,使用 <exclusions> 排除传递性依赖:

<!--spring-webmvc-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.3.39</version>
      <!--排除依赖-->
      <exclusions>
        <exclusion>
          <groupId>org.springframework</groupId>
          <artifactId>spring-web</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

适用场景:解决依赖冲突

3、maven scope作用域有哪些?

Scope说明示例场景
compile默认,参与编译、测试、运行Spring Core、Lombok
provided由 JDK 或容器提供,不打包进最终输出Servlet API(Tomcat提供)
runtime仅运行时需要,不参与编译JDBC 驱动(如 MySQL)
test仅测试阶段使用JUnit、Mockito
system需手动指定本地路径(不推荐)本地自定义 JAR
import仅用于 <dependencyManagement>继承父 POM 的依赖管理
<!--项目坐标依赖-->
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.13</version>
  <!--作用域范围
    test:测试包中有效
    provided: lombok  servlet-api(tomcat包含)  只在编译、测试、开发阶段会用到,最终打包时不需要打进去,运行时不使用。
    compile:默认  所有地方都可以使用  最常用的
    system:本地jar包引入,使用是系统路径 c:/11/11.jar  (一般不用)
    runtime:  开发,编译不需要,打包,运行 需要的  比如mysql
  -->
  <scope>test</scope>

4、javaSE 常见的IO流分类有哪些?

5、javaSE 集合框架 有哪些?区别和联系?

 5.1 List、Set、Map之间的区别是什么?

1、List和Set是存储单列数据的集合,Map是存储键值对这样的双列数据的集合;

2、List中存储的数据是有顺序的,并且值允许重复;Map中存储的数据是无序的,它的键是不允许重复的,但是值是允许重复的;Set中存储的数据是无顺序的,并且不允许重复,但元素在集合中的位置是由元素的hashcode决定,即位置是固定的(Set集合是根据hashcode来进行数据存储的,所以位置是固定的,但是这个位置不是用户可以控制的,所以对于用户来说set中的元素还是无序的)

5.2 HashMap和HashTable有什么区别?

1、hashMap的键值都可以为Null,而hashTable不允许

2、hashTable是线程安全的、而hashMap不是

5.3 如何决定使用HashMap还是TreeMap?

对于在Map中,进行插入、删除、定位一个元素这类操作,HashMap是最好的选择,因为相对而言HashMap的插入会更快,但如果你要对key集合进行有序的遍历,那么TreeMap是一个更好的选择。

5.4 ArrayList和LinkedList的区别是什么?

1、ArrayList基于数组实现,非线程安全,效率高,增删慢,查找快;

2、LinkedList基于链表实现,链表内存是散列的,增删快,查找慢; 

3、ArrayList是动态数组的数据结构实现,而LinkedList是双向链表的数据结构实现

5.5  ArrayList和Vector的区别是什么?

1、ArrayList是非线程安全的,Vector是线程安全的

2、ArrayList查找快,Vector查找慢(ArrayList的性能方面要优于Vector)

3、ArrayList和Vector都会根据实际需要进行动态的扩容,只不过Vector每次扩容都增加一倍,而ArrayList每次只增加50%

5.6 Array和ArrayList有何区别?

1、Array 可以存储基本数据类型和对象,ArrayList 只能存储对象。

2、Array 是指定固定大小的,而 ArrayList 大小是自动扩展的。

3、Array 内置方法没有 ArrayList 多,比如 addAll、removeAll、iteration 等方法只有 ArrayList 有。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值