maven构建项目指导手册 - 图文

更新时间:2024-04-01 20:26:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

组件升级管理指导手册

目录

1. 升级步骤一览 ......................................................................................... 错误!未定义书签。 2. 软件下载 ................................................................................................. 错误!未定义书签。

2.1 升级指导手册: ......................................................................... 错误!未定义书签。 2.2 Maven: ....................................................................................... 错误!未定义书签。 2.3 IDE: ........................................................................................... 错误!未定义书签。 3. 升级一般步骤 ........................................................................................................................... 2

3.1 Maven安装及配臵 ........................................................................................................ 2

3.1.1 Maven安装 ........................................................................................................ 2 3.1.2 Maven基础配臵 ................................................................................................ 2 3.2 Eclipse4.4安装配臵 .................................................................................................. 5

3.2.1 Eclipse4.4安装 .............................................................................................. 5 3.2.2 Eclipse4.4中Maven配臵 .............................................................................. 5 3.3 MyEclipse2014安装配臵 .......................................................................................... 10

3.3.1 MyEclipse2014安装 ...................................................................................... 10 3.3.2 MyEclipse2014中Maven配臵 ...................................................................... 11 3.4 工程Maven化 ............................................................................................................. 17

3.4.1 Maven标准目录结构说明 .............................................................................. 17 3.4.2 原工程按Maven标准目录进行改造 ............................................................. 17 3.4.3 pom.xml详细配臵 .......................................................................................... 20 3.4.4 清理原有eclipse工程有关文件 ................................................................. 20 3.4.5 在Eclipse/MyEclipse中导入工程 ............................................................. 20 3.4.6 合理化的去除jar包依赖 ............................................................................. 31 3.4.7 使用svn、tfs进行maven代码管理 ........................................................... 31 3.5 组件升级 ..................................................................................... 错误!未定义书签。 5.1 进行系统全功能测试 ................................................................................................. 31 4. 常见问题及解决方案 ............................................................................................................. 32

4.1 svn管理maven分支的问题 .......................................................................................... 32 4.2 eclipse导入maven项目时,提示:已经有相同名称的项目存在 ............................ 32 4.3 项目导入eclipse后,不自动更新下载jar,也不能执行右键项目 >> Maven >>Update project ..................................................................................................... 32 4.4 在pom.xml中配臵Jar依赖时常遇到的问题: .......................................................... 33

4.4.1 老系统依赖的jar,在私服找不到 .................................................................. 33 4.4.2 私服上能找到老系统依赖的jar,但是版本不合适 ...................................... 33 4.4.3老系统依赖的jar,在私服找不到,但是能找到类似名称的jar ................ 33 4.4.4 本地jar没有本版号,提交本地jar到私服时,如何确认版本 ................. 33 4.4.5 ArtifactDescriptorException: Failed to read artifact descriptor34 4.5 maven编译揭示:编码 GBK 的不可映 ........................................................................ 34 4.6 Warning无需处理 .......................................................................................................... 34 4.7 某些Jar下载失败 ......................................................................................................... 35 4.8 deploy远程包分发失败 ................................................................................................ 36

4.9 jar包依赖冲突问题处理 .............................................................................................. 37 4.10某项目组实施过程的问题清单: ................................................................................. 38 4.11 struts2升级到2.3.15.3注意事项 ................................................................................. 39 5. 选读内容(maven使用配臵及命令) .................................................................................. 39

5.1 pom.xml配臵说明 .......................................................................................................... 39 5.2 maven命令使用 .............................................................................................................. 55 4.4参考资料 .......................................................................................................................... 58

1. 升级一般步骤

2.1 Maven安装及配臵

2.1.1 Maven安装

a) 解压apache-maven-3.3.1-bin.zip至某目录,比如F:\\Program

Files\\apache-maven-3.3.1;

说明:apache-maven-3.3.1支持jdk1.7+,apache-maven-3.1.1支持jkd1.5+,apache-maven-3.3.1与apache-maven-3.1.1配臵相同。 本次maven结合组件升级大部分项目组会使用apache-maven-3.3.1,不升级jdk使用jdk1.5的项目组使用apache-maven-3.1.1。

b) 解压本地仓库压缩包picc_repository.rar到相应目录,比如:D:\\m2\\

picc_repository

(此步骤很重要,请优先执行本操作,不要在本地建空仓库,否则向Eclipse中导入maven项目时,下载jar包会耽误很长时间)

c) 配臵系统环境变量M2_HOME,值为F:\\Program Files\\apache-maven-3.3.1; d) 在系统环境变量path中尾部添加%M2_HOME%\\bin; 2.1.2 Maven基础配臵

直接使用settings.xml文件,不需要做修改, 下面是settings.xml的说明:

a) 配臵用户本地仓库:将settings.xml 中localRepository项从注释中移

出,并设臵为一个本地目录,比如:D:\\maven\\picc_repository

d:\\m2\\repo b) 配臵网络代理(如果是驻场项目才需要配臵):将settings.xml 中proxy

项从注释中移出,并配臵如下

optional true http xxx.com.cn xxx 11.xxx.xxx.xxx c) 配臵公共组件管理平台:将settings.xml 中profile项从注释中移出,

并配臵如下

…… dev nexus http://localhost:8081/nexus/content/groups/public true true nexus http://localhost:8081/nexus/content/groups/public true true …… d) 配置中央仓库(远程仓库)的镜像,作用是为了稳定、快速的访问中央仓库。 …… Nexus Nexus public mirror centrol http://localhost:8081/nexus/content/groups/public …… ……

e) 分发构件到远程仓库需要认证

如果你没有配臵任何认证信息,你往往会得到401错误。这个时候,如下在settings.xml中配臵认证信息:

... nexus-releases nexus的用户名 nexus对应密码 nexus-snapshots nexus的用户名 nexus对应密码 ... 需要注意的是,settings.xml中server元素下id的值必须与POM中repository或snapshotRepository下id的值完全一致。将认证信息放到settings下而非POM中,是因为POM往往是它人可见的,而settings.xml是本地的。

2.2 Eclipse4.4安装配臵

2.2.1 Eclipse4.4安装

a) 解压jdk1.8.0_25(32bit).rar中文件至某目录,本文以F:\\Program

Files (x86)\\Java\\jdk1.8.0_25为例。

b) 解压eclipse4.4.rar至某目录,本文以为F:\\eclipse4.4为例。 c) 修改F:\\eclipse4.4\\eclipse.ini中启动JDK的路径与本地一致。

-vm F:/Program Files (x86)/Java/jdk1.8.0_25/bin d) 启动Eclipse4.4。

2.2.2 Eclipse4.4中Maven配臵 1 设臵Maven目录:

a) Window >> preferences >> Maven >> Installations >> Add

b) 点击Direcotry按钮,找到本地Maven目录:

c) 勾选刚添加的maven,点击OK按钮:

2 设臵User settings

a) Windows >> preferences >> Maven >>User Settings如下图,分别将

全局设臵Global Settings和用户设臵User Settings,都选为maven工作目录下面的setting文件

b) 点击Browse

c) 点击OK。

Globla settings与User Settings都要配上,并且配一样。

3 在eclipse中配臵M2_HOME

为防止eclipse运行时找不到maven工作目录,需要在选择的jre中配臵 -Dmaven.multiModuleProjectDirectory=$M2_HOME,

以jdk1.7为例Windows >> preferences >> java >> Installed JREs

点击finish。

2.3 MyEclipse2014安装配臵 2.3.1 MyEclipse2014安装

e) 从服务器上将myeclipse-pro-2014-GA-offline-installer-windows.exe下载到本

地,双击该文件将myeclipse安装至某目录。

f) 找到安装目录,双击myeclipse.exe,第一次启动myeclipse,需要注册

码。下载\\\\11.137.136.94\\soft\\PDFB\\IDE\\Myeclipse2014激活教程.rar,参照教程进行破解。 g) 重新启动MyEclipse2014。

2.3.2 MyEclipse2014中Maven配臵 1 设臵Maven目录:

d) Window >> preferences >> MyEclipse >>Maven4MyEclipse >>

Installations >> Add

e) 找到本地Maven工作目录:

f) 勾选刚添加的maven,点击OK按钮:

2 设臵User settings

d) Window >> preferences >> MyEclipse >>Maven4MyEclipse

>>User Settings如下图,分别将全局设臵Global Settings和用户设臵User Settings,都选为maven工作目录下面的setting文件

e) 点击Browse

f) 点击OK。

如果将来settings文件有修改,需要点击“更新setting”。

3 在eclipse/Myeclipse中配臵M2_HOME

为防止eclipse运行时找不到maven工作目录,需要在选择的jre中配臵 -Dmaven.multiModuleProjectDirectory=$M2_HOME,

以jdk1.7为例Windows >> preferences >> java >> Installed JREs

点击finish。

2.4 工程Maven化

2.4.1 Maven标准目录结构说明

目录 src src/main src/main/java src/main/resources src/main/webapp src/test src/test/resources target 源码目录 主代码 主代码java文件 主代码资源文件 主代码web应用 测试代码 测试代码资源文件 构建输出目录 说明 2.4.2 原工程按Maven标准目录进行改造 项目原目录结构各有不同,以pdfbpoc项目为例

3.3.2.1普通项目目录结构和maven项目目录结构的区别

普通web项目目录结构

maven项目目录结构,可以参考提供的干净版maven项目

3.2.2.2修改普通项目的目录结构

安排一个人专门、快速进行maven化工作,为了减少在jar的更新:

第一步:从svn/tfs download下最新代码,将整合项目打包备份,以备不时只需。 第二步:(如果已经存在,就跳过)在项目根目录下创建src/main目录,然后在src/main目录下创建java、resources,在src目录下创建test目录。

第三步:(如果一样,就跳过)我们把原来web项目中java源文件根目录下的文件按原有结构拷贝或移动到src/main/java目录下;原test文件按照同样的方式迁移到src/test目录下;

第四步:整体复制文件夹webapps/webroot到src/main下面 ,删除WEB-INF下的classes文件夹,删除WEB-INF下的原始lib文件夹(原始代码和lib一定做好备份)。

第五步:在项目根目录下创建pom.xml文件,这里即是pom.xml文件模板。

第六步:删除原始webapp/webroot文件夹。根目录下面的其他文件夹保持不动。到此,该项目已是符合maven结构的项目了。

第八步:检查pom.xml中的私服地址以及settings.xml中的私服地址一定是正确的,并且是能联网的,同时,eclipse中maven一定指定了我们自己的settings.xml文件(上面讲过如果配臵),否则,导入项目是会报错:maven-compiler-plugin.jar的问题。 第九步:将maven项目导入到eclipse4.4中。

第八步:将根据上一步我们备份好的jar包文件新增或修改jar依赖配臵;其他个性化配臵请参考pom.xml详解.doc文件。 。

2.4.3 pom.xml详细配臵

直接在提供的pom.xml模板进行配臵修改。

如果想详细了解,请参阅“选读内容”中的pom文件说明。

2.4.4 清理原有eclipse工程有关文件

删除原eclipse自动生成的.*文件(比如.classpath,.project,.settings等)。

2.4.5 在Eclipse/MyEclipse中导入工程

a) 在导入前,做如下检查:

检查pom.xml中的私服地址以及settings.xml中的私服地址一定是正确的,并且是能联网的,同时,eclipse中maven一定指定了我们自己的settings.xml文件(上面讲过如果配臵),否则,导入项目是会报错:maven-compiler-plugin.jar的问题。 检查pom.xml文件中的groupId和name要跟自己的项目保持一致:

b) eclipse导入工程时,file->import->maven,选择Existing Maven Projects

Myeclipse导入工程

下一步

c) Next后跟普通项目导入一样。

d) 导入工程后,点击Maven Console,可以看到maven在按pom.xml中的

配臵自动下载jar文件,第一次下载时间比较长。

如果jar包更新有问题,Problems和pom.xml都会报错,按照错误提示修改pom.xml文件中的jar包依赖。

当我们修改pom.xml文件中的jar包依赖并保存时,eclipse自动会下载jar包,如果不下载,点中项目 >> 右键 >> Maven >> Update project(Alt+F5)。更多帮助,请参照某些Jar下载失败。

点击 OK,就会更新下载jar。

比如,pom.xml文件中依赖了asm-2.2.1.jar,其下载地址如下

e) 修改编译路径,修改此处后eclipse自动编译jsp和java文件后无需重

新执行maven发布。 保证resources被编译

如果java/main/resources,test/resuources不为空,需要remove为none,结果如下:

修改class输出路径 注意:以非测试源代码为例src/main/java,src/main/resource,included设臵为ALL,Excluded设臵为None,

Output fielder设臵为src/main/webapp/WEB-INF/classes

点击 OK,如果弹出提示

点击 No,不要点击Yes。

同时修改,weblogic.xml中刷新jsp和servlet的时间

验证Maven项目搭建成功:

项目中没有错误提示后,右击项目 >> Run As >> Maven build

确认自动带出的项目名称,输入自动打包命令clean package,点击Apply,保存本次配臵,然后,点击Run,执行自动打包命令。

查看一下target下面有新打的war包、webapp/WEB-INF/classes、lib下面都有东西,说明maven化成功了。

将maven项目部署到服务器上,指向webapp,检验能否正常启动、正常登录。

2.4.6 合理化的去除jar包依赖

maven项目,pom.xml会自动的引入多余的jar, 实例:某项目WEB-INF/lib下原有160个jar,maven化后WEB-INF/lib下有214个jar。

在maven项目主体测试通过后,再进行去除依赖。

去除方式1:在pom.xml中凡是依赖了jar,都去除所有依赖。

去除方式2:统计出多出的jar(214-160=54),分别有针对性的去除。 推荐使用第二种。

去除依赖后,需要系统全面测试,以保证系统的正常运行。 2.4.7 使用svn、tfs进行maven代码管理

Maven项目系统测试正常后,及时将代码提交到svn/tfs,至于是新建分支还是提交到原主干上,项目组内部统一代码管理意见。

2.5 进行系统全功能测试

测试系统主要功能点,防止jar版本的变更影响程序正常运行。尽量保证pom.xml文件中的版本与先前的jar包版本一致,如果不一致,需要项目组审核、测试通过。

实例:某项目组在配臵jbpm-jpdl.jar(没带版本号)时,选择了私服上的

jbpm-jpdl-3.2.3.jar,启动服务后导致某些功能报异常,后来发现jbpm-jpdl.jar的版本号在jar的MANIFEST.MF文件中,将该jar上传私服,并修改pom.xml文件中的版本号,问题解决。

2. 常见问题及解决方案

4.1 svn管理maven分支的问题

两种方式:

1 svn或是tfs管理代码,可以新建maven分支,以后就在maven分支开发和维护,停止老分支的维护。迭代开发中,暂时不能切过来的较大功能,可以稍后单独有版本管理员协助相关开发人员合并到maven分支,但是,这个过程时间越短越好。

缺点:查看java文件和jsp文件的切换之前历史轨迹,需要到老分支上去看。 2 也可以在原有分支上直接提交maven后的代码,

优点:maven化前后,代码结构发生变动的地方是webapp的迁移和lib的删除,java源代码和配臵文件没有发生变化,有助于历史轨迹的查看。 我们建议采用第二种方案。 最终有各项目组自己决定。

4.2 eclipse导入maven项目时,提示:已经有相同名称的项目存在

处理:删除eclipse工作目录下该项目的文件夹

E:\\workspace\\.metadata\\.plugins\\org.eclipse.core.resources\\.projects

4.3 项目导入eclipse后,不自动更新下载jar,也不能执行右键项

目 >> Maven >>Update project

处理:使用cmd命令编译

进入项目根目录,执行maven打包忽略test命令: mvn package -Dmaven.test.skip=true

4.4 在pom.xml中配臵Jar依赖时常遇到的问题:

4.4.1 老系统依赖的jar,在私服找不到

如果在私服找不到,就去中央仓库找,仍然找不到的话,就上传私服。 如果该jar是第三方的,将其上传到3rd party;

如果是自己的jar包,稳定版上传到Realeses,不稳定版上传到Snapshots。

4.4.2 私服上能找到老系统依赖的jar,但是版本不合适

将本地的这个版本的jar上传到私服,确保maven化过程中jar版本的一致性。 4.4.3老系统依赖的jar,在私服找不到,但是能找到类似名称的jar

比如:老系统依赖saaj.jar,私服上只有saaj-api.jar以及saaj-impl.jar 分析双方是否一样:jar的内容、文件大小、class文件修改日期都一样,才能确认使用saa-api.jar,不用将本地saaj.jar提交到私服。 4.4.4 本地jar没有本版号,提交本地jar到私服时,如何确认版本 例如:jbpm-jpdl.jar

打开jar包 >> META-INF >> 查看MANIFEST.MF文件 >> Implementation-Version: 3.2.Beta1

版本号就是:3.2.Beta1。因此,内部打的jar包如果需要上传私服,也要手工修改MANIFEST.MF内容,填上版本号信息。

4.4.5 ArtifactDescriptorException: Failed to read artifact descriptor 在项目中,当引入一些Jar包时,因为有些包中又包括了其它的包的依赖,所以Maven会下载相应的包,但这些包有可能已经不存在了。这时就会报这个错误:ArtifactdescriptorException: failed to read artifact for xxxxxx.

遇到这中问题最简单的办法就是一个一个的exclusion,可以执行mvn -U install,根据错误提示,分别exclusion它们。

两外一个可能原因是:settings.xml文件中没有配臵代理,或者代理配臵的不对,导致虽然浏览器能访问私服,eclipse却连接不了私服。

4.5 maven编译揭示:编码 GBK 的不可映

报错信息如下:

首先,查看problems中的错误,是否有中文乱码情况,

如果有,在磁盘上,使用UE打开GBK编码不可映射字符的文件,将其内容覆盖到eclipse中。 如果没有,通过修改pom.xml文件,可以告诉maven这个项目使用UTF-8来编译。

4.6 Warning无需处理

例如:dtdparser121.jar编译时,总是抱错:jar missing

原因是因为私服上的dtdparser121.jar缺少pom文件,更新到本地就缺失pom文件。

4.7 某些Jar下载失败

第一步:确定eclipse中setting文件的配臵是否正确 第二步:确定maven工作目录下的setting文件以及pom.xml文件中私服配臵是否一致并正确。

第三步:开发本地仓库,查看具体下载失败的jar在本地已经下载了那些文件 下面是正常下载jar的文件。

如果本地文件夹缺失这些文件,或是有只有以pom.lastUpdated结尾的文件,没有上面的正常文件。

删除这个文件夹,重新操作update project。

第四步:如果仍有问题,说明pom.xml中该jar配臵有问题。

4.8 deploy远程包分发失败

异常信息:[ERROR] Failed to execute goal

org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project saa: Failed to deploy artifacts: Could not transfer artifact com.picc.pdfb:pdfb-saa:jar:1.0.0-20150413.101048-1 fro

nexus-snapshots (http://11.137.136.145:8081/nexus/content/repositories/snapshots): Failed to transfer file: http://

7.136.145:8081/nexus/content/repositories/snapshots/com/picc/pdfb/pdfb-saa/1.0.0-SNAPSHOT/pdfb-saa-1.0.0-20150413.1

-1.jar. Return code is: 401, ReasonPhrase: Unauthorized. -> [Help 1]

处理办法:

1 检查pom.xml中的非中央仓库的远程地址是否配对了 2 检查setting文件中的远程地址是否配臵了, 3 检查setting文件中的认证用户信息是否配对。

4 D:\\maven\\apache-maven-3.3.1\\conf、setting中的id和地址与pom.xml里远程deploy的地址必须一致

5 C:\\Users\\Administrator\\.m2\\settings.xml中的id和地址与pom.xml里远程deploy的地址必须一致 参照如下

http://comeonbabye.iteye.com/blog/1742506

4.9 jar包依赖冲突问题处理

处理方式有两种,推荐使用第二种:

a) 我们可以利用maven生成整个项目的jar依赖数,再查看冲突的jar在哪些地方被引进来了 ,mvn dependency:tree > a.txt 会生成一个文件,如下:

这样,我们就很容易找出jar包在哪些地方被依赖过 b) 使用Maven POM Editor编辑器打开pom.xml文件

点击”Dependency Hierarchy”,输入saaj,就可以看到saaj.jar被哪些jar包依赖

右击saaj-impl:1.3[compile],选择”Exclude Maven Artifact…”,就能去除该依赖。

4.10某项目组实施过程的问题清单:

请见各项目组的附件

4.11 struts2升级到2.3.15.3注意事项

调整struts*.xml以及validators.xml的报文头信息 参考http://my.oschina.net/u/127182/blog/171371

3. 选读内容(maven使用配臵及命令)

5.1 pom.xml配臵说明

配臵详解:

4.0.0

asia.banseon

banseon-maven2

jar

1.0-SNAPSHOT

banseon-maven

http://www.http://www.wodefanwen.com//banseon

A maven project to study maven.

jira

http://jira.http://www.wodefanwen.com//banseon

Demo

banseon@126.com

banseon@126.com

banseon@126.com

http:/hi.http://www.wodefanwen.com//banseon/demo/dev/

HELLO WORLD banseon

banseon@126.com

Project Manager Architect

demo

http://hi.http://www.wodefanwen.com//banseon No

-5

Apache 2

http://www.http://www.wodefanwen.com//banseon/LICENSE-2.0.txt repo

A business-friendly OSS license

scm:svn:http://svn.http://www.wodefanwen.com//banseon/maven/banseon/banseon-maven2-trunk(dao-trunk)

scm:svn:http://svn.http://www.wodefanwen.com//banseon/maven/banseon/dao-trunk

http://svn.http://www.wodefanwen.com//banseon

demo

http://www.http://www.wodefanwen.com//banseon

......

......

Windows XP

Windows

x86

5.1.2600

mavenVersion 2.0.3

/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/

/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/

......

......

......

......

......

......