Maven简介

JavaWeb中,遇到的一个烦恼,就是每次都要导入jar包,忘记了就会很麻烦。随着项目会变大,jar包管理变得及其麻烦,所以Maven应运而生,不过Maven并不是最早的项目管理工具。
核心思想:约定大于配置,Maven会给你配置

Maven项目的创建

  1. 打开IDEA
  2. 在新建项目页面的左边导航栏,选择Maven选项,在右边的页面中勾选上面的Create from archetype,然后再在下面的选项中选择相应的项目(作者这里选择的是JavaWeb项目,所以选择),如图所示:
  3. 填写项目信息,如图所示:
  4. 选择Maven路径及配置文件和仓库目录,如图所示:
  5. 配置项目名称,如图所示:
  6. 选择自动导包,如图所示:
  7. 等待下载完成

项目中需要注意的事项

  • 约定大于配置
  • Maven规定了,代码必须存放到指定的目录下
  • JavaWeb项目目录结构
  • src :资源项目路径
  • main:整个程序
  • java:存放项目的java源代码(dao、pojp、service、servlet、fliter…)
  • resources:存放项目的资源文件(xml、properties…)
  • webapp:存放网页代码及web-inf核心文件
  • test:测试用
  • java:测试用java代码
  • resources:测试用的资源文件
  • pom.xml:重要! pom.xml是Maven项目的核心配置文件,里面会配置所有和Maven有关的东西
  • IDEA中使用注意事项
    这些文件夹有的不会自动生成,需要手动创建,但是呢,手动创建的文件夹没有权限写java代码或者存放资源,那就需要手动进行标记。怎么配置呢?
    1.点击左上角的File,选择Project Structure选项,如图所示:

    2.选择左边导航栏的Modules,打开项目编辑窗口,如图所示:
    3.根据图示完成操作,如图所示:
    4.编辑结束后,项目完整结构如图所示:

疑问:target是什么?

回答:输出目录文件,对应我们项目中的out文件夹,如图所示:

idea怎么删除maven 重新编译 idea如何彻底删除maven项目_Maven

IDEA中Maven的配置

maven设置地址

1.点击左上角的File,选择Settings选项,如图所示:

idea怎么删除maven 重新编译 idea如何彻底删除maven项目_Maven_02


2.在弹出的窗口中。可以编辑Maven的相关信息

idea怎么删除maven 重新编译 idea如何彻底删除maven项目_idea_03


项目结构测试位置

1.选择右边悬浮窗中的“Maven Projects”

idea怎么删除maven 重新编译 idea如何彻底删除maven项目_Maven_04


2.Maven仓库结构如图所示:

idea怎么删除maven 重新编译 idea如何彻底删除maven项目_maven_05


3.Maven仓库的依赖添加如图所示:

idea怎么删除maven 重新编译 idea如何彻底删除maven项目_spring_06

利用Maven管理jar包

无论要使用什么jar包,都需要去pom.xml中配置;

在dependencies下面配置项目的jar包。

<dependencies>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
    <scope>test</scope>
  </dependency>
</dependencies>

如何找到这些jar包所在的位置呢?

1.推荐去Maven中央远程仓库中下载:地址:https://mvnrepository.com/ ,官网如图所示:

idea怎么删除maven 重新编译 idea如何彻底删除maven项目_idea怎么删除maven 重新编译_07


2.假设现在需要去下载jstl的jar包,直接搜索即可,如图所示:

idea怎么删除maven 重新编译 idea如何彻底删除maven项目_idea怎么删除maven 重新编译_08


3.选择对应的版本点击进入,如图所示:

idea怎么删除maven 重新编译 idea如何彻底删除maven项目_maven_09


4.进入相应的版本,然后复制Maven里面的代码,如图所示:

idea怎么删除maven 重新编译 idea如何彻底删除maven项目_spring_10


5.将刚才复制的代码复制到pom.xml里的<dependency.>标签中,如图所示:

idea怎么删除maven 重新编译 idea如何彻底删除maven项目_idea怎么删除maven 重新编译_11


本质分析

Maven会根据配置文件去对应镜像站点下载相应的jar包;

在通过配置文件去本地读取jar包。

手动创建一个Maven项目

1.随便建立一个空文件夹代表我们的项目,使用IDEA打开,如图所示:

idea怎么删除maven 重新编译 idea如何彻底删除maven项目_idea怎么删除maven 重新编译_12

2.手动建立目录结构,如图所示:

idea怎么删除maven 重新编译 idea如何彻底删除maven项目_idea怎么删除maven 重新编译_13

3.配置环境,如图所示:

idea怎么删除maven 重新编译 idea如何彻底删除maven项目_spring_14

4.编辑输出目录,文件标记,jdk等,如图所示:

idea怎么删除maven 重新编译 idea如何彻底删除maven项目_Maven_15

5.检查一下Maven,如图所示:

idea怎么删除maven 重新编译 idea如何彻底删除maven项目_spring_16


6.编写pom.xml核心文件,代码如下:

<?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>com.njbdqn</groupId>
  <artifactId>myweb</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>myweb Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>
<!--编译版本设置 -->
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
<!--依赖包 -->
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <!-- servlet -->
    <!-- https://mvnrepository.com/artifact/javax.servlet/servlet-api -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
      <scope>provided</scope>
    </dependency>

    <!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>

    <!--spring 核心-->
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>4.3.7.RELEASE</version>
    </dependency>

    <!-- 被Spring 容器管理的Java对象 -->
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>4.3.7.RELEASE</version>
    </dependency>

    <!-- 应用上下文 Spring应用上下文全权负责对象的创建和组装-->
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>4.3.7.RELEASE</version>
    </dependency>

    <!--springMVC-->
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>4.3.7.RELEASE</version>
    </dependency>

    <!--JDBC-->
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>4.3.7.RELEASE</version>
    </dependency>

    <!--事务-->
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-tx -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>4.3.7.RELEASE</version>
    </dependency>

    <!-- mybatis -->
    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.6</version>
    </dependency>

    <!-- 连接mybatis和spring -->
    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.2</version>
    </dependency>

    <!-- mysql连接 -->
    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.38</version>
    </dependency>

    <!-- 数据库连接池 -->
    <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.10</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.8</version>
    </dependency>
    <!-- json数据-->
    <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.9.8</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>2.9.8</version>
    </dependency>
  </dependencies>

  <build>
    <finalName>myweb</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.6.1</version>
          <configuration>
            <source>1.8</source>
            <target>1.8</target>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

7.然后让idea识别,如图所示:

idea怎么删除maven 重新编译 idea如何彻底删除maven项目_idea怎么删除maven 重新编译_17


idea怎么删除maven 重新编译 idea如何彻底删除maven项目_Maven_18


8.现在来导入依赖,即jar包,如图所示:

通过<dependencies></dependencies>标签

请注意:这里我们在第六步代码中已经将jar包导入。

idea怎么删除maven 重新编译 idea如何彻底删除maven项目_maven_19

常见问题

假如你的项目在IDEA中可以运行成功,但是无法发布运行,可以就是没有配置资源过滤

就需要手动配置这个,代码如下:

<!--用来存放一些和项目构建相关的东西-->
<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <excludes>
                <exclude>**/*.properties</exclude>
                <exclude>**/*.xml</exclude>
            </excludes>
            <filtering>false</filtering>
        </resource>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>false</filtering>
        </resource>
    </resources>
</build>