一.背景
Maven2 的基本原理很简单,采用远程仓库和本地仓库以及 pom(project object model).xml ,将 pom.xml 中定义的 jar 文件从远程仓库下载到本地仓库,各个应用使用同一个本地仓库的 jar ,同一个版本的 jar 只需下载一次,而且避免每个应用都去拷贝 jar 。如图 1 。同时它采用了现在流行的插件体系架构,只保留最小的核心,其余功能都通过插件的形式提供,所以在执行 maven 任务时,才会自动下载需要的插件。这个特性也为客户系统的升级带来的很大的方便,客户每次升级的时候可以使用maven的远程部署功能自动下载最新的系统组件(jar),并重新打包部署,很大程度的减少的系统升级的工作量。
理解Maven的原理,可以参考 Pear ――PHP扩展与应用库( the PHP Extension and Application Repository ),其原理非常类似,都有一个官方库,都是微内核,通过网络将需要的文件下载到本地,通过官方仓库将相应的类库进行统一管理。
Maven2的基本安装方法网上很多,就到http://maven.apache.org下载一个最新版,解压后即可,如果需要在命令行运行,还需要设置一些环境变量,网上的资料很多,这里就不多说了。总之,安装成功后当你在命令行下执行maven -version后正确显示当前maven的版本即可。
我们在项目中结合maven的进行开发的主要思路:
1.建立支持Maven2的开发框架,框架中结合了一些项目功能和工具类,并且此框架本身是一个eclipse工程,支持使用eclipse IDE的开发,并通过CVS可进行团队协作。
2.在Maven2的pom.xml中制定开发框架的依赖包,并建立依赖包的团队管理本地服务器,使团队中的包依赖得到统一管理。
3.每日下班后,在构建服务器上每日从cvs上下载各个团队开发人员的代码,统一进行集成构建和测试。由于是每日构建,所以发现的bug可及时反馈给开发人员进行修正,避免了一般开发过程中的bug长时间遗留的情况。
二.实施过程
为了实现上述思路,我们分几步实施:
1.首先需要构建一个系统的开发框架,
我们有两种方式构建,
其一是从零开始构建全新的框架,进入commond line,cd 到一个目录 ,执行
mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp
执行完毕后接下来cd 到项目目录my-webapp下,执行
mvn package
mvn eclipse:eclipse
之后,打开eclipse,到其目录下导入项目,并手动编辑pom.xml文件,设定指定的jar包,比如加入一个 jwebunit的jar包,我们需要在pom中添加一段:
<dependency>
<groupId>jwebunit</groupId>
<artifactId>jwebunit</artifactId>
<version>1.2</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>rhino</groupId>
<artifactId>js</artifactId>
</exclusion>
</exclusions>
</dependency>
其中指定了包的名称,版本,使用的范围域等,pom.xml设置方式网上也是一堆一堆的,具体的可以自己搜搜。同时我们也可以使用maven2在 eclipse中的插件进行编辑,很方便,就不用记住那些该死的标签了。插件下载地址 http://m2eclipse.codehaus.org /update,将这个url填入到eclipse的Help-》Software Updates->find&install中新建一个插件下载地址的对话框中即可下载。
这种方式是完全自定义一个全新的工程后再进行框架搭建,比较累,尤其是添加依赖包的时候,需要根据自己的项目需要一个一个添加,很烦人,所以我们使用的第二个方法就直接找了一个现成的,到 Appfus 的网站http://appfuse.org/ 根据项目需要下载了一个项目框架作为原型,我们使用的是appfuse-light-webwork-ibatis- 1.8.2(webwork2.26,spring2.0,ibatis2.0),如果你使用的是其他的的技术,如 struts2,hibernate....直接到网站上下载一个相应的框架即可。appfuse框架使用maven2作为基本构建工具,其中自带的 pom.xml也替开发人员写好了,中所定义的依赖包可满足一般的开发需要,如需要自己指定的包,那么直接在其pom.xml中添加即可。要将这个框架作为eclipse工程使用,需要在解压后的框架目录下执行:
mvn eclipse:eclipse -DdownloadSources=true
这个命令会将工程将框架转换为eclipse工程,并从远程下载jar包到本地仓库(window下是 (C:\Documents and Settings\${username}\.m2\repository),之后执行:
mvn -Declipse.workspace=<path-to-eclipse-workspace> eclipse:add-maven-repo
其中path-to-eclipse-workspace是本机的eclipse的worksapce的路径。执行后 maven会在eclipse中建立一个M2_REPO环境变量,并将其中所有的jar包引入到工程中,完全自动化,十分方便。
打开eclipse修改开发中的环境变量(我们项目中使用了Myeclipse插件),找到相应的工程,发现框架中已有一些代码,这是appfuse提供给开发人员的示例代码,我们可以按照自己以前项目的积累进行对框架进行完善,形成一套自己的开发框架,之后设置工程环境变量,在该项目中右键 ->Myeclipse->add web capabilities->指定该工作空间下的Src/main/webapps作为WEB工程的根路径,并指定修改JAVA Build Path中
src/main/java
src/main/resource
src/test/java
的三个soucrefolder的outputpath 为scr/main/webapp/WEB-Inf/class,这样设置的目的是便于开发人员在本地进行部署测试,否则按照appfuse原有的工程设置是不能进行顺利部署的。
至此,我们已经将Maven2结合到项目中,一开始可能对目录结构有些不适应,毕竟这是maven提供的项目框架格式,可以修改为自己习惯的,但是不建议这样做。设置完成后,cd到项目路径下,运行
mvn test
mvn package
mvn install
三个命令,均成功后,可上传到cvs/svn上面去,共享给项目组人员,各开发人员可直接使用,但有可能M2_REPO环境设置路径不一样(C:\Documents and Settings\${username}\.m2\repository,毕竟不是所有人都把系统装在C盘),需要手动修改一下。
2. 建立开发团队内部仓库
为了便于团队的依赖包管理,我们不能全部使用官网的仓库,毕竟上面不具备我们项目开发所需要的所有的依赖包,所以我们需要为自己的团队建立一个内部仓库,可以自己管理所需的依赖包,建立一个内部仓库也十分简单(附录中我们会使用artifactory进行开发内部库建立):
首先需要一个 http server ,找台服务器装上 apache 就行。放一个空的 maven 目录到 htdocs 下,假设服务器 ip 为 192.168.0.1 ,确认能用 http://192.168.0.1/maven 访问到。
copy 本地仓库的jar包到服务器:对于 windows xp 来说一般在 C:\Documents and Settings\ % username%\.m2 下,其中% username %为操作系统登录用户名。这时你可以看到 ${user.home}/.m2/ 下有个 repository 目录,里面有很多的项目相关 jar ,目录按 groupId/ artifactId/version 排好。把 repository 目录整个拷贝到 apache 服务器的 maven 目录下,如果需要官方缺少的 jar 或公司内部 jar ,仿照这个目录结构,做好 jar 放到 maven 目录下。或者把包copy到本地,运行:
mvn install:install-file -Dfile=X:/path/mail-1.3.jar -DartifactId=javamail -Dversion=1.3.1 -Dpackaging=jar -DgroupId=javamail
分享到:
相关推荐
通过结合Maven、Nexus和Eclipse,开发者能够构建高效且可复用的J2EE项目,实现标准化的开发流程,提高代码质量,并确保依赖管理的稳定性。学习并掌握这些工具的使用,对于任何J2EE开发者来说都是极其重要的技能。
将Maven与Gulp结合,可以在J2EE项目中利用Gulp的强大功能。在Maven的生命周期中,我们可以定义一个Gulp任务作为构建的一部分。例如,我们可以在`pom.xml`文件中添加一个`maven-antrun-plugin`或`maven-exec-plugin`...
Maven通过解析POM文件,自动完成项目构建的各个阶段。 #### Maven项目结构与生命周期 Maven项目的结构清晰规范,主要包括`src/main`和`src/test`两个主要目录,分别存放主应用代码和测试代码,而`target`目录则...
9. **Maven或Gradle**:这些构建工具可以帮助开发者自动化构建过程,包括编译、测试、打包和部署J2EE项目。它们管理依赖关系,使得项目构建更加高效。 10. **容器与服务器**:J2EE应用通常运行在应用服务器上,如...
总的来说,通过Maven创建J2EE项目,我们可以充分利用其强大的依赖管理和构建功能,简化项目构建流程,提高开发效率。同时,Maven的插件体系也使得集成各种工具和自动化任务变得轻松,进一步提升了开发体验。结合源码...
通过以上介绍,我们可以看出Maven 3.0.5在J2EE开发中的重要作用,它使得项目构建更加标准化和自动化,降低了开发者的维护成本。在实际开发中,结合源码和工具使用,可以更高效地管理项目及其依赖,提高开发效率。
在J2EE项目中,可以使用JUnit进行Java类的单元测试,它提供了断言、测试套件和异常处理等功能,便于开发者编写和运行测试用例。 2. **集成测试**:当单个组件通过单元测试后,需要验证它们之间的交互。JUnit和...
在这个"使用Maven构建Struts2最简单例子"中,我们将探讨如何结合这两个工具来创建一个基础的J2EE应用。 首先,让我们深入了解Maven。Maven使用一个称为POM(Project Object Model)的XML文件来定义项目的配置信息,...
你将学习如何使用这些工具进行开发,以及如何使用Maven或Gradle等构建工具来管理和构建项目。 综上所述,J2EE实例涵盖了企业级开发的多个方面,包括组件模型、分层架构、分布式计算、消息传递、资源管理和安全性。...
在J2EE项目中,Maven可以用于创建项目模块,定义依赖关系,构建和打包应用。在描述中提到,首先需要创建一个Maven项目组,删除不必要的文件,只保留pom.xml,这是Maven项目的配置文件,用来管理项目的构建、报告和...
通过实际操作,读者可以更直观地看到Maven如何处理项目构建,如何管理依赖,以及如何自动化测试和部署。 总之,《Maven权威指南》是学习和掌握Maven的宝贵资源,无论你是Java开发者,还是想要理解现代构建工具的...
总的来说,通过MyEclipse 2014搭建Maven项目,可以充分利用Maven的强大功能,如自动化构建、依赖管理等,同时结合MyEclipse的便利性,为Java Web应用开发提供高效的工作流程。在实际开发过程中,你可能还需要配置...
标题中的“j2ee chm api ejb jboss maven”揭示了几个关键的IT概念,这些...学习和实践J2EE API、EJB、JBoss应用服务器的使用,以及利用Maven进行项目管理,将使开发者具备构建复杂、可扩展且高效的企业级应用的能力。
6. **Apache Maven**:Maven是一个项目管理和综合工具,它简化了构建过程,通过POM(Project Object Model)文件管理项目的依赖关系。Maven提供了标准化的构建流程,方便开发者管理和维护项目。 7. **Git**:Git是...
通过阅读"Maven2详细教程.doc"、"Maven+in+action.pdf"、"Maven2+Eclipse开发J2EE.pdf"和"maven入门时写的博客.pdf"这些资料,你可以深入理解Maven的各个方面,从基础到高级,从理论到实践,掌握这个强大的项目管理...
6. **Maven 支持**:基于 Maven 构建,使得项目依赖管理和构建过程标准化,易于团队协作。 7. **持续集成友好**:与 Jenkins、Git 等持续集成工具无缝集成,便于自动化部署和版本控制。 8. **文档齐全**:AppFuse ...
在Java EE开发中,Eclipse是一个常用的...通过Eclipse与Maven的结合,开发者能够高效地管理J2EE项目,快速部署到Tomcat服务器,提高开发效率。同时,Maven的插件系统也允许自定义构建过程,满足各种复杂的项目需求。
在J2EE专业项目实例开发中,我们主要探讨的是如何运用Java企业版(Java 2 Platform, Enterprise Edition,简称J2EE)技术来构建大型、分布式的企业级应用程序。J2EE是一个多层架构的平台,它为开发和部署可移植、...