IDEA中Maven的使用初探
Maven
Maven官网:https://maven.apache.org/
Apache Maven 是一个软件项目管理和理解工具。基于项目对象模型 (POM) 的概念,Maven 可以从一条中央信息中管理项目的构建、报告和文档。
主要用来生成、导入和配置jar包,在Maven 中约束大于配置 目录结构必须按照规范
Maven安装
官网下载安装包解压即可
Maven配置环境变量
windows中配置maven环境变量
mac下环境变量配置(这里后面方便项目搭建 换成了3.6.3的版本)
# Maven 3.8.1 START
export M2_HOME=/Users/bjdzbjba0152/Desktop/javacode/enviorment/apache-maven-3.8.1
export PATH=$PATH:$M2_HOME/bin
# Maven 3.8.1 END
# Maven 3.6.3 START
export M2_HOME=/Users/bjdzbjba0152/Desktop/javacode/enviorment/apache-maven-3.6.3
export PATH=$PATH:$M2_HOME/bin
# Maven 3.6.3 END
Maven配置aliyun镜像
配置文件位于 conf/settings.xml
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
Maven本地仓库
<localRepository>/Users/b/Desktop/javacode/enviorment/apache-maven-3.8.1/maven-repo</localRepository>
从镜像拉取包
mvn help:system
最后没有报错说明安装就没问题了
IDEA中使用Maven
创建一个Maven项目
next,不选自带的,选择刚才下载的3.8.1
点击finish就ok了
打开Preference
可以看下关于maven的相关配置,因为有时IDEA会自动使用默认的Maven,如果出现类似情况需要手动改一下
关于其他几项配置
importing
Ignored Files
Runner
Repositories
本地仓库
创建一个普通的Maven项目
Maven纯净项目概览
Maven项目配置Tomcat
在run=>Edit Configurations
设置基础信息
解决fix报错内容,添加一个artifact即可。下面的Application context可写可不写,是指定路由的
点击+无artifact解决:
打开Project Structure ==> 选择Artifacts ==> Web Application:Exploded
选择自己的项目就好了
回到Edit Configurations,就已经出现了Artifact...选项了
Maven侧边栏
Maven中的pom.xml
pom.xml是maven的核心配置文件,注意<dependencies>
这里可以根据远程仓库选择自己的依赖jar包,只要在配置文件加入该包的<dependency>
Maven即可自动导入该jar包也包括这个jar包所依赖的其他jar包。
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<?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配置(group id,artifact id, version)-->
<groupId>com.zh1z3ven</groupId>
<artifactId>javawebTestDemo</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 项目打包方式
jar: java应用
war: javaweb应用
-->
<packaging>war</packaging>
<!--项目名称(可删)-->
<name>javawebTestDemo 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>javawebTestDemo</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>
Maven观察jar包依赖树
关于Maven导出问题
由于Maven约定大于配置,我们之后可能遇到我们写的配置文件无法导出或生效
解决方法:在build下面加一个resource,配置一个resource节点,防止资源导出失败
因默认在java目录下,根据maven的约束只能写java文件,如果这时该目录存在xml文件则无法导出
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>