项目还是之前的项目,现在我要在原有项目中加入maven支持,但是myeclipse只能在建立web project时有选项可以为项目加入maven支持,但我的项目已经生成好久了,所以只能自已动手了。

步骤如下;(做完之后好几天才写的,难免有遗漏)

注:我的环境为:myeclipse7.5和maven2.2;myeclipse7.0自带的好像是maven1.*(未查证),所以步骤可能不能,推荐使用maven2

1.修改目录

先要将目录结构改为maven项目的目录结构做法是:

A:先将原src重命名为"java",(如果使用svn改完命后要先提交,不然不让建立src目录)

B:建立"src"目录,在src下建立"main"目录,把重命名的"java"目录拽到"main"下,这时如果"java"变为普通目录,那么把它改为源码目录(右键->build path-> use as source folder)

C: 把原来的WebRoot目录重命名为"webapp",把它拽到"main"下

D:建立其它所需目录,src/test/java(源码目录)  ; src/test/resources ; src/main/resources  ;target等.

由于改变了目录所以现在项目已经无法再用原来的方法部署了,现在做下一部改下目录的设置让项目可以用原方法部署

2.将 webapp设置WebRoot目录

到工作目录你的项目下的.mymetadata(隐藏)文件中的<attribute name="webrootdir" value="WebRoot" /> 改为

<attribute name="webrootdir" value="/src/main/webapp " />

修改项目下的.classpath文件 中的 源码输出路径为: <classpathentry kind="src" output="src/main/webapp/WEB-INF/classes " path="src/main/java"/> 修改 主输出路径为:<classpathentry kind="output" path="src/main/webapp/WEB-INF/classes" />

重启eclipse,现在又可以以原来的方法部署项目了。

3.建立pom.xml文件和对相关框架的依赖

新建一个web project项目并让为它添加maven支持,然后再这个项目中加入你所使用的框架支持如:hibernate,spring,jsf等所有你需要并myEclipse可以提供的支持(这个过程可能要等一段时间,因为maven会自动到主镜像站下载所需的jar包和pom文件到本地库),这时MyEclipse会为你在pom中加入你所需要的依赖关系。把这个pom.xml 文件拷到你的项目根目录并修改groupId和artifactId为你的项目的名子,现在在为项目加入一个maven的Build配置,让MyEclipse认为这个项目是一个Maven项目,修改项目下的.project文件 :

buildSpec小节 加入 :

<buildCommand>
            <name>org.maven.ide.eclipse.maven2Builder</name>
            <arguments>
            </arguments>
        </buildCommand>

natures小节中加入

<nature>org.maven.ide.eclipse.maven2Nature</nature>

 重启Eclipse,发现现在项目文件夹上已经有一个M图标了,说明Eclipse已经认为这是一个Maven项目了

注:为了能使项目还能以原来的方法部署现在暂时不要删除原来引用jar的的Build path,在最后再删除它们

4.加入其它jar包的依赖

现在的pom.xml文件已经有了我们所需框架的jap依赖定义了,但是你可能和我一样有一些其它jar包的依赖要把它加入到pom.xml文件,做法如下:先到maven的库查询网站去查找你所需的jar文件(注意版本),如果找到直接把它加入到你的pom.xml文件中,如:

<dependency>
            <groupId>mx4j</groupId>
            <artifactId>mx4j</artifactId>
            <version>3.0.1</version>
        </dependency>

这时maven会自动到maven库中去下载这个jar和这个jar所依赖的jar ,注意在你的maven更新过程中可能出现存在循环依赖的提示,这是因为你所加入的其它包中已经通过依赖关系加入了这个jar包,而你又手到加入了这个包,所以你只要放心的把你手动加入的依赖包定义删除就行了。由于Maven会自动加入包的依赖关系,所以很可能会造成包的冲突,遇到最多的应该是hibernate的asm包冲突,这时你可以定义一下要求hibernate不下载指定的依赖jar,像这样:

<dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate</artifactId>
            <version>3.2.5.ga</version>
            <exclusions>
                <exclusion>
                    <groupId>asm</groupId>
                    <artifactId>asm</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>asm</groupId>
                    <artifactId>asm-attrs</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>cglib</groupId>
                    <artifactId>cglib</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

另外我还遇到了xfire的spring1.2和我使用的spring2.0冲突

<dependency>
            <groupId>org.codehaus.xfire</groupId>
            <artifactId>xfire-spring</artifactId>
            <version>1.2.6</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-mock</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

现在已经为项目加入了maven远程库中已有的jar支持了,但是有可能像我一样还需要一些在maven远程库中不存在的jar,像这样的问题有两个解决办法一种是在公司内部自已架一个maven库,这种做法很费力,但如果你的公司很大,并且有很多maven项目的话,用这种方法就比较实用和方便的,我用的是第二种方法,直接把所需的jar加入到本地库上,并在pom中引用,方法如下:

A:你要先下载一个maven装到你的机器中(不知道怎样直接使用MyEclipse的maven),装好后在命令行运行mvn -v  如果正确反回则安装成功(安装很简单,解压后设下环境变量就行了,一个是M2_HOME,并把你的%M2_HOME%/bin加入到path中,另外确保你有JAVA_HOME的环境变量)

B:运行mvn命令将jar加入到本地库,这是我加入一个shark包的命令如下:

mvn install:install-file -Dfile=sharkcaching-lru.jar -DgroupId=com.dgsoft.extend -DartifactId=sharkcaching-lru -Dversion=2.2.1 -Dpackaging=jar

注意修改为你的。参数依次为:jar文件名,组织名,定义名,版本,类型。

C:把你加入的jar定义到pom.xml,针对上面的有如下定义:

<dependency>
            <groupId>com.dgsoft.extend</groupId>
            <artifactId>sharkcaching-lru</artifactId>
            <version>2.2.1</version>
        </dependency>

D:如果你也和我一样有很多这样的包,那么和以写一个.bat文件(我在linux下是.sh),方便以后加入,另外我还用DELPHI写了一个自动查找文件夹下的*.jar文件并自动生成安装jar到本地库的bat(或sh)文件和pom.xml文件的小程序,如果有需要可以给我留言,我可以传上来。

现在万事俱备,只欠东风了,下面做最后一步

5.修改项目的包引用为pom.xml所设置的依赖。

现在我们可以把原来项目的包引用改成使用maven的依赖库了,做法很简单,修改你项目的.classpath配置文件,把原来的包引用全部删除,并加入maven的依赖引用,我的.classpath文件最后是这样的,发出来为大家做参考

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" output="src/main/webapp/WEB-INF/classes" path="src/main/java"/>
    <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
    <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/> 
    <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/> 
    <classpathentry kind="output" path="src/main/webapp/WEB-INF/classes"/>
</classpath>

因为我使用的是javaee5项目,所以黑色加粗部分的配置你的可能和我的不一样

重启Eclipse ,在项目上右键->properties->java build path->order and Export 中的 Maven Dependencies中的勾打上。

现在项目上即可以用原来的方式部署,调试,也可以使用maven的构建、测试等Maven功能了。

最后说下我在过程中遇到的问题,你可能遇不到,也可能遇到:

1.Maven依赖包冲突,前面说过了。

2.修改pom.xml的依赖包后,eclipse对maven包的引用并不刷新,这可能是Myeclipse7.5的一个bug, 我在试用8.5时好像就没这个问题了,解决方法是在修改了pom.xml的依赖后,在项目上右键-> Maven4MyEclipse->运行一下Enable Nested Modules或Disable Nested Modules就会刷新MyEclipse的Maven Dependencies引用了。

3.xfire的jaxb-api的jar包和jdk1.6的rt.jar冲突,这个问题很怪,虽然Eclipse提示代码错误,但是我把项目部署到jdk1.6的服务器上,这部分功能还是好使的。但是eclipse提示错误看起来还是很不爽的。要解决这个问题你需要一个1.5的jdk,但是我在.classpath中已经配置了使用1.5的jdk了,但是eclipse还使用1.6的jdk呢,因为你的eclipse并不知道jdk1.5的存在,只要在你的eclipse设置的jres中查找到1.5的jdk后项目就会自动使用1.5的jdk引用做为build path了(注:不用将jdk1.5设为默认jdk)。

4.javaee相关包不存在或冲突:

不存在的原因是你的pom.xm中的依赖设置中使用了provided定义生存周期,这个设置是认为在环境中已经存在这个包了所以就不再部署了,只要改一下生存周期就行了,冲突也是一样的(一般是openejb的javaee-api和tomcat的javaeeapi冲突),只要加上这个关键字就行了。我的javaee部分配置最后如下:

<!-- java EE 5 -->
        <dependency>
            <groupId>org.apache.openejb</groupId>
            <artifactId>javaee-api</artifactId>
            <version>5.0-1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.faces</groupId>
            <artifactId>jsf-impl</artifactId>
            <version>1.2_04</version>
        </dependency>
        <dependency>
            <groupId>javax.faces</groupId>
            <artifactId>jsf-api</artifactId>
            <version>1.2_04</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.1</version>
            <scope>provided</scope>
        </dependency>

5.其它问题,主要是包的依赖和冲突等问题比较多,描述起来不太容易,有些我也记不太清楚了,而且和我的项目有关别人遇到的机会不大就不在此描述了。

做此操作遇到最多问题的地方就是依赖jar包的问题,所以在最好将最后一步操作(移除旧引用)尽可能延后,这样可以方便新旧jar 包的对比。

Myeclipse项目加入maven支持相关推荐

  1. 解决IDEA修改已有项目为maven项目时目录结构被改变的问题

    Idea可以在项目根目录上右键选择"添加框架支持",选择maven,为项目添加Maven支持. 但这样会导致原有项目的目录结构被破坏. 更好的方法是在根目录添加pom.xml文件 ...

  2. 如何为已有的项目添加Maven

    最近导入一个新的项目,却没有Maven的支持,导致很多事情都没法完成,所以在这里简单的描述一下,如何为已有的项目添加Maven支持: 1.鼠标右键单击项目,选择Configure然后选择Convert ...

  3. 【Java Web】Myeclipse下运用maven管理项目jar包

    Java Web开发的人都知道经常会为缺少各种jar包而烦恼,经常要去各种地方下载.用maven来管理项目的jar包,就非常方便了,maven会自动帮你下载所需要的各种jar包. 下面就来介绍一下在M ...

  4. 在myeclipse中建立maven项目

    这里不使用myeclipse自带的maven,而是使用自己下载配置的maven.如何在win10上搭建maven项目,详见上一张博客. 1.启动myeclipse 2.点击Window,选择prefe ...

  5. Maven项目缺少Maven Dependencies解决方法总结

    一.今天搭建了一个maven项目,在pom.xml文件引入依赖后,发现项目结构中没有Maven Dependencies文件(下图),但是在java Build Path中又可以找到Maven Dep ...

  6. 使用Maven编译项目遇到——“maven编码gbk的不可映射字符”解决办法 ——转载...

    一.问题描述 今天在MyEclipse中使用Maven编译项目源代码时,结果如下了如下的错误 百思不得其解啊,java源代码在MyEclipse中显示是没有任何错误的,可是执行"maven ...

  7. Maven项目缺少Maven Dependencies解决方法

    一.今天搭建了一个maven项目,在pom.xml文件引入依赖后,发现项目结构中没有Maven Dependencies文件(下图),但是在java Build Path中又可以找到Maven Dep ...

  8. 将常规项目转换为Maven项目

    本节讲述了在 IntelliJ IDEA 中如何将常规项目转换为 Maven 项目. 您可以打开一个现有的非 Maven 项目,并通过 IntelliJ IDEA UI 添加 Maven 支持. 打开 ...

  9. Maven项目缺少Maven Dependencies新的解决方法

    因为要学习maven,但是按照网上的教程安装完成后可以建立Maven工程(不报错),但是我却发现一个问题,项目里没有Maven Dependencies,折磨我好久试了网上查到的所有方法5种,但是无奈 ...

最新文章

  1. [hdu6434]Problem I. Count
  2. Android开发之Handler的使用方法(源代码分享)
  3. 深入浅出Node.js游戏服务器开发--分布式聊天服务器搭建
  4. HDOJ_2010_大二写_水仙花数
  5. 《UNIXLinux程序设计教程》一第2章-2.0 标准输入输出
  6. Mysql多表查询(案例2)
  7. mailcore -- POP
  8. hadoop-集群管理(3)——不常用参数
  9. UITableViewCell delete button 上有其它覆盖层
  10. BorisFX Sapphire 2019 for OFX Mac使用教程
  11. 柔性OLED触摸屏的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  12. HTML初心自学记录(四)列表超链接
  13. 一切钻空子的行为最后都会惨淡收场
  14. lsdyna如何设置set中的node_list_如何画出一幅好看的图
  15. Games101计算机图形学入门基础之二:光栅化
  16. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java青岛恒星科技学院机房管理系统0k0u9
  17. 【解析】A星寻路算法介绍
  18. android shn1 获取_Android Studio获取开发版SHA1值和发布版SHA1值的史上最详细方法
  19. eclipse如何导入和导出项目文件
  20. 台式计算机用电视机做显示器,台式机电脑怎么同时连接一个显示器一个电视双屏显示?...

热门文章

  1. matlab模拟简单孔径衍射图样,夫琅和费衍射实验文献综述
  2. (王道408考研数据结构)第七章查找-第二节1:顺序查找及其优化
  3. (王道408考研数据结构)第一章绪论-第二节2:算法的时间复杂度和空间复杂度
  4. 二叉树经典题之根据二叉树创建字符串(二叉树的括号表示法)
  5. Linux 调整内核参数
  6. glibc free 死锁
  7. qt中 accept()和ignore()函数
  8. CFI/CFG 安全防护原理详解(ROP攻击、DOP攻击、插装检测)
  9. 排序算法:希尔排序算法实现及分析
  10. 项目alpha冲刺-总结