Maven是Apachge(一个开源社区Or一款负载均衡开源服务器的名称)
用Maven必须系统环境变量M2_HOME指定Maven仓库的根目录.(可自定义但要言简意赅MAVEN_HOME等也行)
如果出现这种错解决-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment, variable and mvn script match.
参考这个网址.http://www.cnblogs.com/sprinng/p/5141233.html
1.Maven项目模型:在每个项目模型里的ClassPath下有一个pom.xml的坐标文件,
记录Jar包的位置,本工程的坐标,打包的运行方式(pom,war,jar).第三方插件的配置(tomcat7,JDK编译版本等)
2.依赖管理模型(基础核心):统一组件版本号(一般都是在pom父工程里配置),添加依赖关系(继承,聚合).对Jar包结构的操作都称之为依赖管理.
3.项目生命周期:清理,初始化,编译,测试,报告,打包,部署,站点的生成.
管理Maven生命周期的过程都是基于插件完成.Maven命令行来操作.
三个阶段 的生命周期: 是有顺序.顺序依赖.
clean : (清理target下的文件一些class和一些资源文件)准备清理,[清理]上一次构建的target下文件,清理善后
default:定义了真正构建时所需要执行的所有步骤,它是生命周期中最核心的部分
process-sources: 处理项目主资源文件。一般来说,是对src/main/resources目录的内容进行变量替换等工作后,复制到项目输出的主classpath目录中
compile: 编译项目的主源码。一般来说,是编译src/main/java目录下的Java文件至项目输出的主classpath目录中
process-test-sources: 处理项目测试资源文件。一般来说,是对src/test/resources目录的内容进行变量替换等工作后,复制到项目输出的测试classpath目录中
install: 将包安装到Maven本地仓库,供本地其他Maven项目使用
deploy: 将最终的包复制到远程仓库,供其他开发人员和Maven项目使用
site :
pre-site:准备生成站点
site:生成站点及文档
post-site:站点收尾
site-deploy:将生成的站点发布到服务器上
4.Maven定义一套标准的结构:
Maven项目/src(java源码) Or target(编译好的class,打包结果)Or pom.xml/Main(java代码)OrTest(test代码)
/Java源代码目录 Or Java配置文件.xml目录 Or webapp(前端代码目录)
Test目录的所有资源文件都不会打包到Jar,War里
每个Maven仓库的目录格式的都是一样/的
Maven仓库形式:Maven是管理jar包仓库的,软件本身没有jar包需要仓库
1.中央仓库【唯一】,包含着很多的第三方jar包,如果在有网络时配置的pom文件的jar坐标会被下载到本地仓库。
2.私服;自己的搭建的在局域网内部的Maven服务器。
3.本地仓库
Maven环境搭建;
在Apachge网站下载Maven,
Maven目录重点
bin:命令
conf:配置文件。
lib:依赖jar包
1.让Maven找到本地仓库的位置:在Conf目录下的Settings.xml
<localRepository>本地仓库绝对路径<localRepository>这个Maven软件就有了可以管理的仓库
2在开发工具中配置maven地址
在Windiw的配置搜索栏选择Maven点Installactions视图配置,
点击Add按钮,在Installactions home中找到本机的Maven地址的绝对路径。
完成后点击Apply保存操作;
3.在Windiw的配置搜索栏选择Maven点User Settings 视图配置Settings.xml文件目录
配置选择框 User Settings (open file ) 选中conf\Settings.xml文件
完成后点击Apply保存操作;
配置Maven视图:(显示Maven仓库的目录,这个视图可以找到有木有这个jar,)
Window==》show View ==》Maven Repository==》保存==》到多视图栏,找到Maven Repository,右点Local Repository ==》Rebuild Index(重建索引)==>提示框OK
创建一个Maven Project
Artifact Id : 系统的模块ID
版本号
Pakeging :打包类型
设置编译版本:1.8
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<!-- 详细信息配置 JDK版本 -->
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
插件的配置根标签都是<configuration>
在搭建pom项目对象模型时,如果项目出错了随时Maven Updata Poject 更新
本地Maven如果没有依赖Jar包,会联网远程下载
本地Maven如果没有依赖插件, 不会联网远程下载.:插件的配置根标签都是<configuration>
http://mvnrepository.com/ :用与Maven坐标生成,选择一个jar包自动生成Pom坐标配置.
创建一个完整的war工程;是没有前端目录webapp/WEB-INF/web.xml,这都需要自己手动创建
在Maven Start 时要用Tomcat ,用Maven的Tomcat插件,在版本号后指定1.端口信息.指定2.访问路径.
项目包名结构分析:
域名倒序:cn.hdmbs一级域名(顶级 你 域名)
cn.hdmbs.Mavenweb:二级域名模块
Maven Pom.xml 定义变量,规范版本号.经常在Pom的主工程来指定主版本号,
所有的标签自定义的数值都可以用自定义变量来统一管理.
定义一个<properties>标签包裹代表jar包称的自定义标签
版本号变量控制
<properties>
servlet-api.version这个标签就相当于一个变量他代表2.5这个值
<servlet-api.version>2.5</servlet-api.version>
</properties>
伪代码
<jar>
//相当于引用一个2.5的变量
{servlet-api.version}</version>
</jar>
Maven锁定版本:
父工程指定版本需要标签:<properties>,和子项目定义jar包方法一样.
可以在pom父工程指定版本(和上述的方法一样),子工程不指定版本,默认使用父工程的版本.不要引用.不指定.
如果指定则使用子工程的版本.
一个Maven工程可以有多个不同规格的(pom,war,jar,ejb)工程
Maven [聚合]依赖管理结构:
有一个pom的主工程,包括这几个模块工程,
模块工程是独立的有自己的src target webapp pom
Maven [继承]依赖管理结构:
在父工程添加依赖子工程就继承了依赖
War包打包会把Jar项目打成lib包下的Jar包,当对父工程打包时一个子模块工程报错,打包提前结束.
Maven打包时不包括测试代码和依赖范围为Test,provided 的jar包.(junit)
Jar项目的classpath是不配置框架的配置文件,只在本项目的War项目classpath配置
如果要在Jar包里读取配置文件就要配置【classpath*】加星
applicationContext.xml改为classpath*:applicationContext-*.xml
这么写也是一样的效果:classpath*:/applicationContext-*.xml
依赖范围管理:
大部分Jar包依赖但是complie
complie在编译,测试,运行都有效
Test 依赖范围 只用来测试 :测试有效 :编译,打包(运行)时无效
provided [重点]依赖范围 编译,测试 打包(运行)时无效,
有些tomcat(服务器)有(jar包)的运行环境就用provided,我们的程序在运行时依赖tomcat的运行环境
这样可以避免和tomcat冲突。
JDBC 依赖环境:测试,运行都有效
Maven 依赖传递 :
如果你加入一个core 包,会把所有依赖的包都导入进来.
Maven排除依赖:
如果 Maven依赖jar包出现两个相同jar包.必须要排除一个,不然会出现麻烦.
在需要大量依赖传递的core包pom.xml坐标里把多余的依赖给排除.
<exclusions>
<exclusion>
<groupId> 组名 </groupId>
<artifactId>项目名称<artifactId>
排除项目的三个坐标
</exclusion>
</exclusions>
<!--本地Maven仓库服务 :SSH相关配置-->
<!-- <localRepository>C:\repository</localRepository>-->
<!--本地Maven仓库服务 :SSM相关配置-->
<!-- <localRepository>C:\.m2\repository</localRepository>-->
<!--当前使用:如果使用远程仓库不需要指定仓库默认User\用户名\.m2\repository,可以指定本地仓库下载位置-->
<localRepository>C:\.m2\repository</localRepository>
<!--阿里云中央Maven云服务
<mirrors>
<mirror>
<id>nexus</id>
<name>AliyunMaven</name>
<mirrorOf>*</mirrorOf>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>-->
用Maven必须系统环境变量M2_HOME指定Maven仓库的根目录.(可自定义但要言简意赅MAVEN_HOME等也行)
如果出现这种错解决-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment, variable and mvn script match.
参考这个网址.http://www.cnblogs.com/sprinng/p/5141233.html
请一定要配置环境变量
1.Maven项目模型:在每个项目模型里的ClassPath下有一个pom.xml的坐标文件,
记录Jar包的位置,本工程的坐标,打包的运行方式(pom,war,jar).第三方插件的配置(tomcat7,JDK编译版本等)
2.依赖管理模型(基础核心):统一组件版本号(一般都是在pom父工程里配置),添加依赖关系(继承,聚合).对Jar包结构的操作都称之为依赖管理.
3.项目生命周期:清理,初始化,编译,测试,报告,打包,部署,站点的生成.
管理Maven生命周期的过程都是基于插件完成.Maven命令行来操作.
三个阶段 的生命周期: 是有顺序.顺序依赖.
clean : (清理target下的文件一些class和一些资源文件)准备清理,[清理]上一次构建的target下文件,清理善后
default:定义了真正构建时所需要执行的所有步骤,它是生命周期中最核心的部分
process-sources: 处理项目主资源文件。一般来说,是对src/main/resources目录的内容进行变量替换等工作后,复制到项目输出的主classpath目录中
compile: 编译项目的主源码。一般来说,是编译src/main/java目录下的Java文件至项目输出的主classpath目录中
process-test-sources: 处理项目测试资源文件。一般来说,是对src/test/resources目录的内容进行变量替换等工作后,复制到项目输出的测试classpath目录中
install: 将包安装到Maven本地仓库,供本地其他Maven项目使用
deploy: 将最终的包复制到远程仓库,供其他开发人员和Maven项目使用
部署详解:http://www.cnblogs.com/luffigo/p/5224707.html
site :
pre-site:准备生成站点
site:生成站点及文档
post-site:站点收尾
site-deploy:将生成的站点发布到服务器上
4.Maven定义一套标准的结构:
Maven项目/src(java源码) Or target(编译好的class,打包结果)Or pom.xml/Main(java代码)OrTest(test代码)
/Java源代码目录 Or Java配置文件.xml目录 Or webapp(前端代码目录)
Test目录的所有资源文件都不会打包到Jar,War里
每个Maven仓库的目录格式的都是一样/的
Maven仓库形式:Maven是管理jar包仓库的,软件本身没有jar包需要仓库
1.中央仓库【唯一】,包含着很多的第三方jar包,如果在有网络时配置的pom文件的jar坐标会被下载到本地仓库。
2.私服;自己的搭建的在局域网内部的Maven服务器。
3.本地仓库
Maven环境搭建;
在Apachge网站下载Maven,
Maven目录重点
bin:命令
conf:配置文件。
lib:依赖jar包
1.让Maven找到本地仓库的位置:在Conf目录下的Settings.xml
<localRepository>本地仓库绝对路径<localRepository>这个Maven软件就有了可以管理的仓库
2在开发工具中配置maven地址
在Windiw的配置搜索栏选择Maven点Installactions视图配置,
点击Add按钮,在Installactions home中找到本机的Maven地址的绝对路径。
完成后点击Apply保存操作;
3.在Windiw的配置搜索栏选择Maven点User Settings 视图配置Settings.xml文件目录
配置选择框 User Settings (open file ) 选中conf\Settings.xml文件
完成后点击Apply保存操作;
配置Maven视图:(显示Maven仓库的目录,这个视图可以找到有木有这个jar,)
Window==》show View ==》Maven Repository==》保存==》到多视图栏,找到Maven Repository,右点Local Repository ==》Rebuild Index(重建索引)==>提示框OK
创建一个Maven Project
Artifact Id : 系统的模块ID
版本号
Pakeging :打包类型
设置编译版本:1.8
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<!-- 详细信息配置 JDK版本 -->
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
插件的配置根标签都是<configuration>
在搭建pom项目对象模型时,如果项目出错了随时Maven Updata Poject 更新
本地Maven如果没有依赖Jar包,会联网远程下载
本地Maven如果没有依赖插件, 不会联网远程下载.:插件的配置根标签都是<configuration>
http://mvnrepository.com/ :用与Maven坐标生成,选择一个jar包自动生成Pom坐标配置.
创建一个完整的war工程;是没有前端目录webapp/WEB-INF/web.xml,这都需要自己手动创建
在Maven Start 时要用Tomcat ,用Maven的Tomcat插件,在版本号后指定1.端口信息.指定2.访问路径.
项目包名结构分析:
域名倒序:cn.hdmbs一级域名(顶级 你 域名)
cn.hdmbs.Mavenweb:二级域名模块
Maven Pom.xml 定义变量,规范版本号.经常在Pom的主工程来指定主版本号,
所有的标签自定义的数值都可以用自定义变量来统一管理.
定义一个<properties>标签包裹代表jar包称的自定义标签
版本号变量控制
<properties>
servlet-api.version这个标签就相当于一个变量他代表2.5这个值
<servlet-api.version>2.5</servlet-api.version>
</properties>
伪代码
<jar>
//相当于引用一个2.5的变量
{servlet-api.version}</version>
</jar>
Maven锁定版本:
父工程指定版本需要标签:<properties>,和子项目定义jar包方法一样.
可以在pom父工程指定版本(和上述的方法一样),子工程不指定版本,默认使用父工程的版本.不要引用.不指定.
如果指定则使用子工程的版本.
一个Maven工程可以有多个不同规格的(pom,war,jar,ejb)工程
Maven [聚合]依赖管理结构:
有一个pom的主工程,包括这几个模块工程,
模块工程是独立的有自己的src target webapp pom
Maven [继承]依赖管理结构:
在父工程添加依赖子工程就继承了依赖
War包打包会把Jar项目打成lib包下的Jar包,当对父工程打包时一个子模块工程报错,打包提前结束.
Maven打包时不包括测试代码和依赖范围为Test,provided 的jar包.(junit)
Jar项目的classpath是不配置框架的配置文件,只在本项目的War项目classpath配置
如果要在Jar包里读取配置文件就要配置【classpath*】加星
applicationContext.xml改为classpath*:applicationContext-*.xml
这么写也是一样的效果:classpath*:/applicationContext-*.xml
依赖范围管理:
大部分Jar包依赖但是complie
complie在编译,测试,运行都有效
Test 依赖范围 只用来测试 :测试有效 :编译,打包(运行)时无效
provided [重点]依赖范围 编译,测试 打包(运行)时无效,
有些tomcat(服务器)有(jar包)的运行环境就用provided,我们的程序在运行时依赖tomcat的运行环境
这样可以避免和tomcat冲突。
JDBC 依赖环境:测试,运行都有效
Maven 依赖传递 :
如果你加入一个core 包,会把所有依赖的包都导入进来.
Maven排除依赖:
如果 Maven依赖jar包出现两个相同jar包.必须要排除一个,不然会出现麻烦.
在需要大量依赖传递的core包pom.xml坐标里把多余的依赖给排除.
<exclusions>
<exclusion>
<groupId> 组名 </groupId>
<artifactId>项目名称<artifactId>
排除项目的三个坐标
</exclusion>
</exclusions>
<!--本地Maven仓库服务 :SSH相关配置-->
<!-- <localRepository>C:\repository</localRepository>-->
<!--本地Maven仓库服务 :SSM相关配置-->
<!-- <localRepository>C:\.m2\repository</localRepository>-->
<!--当前使用:如果使用远程仓库不需要指定仓库默认User\用户名\.m2\repository,可以指定本地仓库下载位置-->
<localRepository>C:\.m2\repository</localRepository>
<!--阿里云中央Maven云服务
<mirrors>
<mirror>
<id>nexus</id>
<name>AliyunMaven</name>
<mirrorOf>*</mirrorOf>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>-->