概念
maven是一种把整个项目当做对象来实现的,引用了oop(面向对象)的思想。而我们引用的pom.xml文件,全写为project object module(项目对象模型),把项目当做对象来管理。
主要功能
maven的第一个好处是依赖管理:即我们编写java程序时,是需要种种jar包作为支持的,而对jar包的使用,就叫做依赖,maven可以帮我们完成这一过程,就有了上述概念。
在pom.xml中,可以发现配置的代码为
<dependecy>
<groupId>commons-httpclient</groupId>
<attfactId>commons-httpclient</attfactId>
<version>3.1</version>
</dependecy>
gourpId一般由公司名表示,attfactId一般是项目名称,version是版本号。
暂时理解【坐标是项目A自己引用jar包的设定,而别的项目想使用这些jar包,通过maven输入坐标即可使用A所引用的jar包】
构建
指的是项目从编译-测试-运行-打包-安装 的整个过程交给maven管理叫做构建。
仓库
本地仓库:本地存放jar包的目录
私服:私人搭建的服务器。一般在企业内部局域网中使用。(企业内部公用jar包)
中央仓库:maven内置了一个远程仓库地址,他就是中央仓库,访问url http://repo1.maven.org/maven2/
maven在查找jar包时遵循的顺序:先找本地—再找私服—再找中央仓库
maven的指令
clean 清除maven工程,删除target目录及其目录下所有内容
compile 编译 将src/main/java下的java源文件编译为class文件并输出到target下的classes目录下。
package 打包命令
test 运行测试类
maven三套生命周期
clean Lifecycle:在进行真正构建之前进行一些清理工作
Default Lifecyle:构建的核心部分:编译、测试、打包、部署、运行
Site Lifecycle:生成项目报告,站点,发布站点。
属于同一个指令周期内的指令,当后面的命令执行时,前面的命令会自动执行。
#问题#
创建maven项目时,出现不能rename的问题;
解决:新建maven的工程文件夹,在此文件夹下新建工程。
建好maven工程报错:roject.facet.core.FacetedprojectFrameworkException:Falied while installing Dynamic Web Module 3.0.
解决:myeclipse和jdk不兼容的问题,后配置环境为eclipse mars1.0 +jdk1.8 完美解决
maven使用过程中构建失败
解决:此问题八成是因为远端中央仓库下载插件和jar包不能,配置aliyun镜像,run as—》maven install 下载必须jar包即可。
服务器独立配置
可通过配置pom.xml来让tomcat读取,为项目形成特殊的端口、编码等配置,如下:
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat6-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8080</port>
<path>/pro</path>
<uriEncoding>utf-8</uriEncoding>
</configuration>
</plugin>
</plugins>
</build>
依赖作用范围:
在程序构建的过程中,假如java的编译包和tomcat本身所使用的jar包有所冲突(重复),报错如下:
loader constraint violation: loader (instance of org/apache/jasper/servlet/JasperLoader) previously initiated loading for a different type with name “javax/servlet/http/HttpServletRequest”
此时需要应用到依赖的作用范围:
Maven的scope依赖作用域说明
1、test范围指的是测试范围有效,在编译和打包时都不会使用这个依赖 eg:junit
2、compile范围指的是编译范围有效,在编译和打包时都会将依赖存储进去
3、provided依赖:在编译和测试的过程有效,最后生成war包时不会加入,诸如:servlet-api,因为servlet-api,tomcat等web服务器已经存在了,如果再打包会冲突 eg:servlet-api
4、runtime在运行的时候依赖,在编译的时候不依赖 eg:jdbc驱动
5、system?不建议使用 类似provided
默认的依赖范围是compile
#问题
关于maven依赖搜索找不到ojdbc驱动包的解释和解决
解决:oracle驱动包中央仓库没有,需自己安装。oracle驱动包在oracle的目录下有{oracle目录}\jdbc\lib.在cmd中使用maven的install命令安装ojdbc驱动
命令:mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.4.0 -Dpackaging=jar -Dfile=ojdbc14.jar