Maven官网:https://maven.apache.org/
Apache Maven 是一个软件项目管理和理解工具。基于项目对象模型 (POM) 的概念,Maven 可以从一条中央信息中管理项目的构建、报告和文档。
主要用来生成、导入和配置jar包,在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
配置文件位于 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>
<localRepository>/Users/b/Desktop/javacode/enviorment/apache-maven-3.8.1/maven-repo</localRepository>
从镜像拉取包
mvn help:system
最后没有报错说明安装就没问题了
创建一个Maven项目
next,不选自带的,选择刚才下载的3.8.1
点击finish就ok了
打开Preference
可以看下关于maven的相关配置,因为有时IDEA会自动使用默认的Maven,如果出现类似情况需要手动改一下
关于其他几项配置
importing
Ignored Files
Runner
Repositories
本地仓库
在run=>Edit Configurations
设置基础信息
解决fix报错内容,添加一个artifact即可。下面的Application context可写可不写,是指定路由的
点击+无artifact解决:
打开Project Structure ==> 选择Artifacts ==> Web Application:Exploded
选择自己的项目就好了
回到Edit Configurations,就已经出现了Artifact...选项了
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约定大于配置,我们之后可能遇到我们写的配置文件无法导出或生效
解决方法:在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>