开始mvn文档格式.docx
- 文档编号:16182728
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:23
- 大小:272.35KB
开始mvn文档格式.docx
《开始mvn文档格式.docx》由会员分享,可在线阅读,更多相关《开始mvn文档格式.docx(23页珍藏版)》请在冰豆网上搜索。
1.安装mvn
首先从apachemaven下载
http:
//maven.apache.org/download.html
如果是window系统,设置环境变量
假设:
C:
\Users\tobrien>
setM2_HOME=D:
\Java\apache-maven-3.0.4
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——
//maven-proxy.codehaus.org/
DeadsimpleMavenProxy(DSMP)-
//www.pdark.de/dsmp/
Proximity-
//proximity.abstracthorizon.org/
Artifactory-
//www.jfrog.org/sites/artifactory/latest/
还有一个Nexus(有免费的版本)
//www.sonatype.org/nexus/archived
Nexus安装:
(下载OOS版本)
A.以管理员身份运行bat文件,并安装成windowsservice
默认访问地址;
//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"
>
projectxmlns="
//maven.apache.org/POM/4.0.0"
xmlns:
xsi="
//www.w3.org/2001/XMLSchema-instance"
xsi:
schemaLocation="
//maven.apache.org/POM/4.0.0http:
//maven.apache.org/maven-v4_0_0.xsd"
<
modelVersion>
4.0.0<
/modelVersion>
artifactId>
ep-cas-client<
/artifactId>
groupId>
ep-cas<
/groupId>
version>
1.0<
/version>
build>
defaultGoal>
compile<
/defaultGoal>
plugins>
plugin>
org.apache.maven.plugins<
maven-antrun-plugin<
executions>
execution>
id>
/id>
phase>
/phase>
configuration>
tasks>
antantfile="
build.xml"
targetname="
jar"
/>
/ant>
/tasks>
/configuration>
goals>
goal>
run<
/goal>
/goals>
/execution>
/executions>
/plugin>
/plugins>
/build>
/project>
此外,需要在build.xml文件中添加<
propertyname="
piler"
value="
extJavac"
否则会出现错误。
最后指向mvn能和ant命令一样,成功打包casClient.jar
如果需要部署到Nexus需要做两件事
第一步:
配置地址:
需要在POM上添加
distributionManagement>
repository>
EpRelease<
name>
EPRelease<
/name>
url>
8081/nexus/content/repositories/EpRelease/<
/url>
/repository>
snapshotRepository>
EPSnapshots<
EPSnapshots<
8081/nexus/content/repositories/EPSnapshots/<
/snapshotRepository>
/distributionManagement>
第二步:
加上论证,需要在setting.xml文件上加上
servers>
server>
username>
admin<
/username>
password>
admin123<
/password>
/server>
/servers>
然后执行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:
执行mvnarchetype:
可以看到系统会列出所有的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:
com.alibaba.citrus.sample:
archetype-webx-quickstart(-)
3:
com.cedarsoft.open.archetype:
multi(-)
4:
simple(-)
…….
182:
org.apache.maven.archetypes:
maven-archetype-archetype(Anarchetypewhichcontainsasamplearchetype.)
183:
maven-archetype-j2ee-simple(AnarchetypewhichcontainsasimplifedsampleJ2EEapplication.)
184:
maven-archetype-marmalade-mojo(-)
185:
maven-archetype-mojo(AnarchetypewhichcontainsasampleasampleMavenplugin.)
186:
maven-archetype-plugin(AnarchetypewhichcontainsasampleMavenplugin.)
187:
maven-archetype-plugin-site(AnarchetypewhichcontainsasampleMavenpluginsite.Thisarchetypecanbelayereduponan
existingMavenpluginproject.)
188:
maven-archetype-portlet(AnarchetypewhichcontainsasampleJSR-268Portlet.)
189:
maven-archetype-profiles(-)
190:
maven-archetype-quickstart(AnarchetypewhichcontainsasampleMavenproject.)
191:
maven-archetype-site(AnarchetypewhichcontainsasampleMavensitewhichdemonstratessomeofthesupporteddocumenttypeslike
APT,XDoc,andFMLanddemonstrateshowtoi18nyoursite.Thisarchetypecanbelayered
uponanexistingMavenproject.)
192:
maven-archetype-site-simple(AnarchetypewhichcontainsasampleMavensite.)
193:
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试试看
//docs.codehaus.org/display/MAVENUSER/Archetypes+List
列出部分archetypes
B.接下来就要把原来项目的数据往现有的骨架上进行添加,并修改相应的pom等配置文件
1.通过mvndependency:
list(tree)分析依赖包很重要,有一个这里的经验在中央仓库里面可能会直接有ehcache目录但是不正确应该是看net.sf下面的,我估计是历史遗留的问题。
2.POM:
ep-easyui-webapp<
packaging>
war<
/packaging>
1.0-SNAPSHOT<
ep-easyui-webappMavenWebapp<
//maven.apache.org<
dependencies>
dependency>
javax.servlet.jsp<
jsp-api<
2.0<
/dependency>
javax.servlet.jsp.jstl<
jstl-api<
1.2<
org.springframework<
spring-webmvc<
2.5.6<
spring<
antlr<
2.7.6<
c3p0<
0.9.1.2<
backport-util-concurrent<
3.1<
cglib<
cglib-nodep<
2.1_3<
commons-beanutil
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 开始 mvn