VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > Java教程 >
  • 040_Maven详解

Maven

maven项目架构管理工具

我们目前用来导入jar包

  1. maven的核心思想:约定大于配置
  2. maven会规定好如何编写java代码,必须按照这个规范执行

下载安装Maven

  1. Maven官网:http://maven.apache.org/
  2. 下载maven:apache-maven-3.6.3-bin.zip

image.png

  1. 解压apache-maven-3.6.3-bin.zip

image.png

配置环境变量

  1. 配置MAVEN_HOME D:\environment\apache-maven-3.6.3

image.png

  1. 配置M2_HOME D:\environment\apache-maven-3.6.3\bin

image.png

  1. 配置PATH ;%MAVEN_HOME%\bin;

image.png

  1. 测试maven
C:\Users\Administrator>mvn -version
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: D:\environment\apache-maven-3.6.3\bin\..
Java version: 1.8.0_271, vendor: Oracle Corporation, runtime: D:\environment\Jav
a\jdk1.8\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"

C:\Users\Administrator>

配置阿里云镜像

镜像:mirrors
作用:加速下载
国内建议使用阿里云镜像

  1. 搜索阿里云镜像配置 maven 阿里云镜像

image.png

  1. D:\environment\apache-maven-3.6.3\conf\settings.xml中配置阿里云镜像
  <mirrors>
    <!-- mirror
     | Specifies a repository mirror site to use instead of a given repository. The repository that
     | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
     | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
     |
    <mirror>
      <id>mirrorId</id>
      <mirrorOf>repositoryId</mirrorOf>
      <name>Human Readable Name for this Mirror.</name>
      <url>http://my.repository.com/repo/path</url>
    </mirror>
     -->
    <mirror>
      <id>nexus-aliyun</id>
      <mirrorOf>*,!jeecg,!jeecg-snapshots</mirrorOf>
      <name>Nexus aliyun</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
  </mirrors>

标签里面放置的是要被镜像的Repository ID。为了满足一些复杂的需求,Maven还支持更高级的镜像配置: 
 
           匹配所有远程仓库。 
repo1,repo2 
           匹配仓库repo1和repo2,使用逗号分隔多个远程仓库。 
,!repo1 
           匹配所有远程仓库,repo1除外,使用感叹号将仓库从匹配中排除。

配置本地仓库

  1. maven下新建目录maven-repo

image.png

  1. D:\environment\apache-maven-3.6.3\conf\settings.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:\environment\apache-maven-3.6.3\maven-repo</localRepository>

idea中使用Maven创建web项目

创建MavenWeb项目

image.png
image.png
image.png
image.png
image.png

自动导入包时,报错问题:Unable to import maven project: See logs for details

如果自动导入包时,报错:
Unable to import maven project: See logs for details
可以是idea和maven版本冲突,可以降低maven版本
如:idea2018与maven3.6.3版本冲突,降低maven版本为3.6.1
切换后导包正常,不再报错。

切换低版本步骤:

  1. 下载解压maven3.6.1
  2. 修改环境变量MAVEN_HOME和M2_HOME
  3. 配置阿里云镜像
  4. 配置本地仓库
  5. 修改项目maven配置或重新创建maven项目

等待项目初始化完毕

image.png

目录结构

image.png

观察maven本地仓库是否下载jar包

image.png

idea中的maven设置

image.png
image.png

idea重复配置maven问题:修改idea中的全局默认配置

image.png
image.png
或者
image.png
image.png

创建java和resources目录,并标记为源码目录和资源目录

image.png
image.png
image.png
另一种标记方式,打开项目结构配置标记
image.png
image.png
image.png

idea中配置Tomcat

image.png
image.png
image.png
解决警告:配置项目的两种方式
image.png
image.png
image.png
image.png
image.png
image.png
image.png

Maven Projects窗口

image.png

pom.xml文件

pom.xml是Maven的核心配置文件

<?xml version="1.0" encoding="UTF-8"?>

<!--maven版本和头文件-->
<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>

  <!--GAV-->
  <groupId>com.qing</groupId>
  <artifactId>javaweb-01-maven</artifactId>
  <version>1.0-SNAPSHOT</version>

  <!--项目的打包方式
    jar:java应用
    war:Javaweb应用
  -->
  <packaging>war</packaging>

  <!--名称,不重要,可删除-->
  <name>javaweb-01-maven 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>
    <!--具体依赖的jar包配置文件-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <!--项目构建配置-->
  <build>
    <finalName>javaweb-01-maven</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>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </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>

idea中默认生成的web.xml版本较低,参考Tomcat修改2.3为4.0

默认生成的:

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
</web-app>

修改参考Tomcat中的web.xml文件

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  version="4.0"
  metadata-complete="true">
  
</web-app>

maven仓库的使用 MVN repository

地址:https://mvnrepository.com/

  1. 进入网站

image.png

  1. 根据已知或相关jar包名搜索,找使用人数相对多的,然后看包名

image.png

  1. 找使用人数相对多的版本

image.png

  1. 复制pom文件配置

image.png

  1. 粘贴到pom.xml中
  <!--项目依赖-->
  <dependencies>
    <!--具体依赖的jar包配置文件-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <!--作用域,可选-->
      <!--<scope>provided</scope>-->
    </dependency>

  </dependencies>

idea中使用Maven创建普通项目

创建普通项目

image.png
image.png
image.png

目录结构

image.png

maven的高级之处在于:会导入pom文件中配置的jar包所依赖的jar包

maven资源导出问题(配置文件)

maven由于约定大于配置,src/main/java中不允许写xml和properties文件,如果写了,有可能会出现配置文件无法导出或生效问题
解决方案:

<build>
    .......
      <!--在build中配置resources,防止资源导出失败的问题-->
      <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>

idea依赖目录树

image.png

原文:https://www.cnblogs.com/wl3pb/p/14502896.html


相关教程