持续集成培训资料程国星0325.docx

上传人:b****6 文档编号:3731503 上传时间:2022-11-25 格式:DOCX 页数:30 大小:1.57MB
下载 相关 举报
持续集成培训资料程国星0325.docx_第1页
第1页 / 共30页
持续集成培训资料程国星0325.docx_第2页
第2页 / 共30页
持续集成培训资料程国星0325.docx_第3页
第3页 / 共30页
持续集成培训资料程国星0325.docx_第4页
第4页 / 共30页
持续集成培训资料程国星0325.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

持续集成培训资料程国星0325.docx

《持续集成培训资料程国星0325.docx》由会员分享,可在线阅读,更多相关《持续集成培训资料程国星0325.docx(30页珍藏版)》请在冰豆网上搜索。

持续集成培训资料程国星0325.docx

持续集成培训资料程国星0325

1.Maven

1.Maven安装

1、下载并安装JDK

2、下载Maven,地址:

http:

//maven.apache.org/download.cgi

3、解压到D:

\ci_tools\maven

4、添加环境变量MAVEN_HOME,变量值为Maven的安装路径

5、在变量path中追加%MAVEN_HOME%\bin

6、测试安装,在控制台中输入mvn-v,安装成功后结果如下:

2.名词解释

Project:

任何您想build的事物,Maven都可以认为它们是工程。

这些工程被定义为工程对象模型(POM,PojectObjectModel)。

一个工程可以依赖其它的工程;一个工程也可以由多个子工程构成

POM:

POM(pom.xml)是Maven的核心文件,它是指示Maven如何工作的元数据文件,类似于Ant中的build.xml文件。

POM文件位于每个工程的根目录中。

GroupId:

groupId是一个工程的在全局中唯一的标识符,一般地,它就是工程名。

groupId有利于使用一个完全的包名,将一个工程从其它有类似名称的工程里区别出来。

ArtifactId:

artifact是工程将要产生或需要使用的文件,它可以是jar文件,源文件,二进制文件,war文件,甚至是pom文件。

每个artifact都由groupId和artifactId组合的标识符唯一识别。

需要被使用(依赖)的artifact都要放在仓库(见Repository)中,否则Maven无法找到(识别)它们。

Dependency:

为了能够build或运行,一个典型的Java工程会依赖其它的包。

在Maven中,这些被依赖的包就被称为dependency。

dependency一般是其它工程的artifact。

Plug-in:

Maven是由插件组织的,它的每一个功能都是由插件提供的。

插件提供goal(类似于Ant中的target),并根据在POM中找到的元数据去完成工作。

主要的Maven插件要是由Java写成的,但它也支持用Beanshell或Ant脚本写成的插件。

Repository:

仓库用于存放artifact,它可以是本地仓库,也可以是远程仓库。

Maven有一个默认的远程仓库--central,可以从http:

//repo1.maven.org/maven2/下载其中的artifact。

在Windows平台上,本地仓库的默认地址是User_Home\.m2\repository。

Snapshot:

工程中可以(也应该)有一个特殊版本,它的版本号包括SNAPSHOT字样。

该版本可以告诉Maven,该工程正处于开发阶段,会经常更新(但还未发布)。

当其它工程使用此类型版本的artifact时,Maven会在仓库中寻找该artifact的最新版本,并自动下载、使用该最新版。

3.生成App工程

输入命令:

D:

\demo>mvnarchetype:

create-DgroupId=cc.chinagps.demo-DartifactId=demo-app

查看生成目录结构和文件,如下:

app

|--pom.xml

`--src

|--main

|`--java

|`--cc

|`--chinagps

|`--demo

|`--App.java

`--test

`--java

`--cc

`--chinagps

`--demo

`--AppTest.java

一般POM项目结构:

app

|--pom.xml

`--src

|--main

|`--java

|`--resources

|`--webapp

|`--test

|`--java

|`--resource

查看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/xsd/maven-4.0.0.xsd">

4.0.0

cc.chinagps.demo

demo-app

1.0-SNAPSHOT

jar

demo-app

http:

//maven.apache.org

UTF-8

junit

junit

3.8.1

test

执行编译mvncompile

执行测试mvntest

执行打包mvnpackage

4.生成WebApp工程

D:

\demo>mvnarchetype:

create-DgroupId=cc.chinagps.demo-DartifactId=demo-web-DarchetypeArtifactId=maven-archetype-webapp

生成文件目录结构:

webapp

|--pom.xml

|`--src

|`--main

|`--resources

|`--webapp

|--index.jsp

|--WEB-INF

`--web.xml

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

cc.chinagps.demo

demo-web

war

1.0-SNAPSHOT

demo-webMavenWebapp

http:

//maven.apache.org

junit

junit

3.8.1

test

demo-web

5.父子工程

在D:

\demo建立一个pom.xml文件,内容如下:

//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

cc.chinagps.demo

demo-parent

pom

1.0-SNAPSHOT

demo

http:

//maven.apache.org

demo-app

demo-web

在D:

\demo目录下执行clean,complie,package等命令,观察输出结果。

6.使用IDE

eclipse安装m2eclipse插件,在线安装地址:

http:

//m2eclipse.sonatype.org/sites/m2e。

而MyEclipse8.5以后版本自带有Maven4MyEclipse插件。

不要使用IDE内嵌的Maven

导入工程:

选择File->import,在Maven4MyEclipse中选择ExistingMavenProjects,选择下一步

在项目根目录中输入D:

\demo

点击finish完成导入。

在IDE中运行clean,compile,test,package等指令

2.Nexus

7.Nexus介绍

Nexus是Maven仓库管理器,如果你使用Maven,你可以从Maven中央仓库下载所需要的构件(artifact),但这通常不是一个好的做法,你应该在本地架设一个Maven仓库服务器,在代理远程仓库的同时维护本地仓库,以节省带宽和时间,Nexus就可以满足这样的需要。

此外,他还提供了强大的仓库管理功能,构件搜索功能,它基于REST,友好的UI是一个extjs的REST客户端,它占用较少的内存,基于简单文件系统而非数据库。

这些优点使其日趋成为最流行的Maven仓库管理器。

8.下载和安装

你可以从http:

//nexus.sonatype.org/downloads/下载最新版本的Nexus,笔者使用的是2.3.1版本。

Nexus提供了两种安装方式,一种是内嵌Jetty的bundle,只要你有JRE就能直接运行。

第二种方式是WAR,你只须简单的将其发布到web容器中即可使用。

Bundle方式安装

解压nexus-2.3.1-01-bundle.zip至任意目录,如D:

\ci_tools,然后打开CMD,cd至目录D:

\ci_tools\\nexus-2.3.1-01-bundle\nexus-2.3.1-01\bin\,运行nexusconsole。

你会看到Nexus的启动日志,当你看到“StartedSelectChannelConnector@0.0.0.0:

8081”之后,说明Nexus启动成功了,然后打开浏览器,访问http:

//127.0.0.1:

8081/nexus,你会看到如下的页面:

要停止Nexus,Ctrl+C即可。

此外nexusinstall可以用来将Nexus安装成一个windows服务,其余的脚本则对应了启动(nexusstart),停止(nexusstop),重启(nexusrestart),卸载(nexusuninstall)Nexus服务。

WAR方式安装

你需要有一个能运行的web容器,这里以Tomcat为例,加入Tomcat的安装目录位于D:

\dev_tools\apache-tomcat-6.0.18,首先我们将下载的nexus-webapp-2.3.1.war重命名为nexus.war,然后复制到D:

\ci_tools\apache-tomcat-6.0.18\webapps\nexus.war,然后启动CMD,cd到D:

\ci_tools\apache-tomcat-6.0.18\bin\目录,运行startup.bat。

一切OK,现在可以打开浏览器访问http:

//127.0.0.1:

8080/nexus,你会得到和上图一样的界面。

9.代理外部Maven仓库

要管理Nexus,你首先需要以管理员身份登陆,点击界面右上角的login,输入默认的登录名和密码:

admin/admin123,登陆成功后,你会看到左边的导航栏增加了很多内容:

这里,可以管理仓库,配置Nexus系统,管理任务,管理用户,角色,权限,查看系统的RSS源,管理及查看系统日志,等等。

你会看到Nexus的功能十分丰富和强大,本文,笔者只介绍一些最基本的管理和操作。

10.代理Maven中央仓库

点击左边导航栏的Repositories,界面的主面板会显示所有一个所有仓库及仓库组的列表,你会看到它们的Type字段的值有group,hosted,proxy,virtual。

这里我们不关心virtual,只介绍下另外三种类型:

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

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

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

由此我们知道,我们需要配置一个Maven中央仓库的proxy,其实Nexus已经内置了MavenCentral,但我们需要做一些配置。

点击仓库列表中的MavenCentral,你会注意到它的Policy是release,这说明它不会代理远程仓库的snapshot构件,这是有原因的,远程仓库的snapshot版本构件不稳定且不受你控制,使用这样的构件含有潜在的风险。

然后我们发现主面板下方有三个Tab,分别为Browse,Configuration和Mirrors,我们点击Configuration进行配置,你现在需要关心的是两个配置项:

“RemoteStorageLocation”为远程仓库的地址,对于MavenCentral来说是http:

//repo1.maven.org/maven2/;“DownloadRemoteIndexes”顾名思义是指是否下载远程索引文件,MavenCentral的该字段默认为False,这是为了防止大量Nexus无意识的去消耗中央仓库的带宽(中央仓库有大量的构件,其索引文件也很大)。

这里我们需要将其设置为True,然后点击Save。

在Nexus下载的中央仓库索引文件之后,我们就可以在本地搜索中央仓库的所有构件。

下图展示了我们刚才所涉及的配置:

11.添加一个代理仓库

这里我们再举一个例子,我们想要代理Sonatype的公共仓库,其地址为:

http:

//repository.sonatype.org/content/groups/public/。

步骤如下,在Repositories面板的上方,点击Add,然后选择ProxyRepository,在下方的配置部分,我们填写如下的信息:

RepositoryID-sonatype;RepositoryName-SonatypeRepository;RemoteStorageLocation-http:

//repository.sonatype.org/content/groups/public/。

其余的保持默认值,需要注意的是RepositoryPolicy,我们不想代理snapshot构件,原因前面已经描述。

然后点击Save。

配置页面如下:

管理本地Maven仓库

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

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

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

当然你也可以创建自己的本地仓库,步骤和创建代理仓库类似,点击Repository面板上方的Add按钮,然后选择HostedRepository,然后在下方的配置面板中输入id和name,注意这里我们不再需要填写远程仓库地址,RepositoryType则为不可修改的hosted,而关于RepositoryPolicy,你可以根据自己的需要选择Release或者Snapshot,如图:

管理Maven仓库组

Nexus中仓库组的概念是Maven没有的,在Maven看来,不管你是hosted也好,proxy也好,或者group也好,对我都是一样的,我只管根据groupId,artifactId,version等信息向你要构件。

为了方便Maven的配置,Nexus能够将多个仓库,hosted或者proxy合并成一个group,这样,Maven只需要依赖于一个group,便能使用所有该group包含的仓库的内容。

Nexus预定义了“PublicRepositories”和“PublicSnapshotRepositories”两个仓库组,前者默认合并所有预定义的Release仓库,后者默认合并所有预定义的Snapshot仓库。

我们在本文前面的部分创建了一个名为“SonatypeRepository”的仓库,现在将其合并到“PublicRepositories”中。

点击仓库列表中的“PublicRepositories”,然后选择下方的"Configuration"Tab,在配置面板中,将右边“AvaiableRepositories”中的“SonatypeRepository”拖拽到左边的“OrderedGroupRepository”中,如图:

创建仓库组和创建proxy及hosted仓库类似,这里不再赘述。

需要注意的是format字段需要填写“maven2”,添加你感兴趣的仓库即可。

12.搜索构件

在浩大的Maven仓库中一下下点击链接,浏览路径以寻找感兴趣的构件是一件很郁闷的事情。

Nexus基于nexus-indexer提供构件搜索功能,要想对仓库进行搜索,无论是hosted,proxy,或者group,你都必须确认索引文件存在。

这一点对于代理仓库尤其重要,有些远程仓库可能根本就没有索引,所以你无法搜索这些代理仓库。

有些远程仓库的远程索引非常大,如中央仓库达到了70M左右,那么第一次下载索引需要花很多时间,所以要期望得到搜索结果,确保看到如下的文件:

一旦你的Nexus拥有了本地或者远程仓库的索引文件,你就可以享受Nexus的构件搜索功能了。

不论登陆与否,你都可以使用关键字进行模糊搜索,比如我在左边导航栏上部的搜索框内输入junit,然后点击搜索按钮,右边立刻会分页显示500多条的junit相关构件信息。

如果你了解更多的信息,你也可以通过限定groupId,artifactId,version进行搜索,点击导航栏中的“AdvancedSearch”,点击右边所有页面左上角的下拉框,选择“GAVSearch”。

笔者这里输入junit:

junit:

4.4,然后回车:

选择一项搜索结果,在页面下方会显示“ArtifactInformation”的面板,你可以点击"artifact"或者"pom"下载对应文件,而该面板右边更显示了一个Maven依赖配置,你可以直接复制该配置到MavenPOM中,这是个十分方便的特性。

此外,值得一提的是,Nexus还支持基于classname的搜索,你只需点击搜索页面右上角的下拉框,选择“ClassnameSearch”,然后输入类名即可,这里我不再赘述。

13.配置Maven使用Nexus

默认情况下,Maven依赖于中央仓库,这是为了能让Maven开箱即用,但仅仅这么做明显是错误的,这会造成大量的时间及带宽的浪费。

既然文章的前面已经介绍了如何安装和配置Nexus,现在我们就要配置Maven来使用本地的Nexus,以节省时间和带宽资源。

我们可以将Repository配置到POM中,但一般来说这不是很好的做法,原因很简单,你需要为所有的Maven项目重复该配置。

因此,这里我将Repository的配置放到$user_home/.m2/settings.xml中:

Xml代码

1

2...

3

4

5dev

6

7

8local-nexus

9http:

//127.0.0.1:

8080/nexus/content/groups/public/

10

11true

12

13

14true

15

16

17

18

19

20

21dev

22

23...

24

由于我们不能直接在settings.xml中插入元素,这里我们编写了一个profile,并添加了一个profile并使用元素自动将这个profile激活。

这里的local-nexus仓库指向了刚才我们配置的Nexus中“PublicRepositories”仓库组,也就是说,所有该仓库组包含的仓库都能供我们使用。

此外,我们通过元素激活了Maven对于仓库所有类型构件下载的支持,当然你也可以调节该配置,比如说禁止Maven从Nexus下载snapshot构件。

使用该配置,Maven就会从你的Nexus服务器下载构件了,速度和从Central下载可不是一个数量级的。

14.部署构件至Nexus

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

通过NexusUI部署

有时候有个jar文件

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

当前位置:首页 > 高中教育 > 语文

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

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