初始Maven
前言
-
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具
-
在项目开发中Maven可以对jar包和对工程之间的依赖关系进行管理,集成tomcat插件,maven项目可以自动发布到tomcat下。
-
maven仓库中存储jar包,可以一次下载,所有项目通用。
一. 安装Maven
1.1 下载Maven
下载maven的官网地址:http://maven.apache.org/download.cgi
下载后解压到安装路径即可。
1.2 修改配置文件
在conf文件夹里有一个settings.xml
编辑配置文件,指定本地仓库的路径,即下载的jar包存放在哪里。
1.3 配置环境变量
添加变量MAVEN_HOME,变量值为1.1中的解压路径
修改Path变量,在原来的Path后面追加 %MAVEN_HOME%\bin\
1.4 测试
打开命令窗口,运行mvn –version
到此处,Maven就安装成功了。
二. 配置JDK版本
使用Maven创建的java项目,需要在配置文件中设置默认使用的jdk版本。
修改Maven安装目录的conf/setting.xml文件,找到配置jdk的节点:
<profile>
<id>jdk18</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
备注:此处的配置信息不要放在注释中,很多人粘贴过去直接放在注释中,而且此处的配置会因为Maven的版本不同略有不同,所以不太建议直接复制
三. 配置镜像
Maven的中央仓库是在国外的,如果网络有限制,会导致jar包下载的很慢或者无法
下载。可以在网上找一些国内的镜像:
找到setting.xml的节点,加入如下内容:
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
备注:此处配置的是阿里云镜像,读者可以搜索其他的镜像
四. 如何在IDEA中配置Maven
备注:此处Maven的配置工作就完成了,但是有些人会进入IDEA界面后,通过FILE-SETTINGS-搜索Maven来配置,这样配置并不是全局配置,可仿照如下:
此时新建项目后发现Maven配置信息已经完善
五. IDEA中如何创建Maven工程
5.1 Maven工程
此处的GroupId就是组织名,全球唯一。ArtifactId通常就是项目名,一个组织下可以有多个项目,Version为版本号,项目正式发布时不建议使用SNAPSHOT快照版本
如果创建成功,会在IntelliJ中看到完整的目录结构。
如果创建失败,可以在控制台中查看EventLog
有些资源Maven需要联网下载,如果download失败,项目可能创建失败。
如果创建同名的工程也会报错,如下:
此时需要删除工程目录下对应的文件夹,并删除回收站中对应的文件
备注:此处的创建因IDEA版本不同会有所不同
5.2 创建目录
右键单击main->New->Directory
右键java文件夹->Mark Directory As ->Sources Root将文件夹更改成源码文件
同样的步骤创建resources文件夹,右键resources->Mark Directory As –>Resources Root
java文件夹下用于存放package,相当于eclipse普通工程中的src目录。
resources中用于存放配置文件和属性文件。
还可以在src下创建test文件夹,用于junit测试。test下同样创建java和resources
备注:如果用的IDEA版本较新,这些文件夹有的会自己创建
5.3 Maven的配置文件
pom.xml是maven的核心配置文件,在pom.xml中可以定义工程的依赖关系,和引用
jar包的信息。
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
这里引用了junit的jar包,版本是4.12
5.4 配置插件
<build>
<finalName>test001</finalName>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration> <path>/</path> <port>8080</port>
</configuration>
</plugin>
</plugins>
</build>
pligins用于定义插件,此处引用了tomcat的插件。path是访问路径,如果我们同时运
行多个项目,访问路径都是根路径,可以通过修改port端口号来访问项目。
5.5 测试
命令:clean tomcat7:run
配置成功后可以在工具栏里看到刚才配置的命令,点击绿色的三角
点击运行后,就可以在浏览器中访问到资源(前提是已经创建了资源)
比如:
5.6 查看jar包
通常,在pom.xml中加入配置信息后,maven会自动下载jar包
在项目的External Libraries中可以看到maven下载的jar:
如果在pom.xml中加入后,在左侧看不到jar包,可以右键点击pom.xml,选择Maven- >Reimport
或者在IDEA右侧点击Maven Project:
jar包没有正确引入的时候,pom.xml中会出现错误提示:
明显的标红
5.7 排除jar包冲突
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<!-- 排除冲突jar包 -->
<exclusions>
<exclusion>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
</exclusion>
</exclusions>
</dependency>
六. Maven的继承
6.1 pom工程
pom工程中只有一个pom.xml文件,不包含java和resource目录,它只用来保存一些
依赖信息。
在pom.xml中添加依赖信息信息,如junit、mysql等,也可以定义插件信息:
<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.maven.test</groupId> <artifactId>test-parent</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging>
<!-- 自定义属性 -->
<properties>
<junit.version>4.12</junit.version>
<mysql.version>5.1.32</mysql.version>
</properties>
<!--继承自该项目的所有子项目的默认依赖信息。这部分的依赖信息不会被立即解析, 而是当子项目声明一个依赖(必须描述group ID和artifact ID信息),如果group ID和 artifact ID以外的一些信息没有描述,则通过group ID和artifact ID匹配到这里的依 赖,并使用这里的依赖信息。-->
<dependencyManagement>
<dependencies>
<!--用于junit测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${
junit.version}</version>
</dependency>
<!-- mysql驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${
mysql.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<build> <!--产生的构件的文件名,默认值是${
artifactId}-${
version}。-->
<finalName>${
project.artifactId}</finalName>
<!--使用的插件列表 。-->
<plugins>
<!-- 资源文件拷贝插件 -->
<plugin>
<!--plugin元素包含描述插件所需要的信息。-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId> <version>2.7</version>
<!--作为DOM对象的配置-->
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- java编译插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins> <!--子项目可以引用的默认插件信息。该插件配置项直到被引用时才会被解析或 绑定到生命周期。给定插件的任何本地配置都会覆盖这里的配置-->
<pluginManagement>
<plugins>
<!-- 配置Tomcat插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
6.2 创建子工程
在子工程中添加父工程里定义过的依赖:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
可以不用写版本号了,它会自动继承父工程里定义的版本。
七. 打包
clean 清除编译结果
package 打包
install 安装到本地仓库