maven的使用及常见错误

概念
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值