β

maven & eclipse工程实践

从一事无成到仅成一事 33 阅读

maven & eclipse source folder

eclipse中,可以在项目所属文件夹下点击右键-》Build path-》Mark as  a source folder

标记了source folder之后,eclipse就会将这个文件夹下的代码文件视作Java文件,并且在编译、运行时,将相应的源文件添加到class path中。在使用基于eclipse机制的各项功能或插件时,会将这些文件复制到java编译结果应该放到的文件中。例如,使用eclipse的tomcat插件的run on server功能时,标记为source folder的文件夹,Java文件将会被编译为class文件并拷贝到对应运行时web工程的WEB-INF/classes下,其余文件也会被原样复制到这个文件夹下。

一般的Dynaminc Web Project,eclipse会自动的将src目录设置为source folder。使用eclipse maven插件创建的maven webapp项目,会将main和test下的java和resource目录设置为source folder。

eclipse的maven插件会偶尔出现问题,设置不正确,可以手动调整。在实际需要中,如果有更灵活的需求,也可以手工调整。

maven&eclipse webapp

在eclipse下的web项目,使用tomcat插件运行时,会根据一定的规则,将项目的各个文件部署成为一个java web标准格式的包,由tomcat运行。

可以在项目属性的Deployment Assemble中,设置部署规则。/代表部署后的项目根目录,WEB-INF/classes代表项目部署后的Java及资源文件所在目录,一般设置这两个目录的需求比较多。

如果项目运行时出现一些诡异的问题,例如找不到某个类,或者某个配置文件读取错误,可以在此处查看,是否没有设置正确部署逻辑。

maven聚合项目 & eclipse

在eclipse中,创建maven project,勾选create a simple project,packagint选择pom,就可以创建一个聚合项目。

创建子项目时,可以选择maven module,父项目选择刚才建好的父项目,就可以将此项目设置为刚才项目的子项目。两个项目的pom文件,eclipse都会自动处理。用这种方式创建的子项目,文件位置会默认放到父项目文件夹下。

这样创建之后,父项目的文件夹中实际上也包含了子项目的文件,那么在eclipse的workspace中,实际上在父子两个项目中都存在同样的文件。如果需要将这个项目提交到svn,那么只能在父项目上做操作。

如果是一个已经创建好并上传至svn的maven聚合项目,签出父项目的同时也会将属于父项目文件夹中的子项目签出来。此时,就不能再手动签出子项目了,而是应该通过import-》existing project into workspace的方式,选择父项目路径下的子项目文件夹,逐个将子项目import进来,这样就可以正常进行开发。

做svn操作的时候,两个项目也会存在一定的冲突,最好统一在父项目上做操作。

maven profile

项目的不同发布方式,可能会使用不同的配置项目或者打包方式。

如果配置文件的大部分相同,只有少量配置不同,可以使用filter功能替换。

如果配置文件的整体都不相同,就可以在不同的profile中配置不同的resource目录。网上的资料大多是在src/main/resources下建立文件夹,在通用的build配置中exlude出去,再在各个profile中重新定义。我一般用重新定义与resources同级目录的方式。

maven profile & eclipse

一般会有一个用于开发的profile,常用的名称是dev或者development。此profile对应的resources目录,需要在eclipse中设置为source folder,才能够在run on server时正常部署。

如果使用了filter功能,那么配置文件的内容会变成${xxx},在eclipse中直接运行就会出错。此时,需要在项目属性的Maven设置中,添加需要的Active Maven profiles。添加之后,eclipse就会在运行的时候使用这个profile,正确的替换变量。

作者:从一事无成到仅成一事
做一个高尚的人,一个纯粹的人,一个有道德的人,一个脱离了低级趣味的人,一个有益于人民的人
原文地址:maven & eclipse工程实践, 感谢原作者分享。

发表评论