什么是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安装配置|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
<localRepository>D:\apache-maven-3.5.0\repository</localRepository>
更新本地资源库
mvn archetype:generate
Maven远程存储库
pom.xml
<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
目录结构:
Maven web项目部署运行
m2eclipse插件|已经安装
直接在在线时长上搜索m2e
Maven Integration for Eclipse
或直接从站点安装
http://download.eclipse.org/technology/m2e/releases
tomcat中配置Maven
tomcat角色管理,设置超级管理员
tomcat_home/conf/tomcat_users.xml
<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
<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
<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>