初识maven
1、maven配置
1、使用idea的话,要注意idea本身自带maven,想要使用自己安装的maven需要去设置:
局部设置: File–settings–Build,Execution,Deployment–Build Tools–Maven home path
全局设置:File–New Projects Setup–Settings for New Projects
默认设置:
配置成自己安装的maven:
2、单独安装自己的maven时,需要设置环境变量:
变量名:Path
变量值: %MAVEN_HOME%\bin
变量名:MAVEN_HOME
变量值:D:\eclipse\apache-maven-3.8.4
jdk版本和maven版本匹配:
Maven Releases History
java -version 查看jdk版本(java 1.8即java 8)
mvn --version 查看maven版本
PS:maven 3.8.4应该与java 8也是匹配的
3、配置本地仓库:
settings.xml文件: 用来设置maven参数的文件,maven的全局配置文件;
1)打开D:\eclipse\apache-maven-3.8.4\conf\settings.xml(全局配置文件);
2)添加设置本地仓库:
将:
<localRepository>
${user.home}/.m2/repository
</localRepository>`
改为:
<localRepository>
D:\maven\.m2\repository //自己创建的路径
</localRepository>`
3)添加镜像mirror–阿里镜像:
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
2、maven java项目创建
File—new—project—maven—Create from archetype:
选择:maven-archetype-quickstart;
如果想要加快项目创建的时候jar包的导入速度可以:
添加一个属性:
key:archetypeCatalog
value: internal
其他方法参考:IntelliJ IDEA创建Maven项目导入jar包速度慢的解决方法
3、maven编译
(1)新建的maven项目直接compile时,出现warrings:
上面显示maven的jetty plugin(插件)找不到;
配置包括全局配置(settings.xml文件)和pom.xml配置;
查看pom.xml会发现:
变红了说明存在问题!删除这一块就不会有Warrings了,也进一步说明了这个插件找不到是问题所在。
解决:为此插件加上版本就可以了;
<version>9.4</version> //jdk version ---1.8
jetty和jdk版本要相匹配: jetty各个版本对应的jdk版本
2)
解决:
只需要在pom.xml文件中的<properties> </properties>
里加入
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!--指定编译器的版本仅仅是推荐,而不是强制使用此版本,推荐使用1.8 -->
<maven.compiler.source>1.8</maven.compiler.source> <!-- 源文件的maven编译器的版本-->
<maven.compiler.target>1.8</maven.compiler.target> <!-- 编译时的版本-->
PS:Pom.xml文件是当下maven项目的配置文件,里面的配置都只是临时的(只在当前项目下);而settings.xml文件是全局的适合所有的maven项目。
4、maven项目打包
将项目打包的目的是,当其他项目需要使用此项目的时候直接导入此jar包即可(添加依赖)或者进行发布;
maven项目包括:普通的java项目和Web项目;
5、Maven Webapp项目
File–new–project–maven—Create from archetype;
选择Webapp如图;
5.1、pom.xml的配置
1、UTF-8下的compiler版本改成1.8;(新建时默认为1.7)
2、Junit依赖的版本改成4.12;然后会自动加载4.12版本的Junit放到本地仓库D:\maven.m2\repository下;
<build></build>
里的<pluginManagement></pluginManagement>
删除掉;
然后在
<build></build>
里加入<plugins></plugins>
;
添加jetty插件和tomcat插件:
注意: 刚写的时候显示是红色的,这是因为还没有加载到本地仓库中(类似于依赖的加载,都是自动根据版本进行自动下载);
加入完成后点击M
进行加载;若加载完成后仍是红色,说明加载失败(可能是版本错误,或者插件名称拼写错误等);
jetty-plugin:
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.4</version> <!--jetty version -->
<!--jetty插件的配置-->
<configuration>
<scanIntervalSeconds>10</scanIntervalSeconds><!--热部署,每10s扫描一次 -->
<contextPath>/test</contextPath> <!--指明当前项目的站点名 -->
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectionChannelConnector">
<port>9090</port><!-- 设置启动的端口名-->
</connector>
</connectors>
</configuration>
</plugin>
tomcat plugin:
<!--tomcat plugin-->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version><!-- tomcat version-->
<!--tomcat plugin configuration-->
<configuration>
<server>tomcat7</server><!--服务器名称-->
<port>8080</port><!--启动端口,默认为8080-->
<path>/test</path><!--项目的站点名,即对外访问路径-->
<uriEncoding>UTF-8</uriEncoding><!--字符集编码,默认为ISO-8859-1-->
<contextReloadable>true</contextReloadable>
</configuration>
</plugin>
5.2 启动Webapp项目
指定端口为9090并启动jetty:
还可以在pom.xml文件中jetty插件下指明端口,然后执行:
访问路径:localhost:port/contextpath/index.jsp
6、maven repository
Maven Central Repository Search
maven仓库介绍:
maven仓库包括了本地仓库、中央仓库、私服、公共仓库;
本地仓库: 即maven项目本地的仓库,一般不放在C盘,项目下载的依赖(jar包等)或插件都放在本地仓库;
D:\maven.m2\repository //自己创建的路径
中央仓库: maven默认的一个远程仓库;maven自带的jar包中所带的pom.xml中定义了中央仓库的位置;但是中央仓库访问量大,一般会比较慢;
私服: 处于局域网中的远程仓库,其内容是由从外网中下载或由本地仓库上传而建立起来的,以供局域网内的maven项目使用;
公共仓库: 常用的是阿里云仓库;
项目加载依赖或者插件的过程:
1、先根据pom.xml文件里的描述去本地仓库找,若能找到则直接用;
2、若本地仓库没有且setting.xml文件里已经加入了公共仓库,则去阿里云仓库下载,若存在私服则去私服下载到本地仓库;
3、若阿里云仓库或者私服没有,则去中央仓库下载到本地。
PS: 有时在pom.xml文件中刚写完依赖或插件plugin时是处于红色,而加载完之后红色会消失,若没有消失则说明依赖或插件的描述存在问题;
若要加入依赖或插件时候不确定如何进行描述可以到Maven Central Repository Search或MavenRepository去查询;