-
040_Maven详解
Maven
maven项目架构管理工具
我们目前用来导入jar包
- maven的核心思想:约定大于配置
-
maven会规定好如何编写java代码,必须按照这个规范执行
下载安装Maven
- Maven官网:http://maven.apache.org/
- 下载maven:apache-maven-3.6.3-bin.zip
- 解压apache-maven-3.6.3-bin.zip
配置环境变量
- 配置MAVEN_HOME D:\environment\apache-maven-3.6.3
- 配置M2_HOME D:\environment\apache-maven-3.6.3\bin
- 配置PATH ;%MAVEN_HOME%\bin;
- 测试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
作用:加速下载
国内建议使用阿里云镜像
- 搜索阿里云镜像配置 maven 阿里云镜像
- 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除外,使用感叹号将仓库从匹配中排除。
配置本地仓库
- maven下新建目录maven-repo
- 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项目
自动导入包时,报错问题: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
切换后导包正常,不再报错。
切换低版本步骤:
- 下载解压maven3.6.1
- 修改环境变量MAVEN_HOME和M2_HOME
- 配置阿里云镜像
- 配置本地仓库
-
修改项目maven配置或重新创建maven项目
等待项目初始化完毕
目录结构
观察maven本地仓库是否下载jar包
idea中的maven设置
idea重复配置maven问题:修改idea中的全局默认配置
或者
创建java和resources目录,并标记为源码目录和资源目录
另一种标记方式,打开项目结构配置标记
idea中配置Tomcat
解决警告:配置项目的两种方式
Maven Projects窗口
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/
- 进入网站
- 根据已知或相关jar包名搜索,找使用人数相对多的,然后看包名
- 找使用人数相对多的版本
- 复制pom文件配置
- 粘贴到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创建普通项目
创建普通项目
目录结构
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依赖目录树
原文:https://www.cnblogs.com/wl3pb/p/14502896.html
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
JavaScript判断两个数组相等的四类方法
js如何操作video标签
React实战--利用甘特图和看板,强化Paas平
【记录】正则替换的偏方
前端下载 Blob 类型整理
抽象语法树AST必知必会
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程