开始mvn.docx

上传人:b****5 文档编号:3277187 上传时间:2022-11-21 格式:DOCX 页数:23 大小:272.35KB
下载 相关 举报
开始mvn.docx_第1页
第1页 / 共23页
开始mvn.docx_第2页
第2页 / 共23页
开始mvn.docx_第3页
第3页 / 共23页
开始mvn.docx_第4页
第4页 / 共23页
开始mvn.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

开始mvn.docx

《开始mvn.docx》由会员分享,可在线阅读,更多相关《开始mvn.docx(23页珍藏版)》请在冰豆网上搜索。

开始mvn.docx

开始mvn

如何构建MVN工作环境

1.构建mvn仓库

Maven仓库------就是放置所有JAR文件(WAR,ZIP,POM等等)的地方,所有Maven项目可以从同一个Maven仓库中获取自己所需要的依赖JAR,这节省了磁盘资源。

此外,由于Maven仓库中所有的JAR都有其自己的坐标,该坐标告诉Maven它的组ID,构件ID,版本,打包方式等等,因此Maven项目可以方便的进行依赖版本管理。

你也不在需要提交JAR文件到SCM仓库中,你可以建立一个组织层次的Maven仓库,供所有成员使用。

本地仓库vs.远程仓库

本地仓库:

运行Maven的时候,Maven所需要的任何构件都是直接从本地仓库获取的。

如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库的构件。

Maven缺省的本地仓库地址为${user.home}/.m2/repository 。

也就是说,一个用户会对应的拥有一个本地仓库。

修改本地仓库有这么几种方式

1.可以自定义本地仓库的位置,修改${user.home}/.m2/settings.xml :

如:

 D:

\java\repository  

2.在运行时指定本地仓库位置:

mvncleaninstall-Dmaven.repo.local=/home/juven/myrepo/

Maven中央仓库:

安装好Maven之后,我们可以建立一个简单的项目,配置一些简单的依赖,然后运行mvncleaninstall,项目就构建好了。

我们没有手工的去下载任何jar文件,这一切都是因为Maven中央仓库的存在,当Maven在本地仓库找不到需要的jar文件时,它会查找远程仓库,而一个原始的Maven安装就自带了一个远程仓库——Maven中央仓库。

超级POM:

我可以找到这个文件:

${M2_HOME}/lib/maven-2.0.10-uber.jar ,打开该文件,能找到超级POM:

\org\apache\maven\project\pom-4.0.0.xml ,它是所有MavenPOM的父POM,所有Maven项目继承该配置,你可以在这个POM中发现如下配置

1.安装mvn

首先从apachemaven下载

http:

//maven.apache.org/download.html

如果是window系统,设置环境变量

假设:

C:

\Users\tobrien>setM2_HOME=D:

\Java\apache-maven-3.0.4

C:

\Users\tobrien>setPATH=%PATH%;%M2_HOME%\bin

安装后,运行cmd,输入mvn–v来验证安装是否成功

输入mvnhelp:

system会打印系统环境以及下载maven-help-plugin包括pom文件和jar,在用户目录下能找到.m文件

比如我的C:

\Users\dell\.m2

里面maven所有的构件都存放在该仓库里面。

 

Settings.xml:

该文件是一些配置文件,比如http代理信息,你可以在

$M2_HOME/conf/settings.xml(全局的)找到,然后复制到C:

\Users\dell\.m2(当前用户范围的)中。

 

2.安装仓库

对很多公司来说,jar这类的依赖不可能直接从中央仓库获取,公司内部需要自己构建仓库。

一些流行且免费的Maven仓库工具有:

 标准Maven代理codehaus—— http:

//maven-proxy.codehaus.org/

DeadsimpleMavenProxy(DSMP)- http:

//www.pdark.de/dsmp/

Proximity- http:

//proximity.abstracthorizon.org/

Artifactory- http:

//www.jfrog.org/sites/artifactory/latest/

还有一个Nexus(有免费的版本)

http:

//www.sonatype.org/nexus/archived

Nexus安装:

(下载OOS版本)

A.以管理员身份运行bat文件,并安装成windowsservice

默认访问地址;

http:

//localhost:

8081/nexus

用户名+密码:

B.配置

点击Repositories,右边显示的列表中有个type类型,值有group,hosted,proxy,virtual;这里我们不关心virtual,只介绍下另外三种类型:

hosted:

本地仓库,通常我们会部署自己的构件到这一类型的仓库。

proxy:

代理仓库,它们被用来代理远程的公共仓库,如maven中央仓库。

group:

仓库组,用来合并多个hosted/proxy仓库,通常我们配置maven依赖仓库组。

 

(1)创建本地仓库(hosted):

Nexus预定义了3个本地仓库,分别为Releases,Snapshots,和3rdParty。

这三个仓库都有各自明确的目的。

Releases用于部署我们自己的release构件。

Snapshots用于部署我们自己的snapshot构件。

3rdParty用于部署第三方构件,有些构件如Oracle的JDBC驱动,我们不能从公共仓库下载到,我们就需要将其部署到自己的仓库中。

目前我们先创建EpRelease和EpSnapshots两个库,其中EpRelease是正式发布的库;而EpSnapshots是不稳定版本发布的库

(2)Central库为中央仓库,默认DownloadRemoteIndexes是false,如果需要更新需要打开。

Maven默认链接到中央仓库,这里我们通过在setting.xml上面配置使maven连接到本地仓库Nexus中。

配置片段:

(3)部署构件至Nexus

Nexus提供了两种方式来部署构件,你可以从UI直接上传,也可以配置Maven部署构件:

通过NexusUI部署:

有时候有个jar文件你无法从公共Maven仓库找到,但是你能从其它得到这个jar文件(甚至是POM),那么完全可以将这个文件部署到Nexus中.

点击左边导航栏的"Repository",在右边的仓库列表中选择一个仓库,如“3rdParty”,然后会看到页面下方有四个tab,选择最后一个“Upload”,你会看到构件上传界面。

选择你要上传的构件,并指定POM,(或者手工编写GAV等信息),最后点击Upload,该构件就直接被部署到了Nexus的"3rdParty"仓库中。

通过Maven部署:

如果将自己开发的模板放入Nexus,让其他人自由地通过POM来获取?

可以通过Maven部署,下面以casClient为例

1.编写POM

POM(projectObjectModel项目对象模型)定义了项目的基本信息,用于描述项目如何构建,声明项目依赖等。

坐标:

在Mvn世界中有大量的构件,mvn通过坐标元素groupid,artifactId,version,packaging,classifier来确定当前的唯一构件,比如当需要使用Java5平台上TestNG的5.8版本时,就可以告诉Maven:

”groupId=org.testng;artifactId=testing;version=5.8;classifier=jdk15”

他主要要素有groupid,artifactid 和version三个,这三个要素定义了一个项目基本的坐标。

Groupid:

定义了项目属于哪个组,这个组往往和项目所在的组织或者公司存在关联

Artifactid:

定义了当前Maven项目在组中的唯一ID

Version:

指定当前版本

另外:

Packaging:

该元素定义Maven项目的打包方式,默认为jar方式

Classifier:

用来帮助定义构建输出的一些附属构件,通常需要相应的插件来配合完成。

备注:

默认情况下,Maven假设项目的主代码位于src/main/java目录;测试代码默认目录是src/test/java

2.目前casClient已经有了现成的build.xml,我们需要编写pom文件来调用,pom文件放在根目录下,这里晒一晒该xml:

xmlversion="1.0"encoding="UTF-8"?

>

//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/maven-v4_0_0.xsd">

4.0.0

ep-cas-client

ep-cas

1.0

compile

org.apache.maven.plugins

maven-antrun-plugin

compile

compile

run

此外,需要在build.xml文件中添加

否则会出现错误。

最后指向mvn能和ant命令一样,成功打包casClient.jar

如果需要部署到Nexus需要做两件事

第一步:

配置地址:

需要在POM上添加

EpRelease

EPRelease

http:

//localhost:

8081/nexus/content/repositories/EpRelease/

EPSnapshots

EPSnapshots

http:

//localhost:

8081/nexus/content/repositories/EPSnapshots/

第二步:

加上论证,需要在setting.xml文件上加上

EpRelease

admin

admin123

EPSnapshots

admin

admin123

然后执行mvndeploy,执行成功后,刷新Nexus会发现BrowseIndex已经存在了CasClient,如图:

(后来发现打的jar是空的,最后还是简单把这个client改成maven结构)

至此,我们的jar能够放入Nexus中。

(4)从Nexus获取jar:

下面我以easyUi框架为例子来,来构建相应的MVN项目。

A.前面EesyUI的是用ant目录构建的,那么我们需要先用mvn的archetype来生成一个mvn的项目骨架。

如果是Maven3,执行mvnarchetype:

generate

如果是Maven2,最好执行mvnorg.apache.maven.plugins:

maven-archetype-plugin:

2.0-alpha-5:

generate

执行mvnarchetype:

generate

可以看到系统会列出所有的archetype的插件,

[INFO]GeneratingprojectinInteractivemode

[INFO]Noarchetypedefined.Usingmaven-archetype-quickstart(org.apache.maven.archetypes:

maven-archetype-quickstart:

1.0)

Choosearchetype:

1:

remote->com.agilejava.docbkx:

docbkx-quickstart-archetype(-)

2:

remote->com.alibaba.citrus.sample:

archetype-webx-quickstart(-)

3:

remote->com.cedarsoft.open.archetype:

multi(-)

4:

remote->com.cedarsoft.open.archetype:

simple(-)

…….

182:

remote->org.apache.maven.archetypes:

maven-archetype-archetype(Anarchetypewhichcontainsasamplearchetype.)

183:

remote->org.apache.maven.archetypes:

maven-archetype-j2ee-simple(AnarchetypewhichcontainsasimplifedsampleJ2EEapplication.)

184:

remote->org.apache.maven.archetypes:

maven-archetype-marmalade-mojo(-)

185:

remote->org.apache.maven.archetypes:

maven-archetype-mojo(AnarchetypewhichcontainsasampleasampleMavenplugin.)

186:

remote->org.apache.maven.archetypes:

maven-archetype-plugin(AnarchetypewhichcontainsasampleMavenplugin.)

187:

remote->org.apache.maven.archetypes:

maven-archetype-plugin-site(AnarchetypewhichcontainsasampleMavenpluginsite.Thisarchetypecanbelayereduponan

existingMavenpluginproject.)

188:

remote->org.apache.maven.archetypes:

maven-archetype-portlet(AnarchetypewhichcontainsasampleJSR-268Portlet.)

189:

remote->org.apache.maven.archetypes:

maven-archetype-profiles(-)

190:

remote->org.apache.maven.archetypes:

maven-archetype-quickstart(AnarchetypewhichcontainsasampleMavenproject.)

191:

remote->org.apache.maven.archetypes:

maven-archetype-site(AnarchetypewhichcontainsasampleMavensitewhichdemonstratessomeofthesupporteddocumenttypeslike

APT,XDoc,andFMLanddemonstrateshowtoi18nyoursite.Thisarchetypecanbelayered

uponanexistingMavenproject.)

192:

remote->org.apache.maven.archetypes:

maven-archetype-site-simple(AnarchetypewhichcontainsasampleMavensite.)

193:

remote->org.apache.maven.archetypes:

maven-archetype-webapp(AnarchetypewhichcontainsasampleMavenWebappproject.)

…..

 大概看上去有5百多个archetype

屏幕提示:

Chooseanumberorapplyfilter(format:

[groupId:

]artifactId,casesensitivecontains):

190:

我们选择183回车后

需要分别填写自己的groupId通常是公司的域名,和artifactId,以及package

这里需要注意的是,本身archetype插件也是有这两个要素的,比如183的那行,org.apache.maven.archetypes表示groupId;maven-archetype-j2ee-simple表示artifactId

命令后,看到的文件目录结构为:

看上去好像不太符合我们的,那我们用193的maven-archetype-webapp试试看

http:

//docs.codehaus.org/display/MAVENUSER/Archetypes+List

列出部分archetypes

B.接下来就要把原来项目的数据往现有的骨架上进行添加,并修改相应的pom等配置文件

1.通过mvndependency:

list(tree)分析依赖包很重要,有一个这里的经验在中央仓库里面可能会直接有ehcache目录但是不正确应该是看net.sf下面的,我估计是历史遗留的问题。

2.POM:

//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/maven-v4_0_0.xsd">

4.0.0

ep-easyui-webapp

ep-easyui-webapp

war

1.0-SNAPSHOT

ep-easyui-webappMavenWebapp

http:

//maven.apache.org

javax.servlet.jsp

jsp-api

2.0

javax.servlet.jsp.jstl

jstl-api

1.2

org.springframework

spring-webmvc

2.5.6

org.springframework

spring

2.5.6

antlr

antlr

2.7.6

c3p0

c3p0

0.9.1.2

backport-util-concurrent

backport-util-concurrent

3.1

cglib

cglib-nodep

2.1_3

commons-beanutil

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1