//maven.apache.org/POM/4.0.0"
xmlns:
xsi="http:
//www.w3.org/2001/XMLSchema-instance"
xsi:
schemaLocation="http:
//maven.apache.org/POM/4.0.0http:
//maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
ce.demo.mvn
app
1.0-SNAPSHOT
jar
app
http:
//maven.apache.org
UTF-8
junit
junit
3.8.1
test
5.创建完成之后,就需要在cmd执行一些命令来验证了。
首先进入app目录,执行命令mvncompile。
然后会在该目录下发现新生成的目录target\classes,即编译后的class文件(包括它的包目录)就放在了这里。
再执行命令mvnpackage,在目录target中就会生成app-1.0.jar文件。
该文件的全名由如下形式确定:
artifactId-version.packaging。
最后执行命令mvninstall,会将项目jar包安装到本地仓库中,以便其他项目使用。
四、Eclipse构建maven项目
1.安装m2eclipse插件:
在eclipse里构建maven项目,首先需要安装m2eclipse。
打开Eclipse,在菜单栏中选择Help->InstallNewSoftware
在Install窗口中点击Workwith后面的Add按钮
在弹出的AddSite窗口中:
Name:
m2e,Location:
http:
//m2eclipse.sonatype.org/sites/m2e
点击OK按钮
在列表中勾选MavenIntegrationforEclipse,点击next按钮。
勾选所有选项点击Finish按钮,等待安装。
安装成功后重新启动eclipse。
2.建立自己的资源库
一般情况下,下载的依赖包会自动存放在我的文档里,这样如果重装系统或者C盘出现什么问题,你的资源库就会出问题,以前下过的资源包以后又要重新下载,很麻烦。
所以我们最好在别的地方建立自己的资源库,并进行配置。
(1)进入到C:
\Users\Administrator这个目录(xp和win7目录结构不一样,反正就是进入到用户文件夹),找到.m2这个文件夹。
进去拷贝settings.xml到你想指定的地方,我放到了E:
\work\maven下。
(2)打开settings.xml,找到
--localRepository
|Thepathtothelocalrepositorymavenwillusetostoreartifacts.
|
|Default:
~/.m2/repository
/path/to/local/repo
-->
下面加一行:
E:
\work\maven\repos
(3)建立repos文件夹。
(4)Eclipse里,window-->preferences-->Maven-->UserSetting下,修改为E:
\work\maven\settings.xml
(5)再进行编辑后,下载的资源包就会存放到你指定的目录下了。
3.在eclipse里配置maven:
(1)设置m2eclipse插件所关联的Maven程序:
选择window-->preferences-->Maven,在右边选择Add…按钮,就会”按钮,就会弹出如下选择Maven安装目录的选择窗口,选中Maven的安装目录,然后点击“确定”按钮:
(2)设置自定义本地仓库:
根据上图,找到UserSetting,UserSettings”节点,将它改为自己刚才设置的setting.xml的路径,如下图所示:
4.创建Maven工程,在菜单栏选择File->New->Other->Maven->MavenProject。
5.点击next,设置工作空间后再点击next,选择maven-archetype-quickstart,快速创建一个Maven的项目(如果创建一个web项目,要选择的是maven-archetype-webapp)。
6.设置GroupId:
项目或组织的唯一标识,ArtifactId:
工程名。
点击Finish,完成。
7.工程建立完成后的目录结构应该是这样的:
五、Maven的依赖
1.依赖的认识:
相信通过以上的学习,已经对Maven有了初步的了解。
在构建第一个Maven项目时,已经在pom.xml这个文件中接触到了依赖,因为项目测试中需要依赖junit.jar包,构建项目的时候自动就通过依赖导入了junit.jar。
我们可以在Maven的仓库中来查找引入依赖的构件。
Maven仓库的地址为:
我们来看上例中pom.xml中的依赖配置:
依赖会包含基本的groupId,artifactId,version等元素,根元素project下的dependencies可以包含一个或者多个dependency元素,可以声明一个或者多个依赖。
(1)groupId,artifactId和version:
依赖的基本坐标,对于任何一个依赖来说,基本坐标是最重要的,Maven根据坐标才能找到需要的依赖。
(2)type:
依赖的类型,对应于项目坐标定义的packaging。
大部分情况下,该元素不必声明,其默认值是jar。
(3)scope:
依赖的范围。
(4)optional:
标记依赖是否可选。
(5)exclusions:
用来排除传递性依赖。
2.依赖范围:
(1)compile:
编译依赖范围。
如果没有指定,就会默认使用该依赖范围。
使用此依赖范围的Maven依赖,对于编译、测试、运行三种classpath都有效。
(2)test:
测试依赖范围。
使用此依赖范围的Maven依赖,只对于测试classpath有效,在编译主代码或者运行项目的使用时将无法使用此类依赖。
典型的例子就是JUnit,它只有在编译测试代码及运行测试的时候才需要。
(3)provided:
已提供依赖范围。
使用此依赖范围的Maven依赖,对于编译和测试classpath有效,但在运行时无效。
典型的例子是servlet-api,编译和测试项目的时候需要该依赖,但在运行项目的时候,由于容器已经提供,就不需要Maven重复地引入一遍。
(4)runtime:
运行时依赖范围。
使用此依赖范围的Maven依赖,对于测试和运行classpath有效,但在编译主代码时无效。
典型的例子是JDBC驱动实现,项目主代码的编译只需要JDK提供的JDBC接口,只有在执行测试或者运行项目的时候才需要实现上述接口的具体JDBC驱动。
3.传递性依赖与排除依赖:
有时候我们设置依赖时,比如想引入struts2,就会自动把struts2所依赖的包统统导进来,这就是传递性依赖。
有时候这是好事,然而有时候我们不需要其中的一些传递性依赖,或者会引起包与包之间的冲突,我们可以使用exclusions元素声明排除依赖,exclusions可以包含一个或者多个exclusion子元素,因此可以排除一个或者多个传递性依赖。
如下例:
4.将本地包导入到仓库:
有时网上的依赖包不是特别得全,又或者网络太慢导致有些包下不下来,这是就需要将我们自己本地的包导入到仓库中,再设置依赖的时候根据我们导包时设置的坐标,就可以导入我们自己的jar包到项目中。
(1)在命令行界面输入:
mvninstall:
install-file-Dfile=jar包的路径名称-DgroupId=坐标-DartifactId=组名-Dversion=版本号-Dpackaging=jar。
这里举一个例子,把本地的mypager-1.0-GA.jar导入到仓库:
出现以下提示,说明本地包导入成功。
(2)但是注意看,它导入的路径是e:
\apache-maven-3.0.3\lib,也就是说,执行成功后,jar包是导入了Maven的安装目录的lib下。
所以我们需要把mypager文件夹拷贝出来到我们自己的本地库里,也就是E:
\work\maven\repos下。
然后在pom.xml里引入的时候,我们就可以这么写:
这一章的内容大部分是网上的讲解,直接看的话肯定不好理解。
建议自己搭一个简单的maven工程,在pom.xml里自己设置几个简单的依赖试试,比如写一个mysql的增删改查,你就需要导入mysql的jar包,就需要设置依赖导入啦。
然后再接着把项目扩大一点点的引入其他的包。
六、在Eclipse里构建Struts2+Hibernate+Spring项目
1.创建Maven工程就像第四章那样,记得要选择maven-archetype-webapp。
这个才是web项目。
2.需要自己创建src/main/resources,项目的配置文件就放在这里。
而项目的源代码则放在src/main/java。
Web资源:
包括html、css、js、jsp、等存放在src-->main-->webapp下。
3.和构建普通ssh项目一样,创建struts.xml、hibernate.cfg.xml、applicationContext.xml配置文件,修改web.xml等搭建ssh项目必须的工作。
4.接下来就是初学者万分苦恼的工作了……依赖的配置!
这里需要注意并一定要注意的是,一定要时刻关注传递性依赖,解决传递性依赖的方法就是排除依赖……总之,要有耐心,本人解决这个问题整整用了两天……不过解决之后,非常有助于了解每个包在项目里的作用,以及了解替代包与包冲突。
5.搭建好项目后,需要做的就是发布这个项目了。
(1)右键项目-->Runas-->Mavenbuild…
(2)在出现的窗口输入”cleanpackage”,回车。
(3)刷新工程,在target里就出现了下面的内容,将war文件拷贝到tomcat的webapps目录下,启动tomcat,访问你的项目…OK!