Maven综述
Maven综述

Maven综述

[TOC]

什么是Maven

是apache下的一个项目管理工具
apache/maven
github|apache/maven
Maven的pom.xml文件详解———Build Settings

Maven常用数据

mvn archetype:generate :创建 Maven 项目
mvn compile :编译源代码
mvn test-compile :编译测试代码
mvn test : 运行应用程序中的单元测试
mvn site : 生成项目相关信息的网站
mvn clean :清除目标目录中的生成结果
mvn package : 依据项目生成 jar 文件
mvn install :在本地 Repository 中安装 jar
mvn deploy:将jar包发布到远程仓库
mvn eclipse:eclipse :生成 Eclipse 项目文件

Maven详解

Maven教程
Maven详解

Maven安装配置|windows环境配置

1)java环境变量

2)下载Maven

3)Maven环境变量

M2_HOME 和 MAVEN_HOME
指向maven包

4)检查

mvn -version

Maven资源库

Maven详解之仓库———本地仓库、远程仓库
jar包来源顺序:本地仓库——>私服(如果设置的话)——>中央仓库(远程仓库)
默认所有的Maven仓库都服用一个本地仓库
中央仓库是唯一内置的远程仓库:
Maven中央仓库地址
Maven中央仓库地址更改版本

Maven本地资源库

更改本地资源库

默认位置(用户文件夹下):~/.m2/repository
conf\settings.xml

1
<localRepository>D:\apache-maven-3.5.0\repository</localRepository>

更新本地资源库

mvn archetype:generate

Maven远程存储库

pom.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<repositories>
<repository>
<id>jboss</id> <!---->
<name>JBoss Repository</name> <!---->
<url>http://repository.jboss.com/maven2/</url> <!---->

<releases> <!---->
<updatePolicy>daily</updatePolicy><!-- never,always,interval n -->
<enabled>true</enabled>
<checksumPolicy>warn</checksumPolicy><!-- fail,ignore -->
</releases>

<snapshots> <!---->
<enabled>false</enabled>
</snapshots>

<layout> <!---->
default
</layout>
</repository>
</repositories>

Maven依赖机制

Introduction to the Dependency Mechanism

compile: 默认的scope。编译、测试、打包全都需要。compile参与依赖传递,就是说,项目A依赖于B(依赖scope是compile),项目C依赖于你的项目A,那么C也就依赖于B。

provided: 表示JDK或者容器会在Runtime时提供这些(jar),如servlet api,部署时是不需要它的,因为应用服务器肯定有这些东西。provided的东西在编译和测试时会用到,不参与传递依赖。

runtime: 表示编译时不需要,但测试和运行时需要,最终打包时会包含进去。

test: 只用于测试阶段(测试的编译和测试的运行),典型的就是junit的jar。

system: 和provided类似,但要求jar是系统里已有的,不会在repository里找,如rt.jar,tools.jar这些。

import: 简单的说,项目的pom可以继承另一个项目的pom,从而继承了父项目的依赖关系,但是因为之后single inheritance的限制,所以创造了import,使得你可以“导入”或者说“继承”任何一到多个项目的依赖关系。

<dependency management><dependencies>的区别:

在父POM中用定义好version, scope, 和exclusions后,可以被子POM中用定义的依赖所继承使用。这样,如果有多个子POM的话,可以确保用同一套version, scope, 和exclusions。

<dependencyManagement>部分。它指示要替换为指定POM的<dependencyManagement>部分中的依赖关系的有效列表的依赖关系。由于它们被替换,具有导入范围的依赖关系实际上并不参与限制依赖关系的传递性。

编译时依赖关系仍然是编译范围,即使它们是传递性的。
|- |compile |provided|runtime |test|
|:——- |:——— |:——— |:——— |:— |
|compile | compile(*) |- |runtime | -|
|provided | provided |- |provided| -|
|runtime | runtime |- |runtime | -|
|test | test |- |test | -|

使用Maven创建Web应用程序项目(Eclipse下)

Eclipse下配置Maven环境

myeclipse 上安装 Maven3
添加maven文件夹依赖和setting.xml

使用Maven创建Web应用项目

Myeclipse 10 Maven 构建 Java Web 项目
如何用Maven创建web项目(具体步骤)
图文详解MyEclipse中新建Maven webapp项目的步骤(很详细)

GroupId:一般是公司名或组织名
ArtifactId:一般是project名
Packaging:打包类型,jar/war/rar/ear/pom等,默认是jar
Version:版本号,GroupId+ArtifactId+Packaging+Version构成项目的唯一标识
Snapshot:标识一个正在开发阶段、会经常更新、但尚未发布的版本

Maven搭建SSH
目录结构:
7341

Maven web项目部署运行

eclipse构建及运行maven web项目

m2eclipse插件|已经安装

直接在在线时长上搜索m2e
Maven Integration for Eclipse
或直接从站点安装
http://download.eclipse.org/technology/m2e/releases

tomcat中配置Maven

tomcat角色管理,设置超级管理员

tomcat_home/conf/tomcat_users.xml

1
2
3
4
5
6
7
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-script,admin-gui"/>

修改Maven配置文件

maven_home/conf/settings.xml

1
2
3
4
5
<server>
<id>tomcat</id>
<username>admin</username>
<password>admin</password>
</server>

关于项目中pom.xml报错问题

仔细检查依赖关系,点击pom.xml视图,查看报错信息,然后进入setting.xml中设置的的repository路径检查jar包,可以删除然后右键—>maven—>update

tomcat 7 下 在web.xml中添加页面编码filter遇到:Java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addFilter

org.apache.catalina.deploy.WebXml addFilter

Maven项目加载本地jar

1
2
3
4
5
6
7
<dependency>
<groupId>com.dj741.cloud</groupId> <!--自定义-->
<artifactId>cloud</artifactId> <!--自定义-->
<version>1.0</version> <!--自定义-->
<scope>system</scope> <!--system,类似provided,需要显式提供依赖的jar以后,Maven就不会在Repository中查找它-->
<systemPath>${basedir}/lib/dj741.jar</systemPath> <!--项目根目录下的lib文件夹下-->
</dependency>
文章作者: HibisciDai
文章链接: http://hibiscidai.com/2017/06/19/2017-06-19-Maven综述/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 HibisciDai
好用、实惠、稳定的梯子,点击这里