最近想下载一些开源项目看,但是下载来发现这些开源项目都是用MAVEN构建的,不会用MAVEN恐怕运行不了,所以我就找来MAVEN的资料,能成功构建并运行这些开源项目,但是MAVEN的机理仍就是一头雾水,所以在这里,以我下载的其中某一个开源项目为例子总结一些问题问问大家:我下某开源项目结构是这样
   根目录:src 和 pom文件
   src目录:main site 和 test 三个目录
   main目录:config目录 程序用到的主要配置文件
             java目录:源代码
             resources目录:一些资源文件,比如hibernate配置文件
             webapp目录:主要的页面,web.xml等等
   site目录:不清楚里面东西干什么的
   test目录:单元测试用例目录Eclipse目录结构应该是
   根目录:src来自于src/main/java
           WEB-INF来自于src/main/webapp
           META-INF新创建
           WEB-INF下的classes下的配置文件来自于src/main/config目录maven项目和eclipse项目中结构存在巨大差异,然后运行eclipse:eclipse生成了project和classes文件以及settings文件,可以从eclipse导入了,但是导入进去只不过是eclipse能导而已,却不能运行,因为目录结构还是上面的一种,虽然所有代码都能编译了,但是这个项目不是一个动态web项目,无法发布到eclipse集成的tomcat中。我想问的问题:1、如何从maven项目构建到eclpise项目过程中(eclipse:eclipse)能够转变成下面的可直接发布并运行的结构。
2、对于一个项目而言,尤其是发布到社区的开源项目或者提交给客户的程序源代码,我觉得以下面的目录结构存在就挺好,很方便,如果以上面的maven目录结构存在,有什么优势?
3、通常构建一个项目是应该以maven目录结构存在还是应该先以Eclipse目录结构存在。
   (1)先以maven目录存在的问题在于,你很难测试和开发,因为创建一个项目通常在Eclipse中,默认生成了标准的下面的目录结构,直接发布就能使用。
   (2)先以eclipse目录存在比较符合常理,“我们先开发,等到发布才考虑如何打包的问题”,但是网上找不到关于eclipse项目转换成maven项目的方法,只有由maven项目转eclipse项目的方法。
4、最终,我没能成功从Eclipse中使用这个项目,我从命令行mvn package打包项目,发布后能运行,在执行mvn命令的时候,通常有一个pom文件,该文件描述了执行过程,但是我在文件中只看到了项目名称,打包类型等信息,还有jar包依赖等信息,但是没有看到在哪里配置调用mvn package命令时候,在maven项目中文件到war包项目中文件目录位置变换的对应关系,那么这个关系是maven已经固化好了还是有什么其它机制?
5、mvn是由插件组成的,那么比如我运行mvn package是不是从mvn库中同时下载运行package的插件以及项目构建依赖的jar包到.m2库中,一个是工具本身,一个是被构建项目组成部分。

解决方案 »

  1.   

    packaging=war
    和packaging=jar
    这些都是默认配置好的。
      

  2.   

    说maven2比eclipse工程有什么好的,主要就是统一管理依赖。
      

  3.   


    如果这样说的话,在我的eclipse中加入ant.xml和ivy.xml也能统一管理依赖,利用ant可以把项目从eclipse结构转成可发布到服务器的结构
    如果用maven,要先把eclipse项目转成maven项目结构,然后在maven项目下运行mvn package才能生成最终的war。多转一次目录结构阿
      

  4.   


    maven文档看了不少了,我要的不是这个,而是你们自己的理解
      

  5.   

    你可以在cmd命令行下,执行一下:mvn eclipse:eclipse -Dwtpversion=1.5 便可以将工程转换成web工程
      

  6.   

    你可以在cmd命令行下,执行一下:mvn eclipse:eclipse -Dwtpversion=1.5 便可以将工程转换成web工程
      

  7.   


    还是不行,如果我运行mvn eclipse:eclipse -Dwtpversion=1.5,其直接在maven项目根目录下创建.classpath和.project文件,按照我的理解,应该在target下创建一个文件夹,那个是webapp的根目录,classpath和.project文件以及web-info文件夹在那个目录下,导入那个目录,而原maven工程结构不变化以保证将来能构建其他类型的包,难道我的理解有误?
    另外开发一个web项目的话,肯定是先有Eclipse项目,因为Eclipse项目可以方便的开发调试,为什么没有从Eclipse工程转到maven工程的方法,难道要手动拷贝文件,那稍微修改一点代码就要重新考文件阿
      

  8.   

    顶上去,我和楼主是同样的看法,实在没发现有哪些好处,好像唯一的好处是在网络上传播方便,上传项目时不需要上传 .jar文件,其他的没发现
      

  9.   

    是啊,网上下载下来的开源项目,很多都是maven项目的目录结构,一般发布一个项目发布jar或者war包也是一个独立的结构,发布成mvn还要多维护着目录结构的变换。