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 中安装 jarmvn deploy
:将jar包发布到远程仓库mvn eclipse:eclipse
:生成 Eclipse 项目文件
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 | <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中用
<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等,默认是jarVersion
:版本号,GroupId+ArtifactId+Packaging+Version构成项目的唯一标识Snapshot
:标识一个正在开发阶段、会经常更新、但尚未发布的版本
Maven搭建SSH
目录结构:
7334
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 | <role rolename="admin-gui"/> |
修改Maven配置文件
maven_home/conf/settings.xml
1 | <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 | <dependency> |