配色: 字号:
Maven入门与学习
2016-09-26 | 阅:  转:  |  分享 
  
Maven入门与学习

Maven可以帮我们解决什么场景问题



都是同样的代码,为什么在我的机器上可以编译执行,而在他的机器上就不行?



为什么在我的机器上可以正常打包,而配置管理员却打不出来?



项目组加入了新的人员,我要给他说明编译环境如何设置,但是让我挠头的是,有些细节我也记不清楚了



我的项目依赖一些jar包,我应该把他们放哪里?放源码库里?



这是我开发的第二个项目,还是需要上面的那些jar包,再把它们复制到我当前项目的svn库里吧



现在是第三次,再复制一次吧—–这样真的好吗?



我写了一个数据库相关的通用类,并且推荐给了其他项目组,现在已经有五个项目组在使用它了,今天我发现了一个bug,并修正了它,我会把jar包通过邮件发给其他项目组,这不是一个好的分发机制,太多的环节可能导致出现bug



项目进入测试阶段,每天都要向测试服务器部署一版。每次都手动部署,太麻烦了



Maven的概念



maven翻译为“专家”,“内行”。



Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。



Maven是跨平台的项目管理工具。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。



Maven的功能:



项目构建



依赖管理



什么是构建





为什么使用Maven



Eclipse

手工操作较多,编译、测试、部署等工作都是独立的,很难一步完成

每个人的IDE配置都不同,很容易出现本地代码换个地方编译就出错



Ant

没有一个约定的目录结构

必须明确让ant做什么,什么时候做,然后编译,打包

没有生命周期,必须定义目标及其实现的任务序列

没有集成依赖管理



Maven

拥有约定,知道你的代码在哪里,放到哪里去

拥有一个生命周期,例如执行mvninstall就可以自动执行编译,测试,打包等构建过程只需要定义一个pom.xml,然后把源码放到默认的目录,Maven帮你处理其他事情



Maven的模型





Maven的安装及配置



下载Maven



官方网站:http://maven.apache.org



本课程使用的maven的版本为3.0.5



Maven的安装



安装jdk,要求1.6或以上版本



解压maven的压缩包。解压目录最好不要有中文。





配置系统环境变量,MAVEN_HOME



设置环境变量Path,将%MAVEN_HOME%\bin加入Path中,一定要注意要用分号;与其他值隔开



验证安装是否成功,打开cmd窗口,敲入mvn-v查看





Maven安装目录分析



bin:含有mvn运行的脚本



boot:含有plexus-classworlds类加载器框架。plexus-classworlds是一个类加载器框架,相对于默认的java类加载器,它提供了更丰富的语法以方便配置,Maven使用该框架加载自己的类库。对于一般的Maven用户来说,不必关心该文件。



conf:含有settings.xml配置文件,此配置为maven的全局配置。



lib:含有Maven运行时所需要的java类库



Maven的配置



Maven的默认配置



在MAVEN_HOME下的配置文件:MAVEN_HOME/conf/settings.xml是maven全局的配置。如果不对其修改的话,默认本地仓库的路径就是:当前用户路径C:\Users[UserName].m2





localRepository:用户仓库,用于检索依赖包路径



用户配置



配置方法:



在你想保存仓库的位置创建一个目录作为仓库目录。例如在d:盘创建一个MavenRepository目录



在其中创建一个名为“repository”的目录。



修改MAVEN_HOME\conf\settings.xml







!注意:

用户级别的仓库在全局配置中一旦设置,全局配置将不再生效,转用用户所设置的仓库,否则使用默认路径仓库



创建Maven工程



遵从Maven约定



src/main/java——存放项目的.java文件

src/main/resources——存放项目资源文件,如spring,hibernate配置文件

src/test/java——存放所有测试.java文件,如JUnit测试类

src/test/resources——测试资源文件

target——项目输出位置

pom.xml——maven项目核心配置文件



Project

|-src

||-main

|||-java——存放项目的.java文件

|||-resources——存放项目资源文件,如spring,hibernate配置文件

||-test

||-java——存放所有测试.java文件,如JUnit测试类

||-resources——测试资源文件

|-target——目标文件输出位置例如.class、.jar、.war文件

|-pom.xml——maven项目核心配置文件



创建maven工程



首先建立MavenHelloWorld项目同时建立Maven约定的目录结构



MavenHelloWorld

|-src

||-main

|||-java——存放项目的.java文件

|||-resources——(暂时省略)

||-test

||-java——存放所有测试.java文件,如JUnit测试类

||-resources——(暂时省略)

|-target——(不手工创建)

|-pom.xml——maven项目核心配置文件



创建HelloWorld.java



在src/main/java/cn/change/maven目录下新建文件Hello.java



packagecn.change.maven;



publicclassHelloWorld{

publicStringsayHello(Stringname){

return"HelloWorld:"+name+"!";

}

}



新建测试文件HelloTest.java



在/src/test/java/cn/change/maven目录下新建测试文件HelloTest.java



packagecn.change.maven;



importorg.junit.Test;

importstaticjunit.framework.Assert.;



publicclassHelloWorldTest{



@Test

publicvoidtestHello(){



HelloWorldhello=newHelloWorld();

Stringresults=hello.sayHello("maven");

assertEquals("HelloWorld:maven!",results);



}



}



创建pom.xml



在项目MavenHelloWorld根目录建立pom.xml




xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xsd">

4.0.0

com.bshinfo.el

ccb_el_manager

0.0.1-SNAPSHOT

ccb_el_managerMavenWebapp

http://maven.apache.org

war



ccb_el_manager









junit

junit

4.11

test









org.springframework

spring-core

4.2.5.RELEASE





org.springframework

spring-context

4.2.5.RELEASE





org.springframework

spring-context-support

4.2.5.RELEASE





org.springframework

spring-tx

4.2.5.RELEASE





org.springframework

spring-aop

4.2.5.RELEASE





org.springframework

spring-beans

4.2.5.RELEASE





org.springframework

spring-jdbc

4.2.5.RELEASE





org.springframework.security

spring-security-core

4.0.4.RELEASE





org.springframework.security

spring-security-web

4.0.4.RELEASE





org.springframework.security

spring-security-config

4.0.4.RELEASE





org.springframework.security

spring-security-cas

4.0.4.RELEASE





org.springframework

spring-jms

4.2.5.RELEASE









org.springframework

spring-web

4.2.5.RELEASE





org.springframework

spring-webmvc

4.2.5.RELEASE









org.mybatis

mybatis

3.3.1









com.github.miemiedev

mybatis-paginator

1.2.10









org.mybatis

mybatis-spring

1.2.4









mysql

mysql-connector-java

5.1.38







commons-dbcp

commons-dbcp

1.4





commons-pool

commons-pool

1.6









log4j

log4j

1.2.17





org.slf4j

slf4j-api

1.7.19





org.slf4j

slf4j-log4j12

1.7.19









org.freemarker

freemarker

2.3.23









org.apache.tomcat

tomcat-servlet-api

8.0.32







org.aspectj

aspectjweaver

1.8.9







org.aspectj

aspectjrt

1.8.9







org.aspectj

aspectjtools

1.8.9









org.apache.activemq

activemq-core

5.7.0





org.apache.activemq

activemq-pool

5.13.2









org.jasig.cas.client

cas-client-core

3.4.1







net.sf.json-lib

json-lib

2.4

jdk15





commons-codec

commons-codec

1.10





org.codehaus.jackson

jackson-mapper-asl

1.5.0





commons-fileupload

commons-fileupload

1.2.2





org.apache.commons

commons-io

1.3.2









测试maven命令



打开cmd命令行,进入Hello项目根目录(包含有pom.xml文件的目录)



mvncompile命令



执行mvncompile命令

执行完毕后,生成了maven工程编译完成后字节码文件的生成目录target



mvnclean命令



cmd中继续录入mvnclean命令

执行完毕后,字节码生成目录被删除



mvntest命令



cmd中录入mvntest命令

执行完毕后,字节码生成目录中生成了被测试类与测试类的编译字节码和测试执行过程日志与详细报告



mvncleancompile命令



cmd中录入mvncleancompile命令

组合指令,先执行clean,再执行compile,通常应用于上线前执行,清除测试类



mvncleantest命令



cmd中录入mvncleantest命令

组合指令,先执行clean,再执行test,通常应用于测试环节



mvncleanpackage命令



cmd中录入mvncleanpackage命令

组合指令,先执行clean,再执行package,将项目打包,通常应用于发布前



执行过程:



清理————清空环境

编译————编译源码

测试————测试源码

打包————将编译的非测试类打包



mvncleaninstall命令



cmd中录入mvncleaninstall查看仓库,当前项目被发布到仓库中

组合指令,先执行clean,再执行install,将项目打包,通常应用于发布前



执行过程:



清理————清空环境

编译————编译源码

测试————测试源码

打包————将编译的非测试类打包

部署————将打好的包发布到资源仓库中



这里写图片描述



错误范例



说明:MAVEN命令输入错误,命令名称显示在[ERROR]Unknownlifecyclephase“compoile”

引号中的内容为输入错误的名称

[ERROR]Unknownlifecyclephase“compoile”.Youmustspecifyavalidlifecyclep

haseoragoalintheformat:or:

献花(0)
+1
(本文系网络学习天...首藏)