maven构建项目指导手册 - 图文
更新时间:2024-04-01 20:26:01 阅读量: 综合文库 文档下载
- Maven构建项目推荐度:
- 相关推荐
组件升级管理指导手册
目录
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
项从注释中移出,并配臵如下
并配臵如下
e) 分发构件到远程仓库需要认证
如果你没有配臵任何认证信息,你往往会得到401错误。这个时候,如下在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配臵说明
配臵详解:
banseon-maven2
http:/hi.http://www.wodefanwen.com//banseon/demo/dev/
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
x86