`
lzzy_alex
  • 浏览: 30080 次
社区版块
存档分类
最新评论

Maven - 应用案例(六)

 
阅读更多

通过上面基础知识的准备,我们已经对Maven基本概念有了一定认识。现在,让我们以一个项目案例开启Maven应用开发之旅吧!

 

Note: 该案例参考自Maven实战,源码已经提供在附件中。文章只挑选Maven配置要点讲解,在读文章的时候读者应该配合源码观看。

 

1. 案例场景:

 

我们要开发一个账号服务系统,实现账号注册,登录,验证码,持久化,邮箱服务的基本功能。

模块划分如下:

account-web       :    交互入口

account-service  :    核心服务模块,负责业务组织与模块调用

account-persist   :    持久化支持

account-captcha :    google开源验证码模块

account-email     :    邮件服务



 

2. 聚合与继承 account-parent

 

目前已经对各模块进行了简单的划分,每一个模块都是一个Maven项目(带pom.xml),可独立开发测试的。

我们在外层做一个叫 account-parent 的模块,将各个子模块聚合起来,变成一个项目:

 

聚合模块 account-parent:

通过关键字 modules 实现了模块聚合,同时,各模块间会存在一些共享资源(如:都依赖spring),那么我们就可以将这部分共享资源放在 account-parent 中,子模块以继承的方式实现共享资源访问。

 

共享资源定义:

Note : 如果不确定该依赖在所有的子模块中都会用到,就把它放到<dependencyManagement/>元素中,表示可选的继承依赖。

 

到这里,我们先切换到 account-parent 目录下,运行命令 mvn clean install (前面章节的clean, default生命周期命令哦)


 

 

3. account-email

 

首先这是一个普通的Maven项目,结构如下:

 

该模块通过 javax.mail 实现邮件发送功能:

<dependency>
  <groupId>javax.mail</groupId>
  <artifactId>mail</artifactId>
  <version>${javax.mail.version}</version>
</dependency>	
public interface AccountEmailService {
	void sendMail(String to, String subject, String htmlText);
}

 

通过关键字 parent 和父模块坐标,继承了 account-parent:

<parent>
  <groupId>com.juvenxu.mvnbook.account</groupId>
  <artifactId>account-parent</artifactId>
  <version>1.0.0-SNAPSHOT</version>
</parent>

 

因为 account-email 是一个独立的模块,所以我们可以切换到 account-email 目录下,单独对它构建:mvn clean test

可以看到AccountEmailServiceTest的测试已经通过了。

 

4. account-captcha

该模块通过使用三方构件,实现验证码生成的功能,配置与email相似。由于该校验码构件并没有提交到中央仓库,所以需要自定义远程仓库路径:

<repositories>
 <repository>
  <id>sonatype-forge</id>
  <name>Sonatype Forge</name>
  <url>http://repository.sonatype.org/content/groups/forge/</url>
  <releases>
    <enabled>true</enabled>
  </releases>
  <snapshots>
    <enabled>false</enabled>
  </snapshots>
 </repository>
</repositories>

 

5. account-service

这是对外提供业务调度的模块,需要依赖其它的模块才能完成构建行为:

<dependency>
  <groupId>${project.groupId}</groupId>
  <artifactId>account-email</artifactId>
  <version>${project.version}</version>
</dependency>
<dependency>
  <groupId>${project.groupId}</groupId>
  <artifactId>account-persist</artifactId>
  <version>${project.version}</version>
</dependency>

6. account-web

该模块负责前端交互,依赖于 account-service 实现业务的管理

<dependency>
  <groupId>${project.groupId}</groupId>
  <artifactId>account-service</artifactId>
  <version>${project.version}</version>
</dependency>

同时,因为是Web项目,我们需要将它的打包方式改为war包(缺省jar):

<packaging>war</packaging>

还可以看到项目依赖于容器提供的包(前面章节的依赖范围哦):

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>servlet-api</artifactId>
  <version>2.4</version>
  <scope>provided</scope>
</dependency>

为了方便开发,还提供了jetty容器插件的集成:

<plugin>
  <groupId>org.mortbay.jetty</groupId>
  <artifactId>jetty-maven-plugin</artifactId>
  <version>7.1.0.RC1</version>
  <configuration>
    <scanIntervalSeconds>10</scanIntervalSeconds>
    <webAppConfig>
      <contextPath>/account</contextPath>
    </webAppConfig>
  </configuration>
</plugin>

 

因为有一个邮件发送的模块,所以在运行项目之前,还需要配置一下邮件服务器的信息:

 

开启QQ邮箱的SMTP功能: 

 

7. 运行项目

现在我们已经认识了项目主要的知识点,回到 account-parent 目录,重构建一下项目 mvn clean install

然后再到 account-web 目录,执行 mvn jetty:run ,访问 http://localhost:8080/account  就可以看到项目了。



 

到QQ邮箱中已经可以看到激活邮件了: 

 

项目对于初学者可能比较复杂,需要配合源码,多运行琢磨一下!

 

资料参考:

http://maven.apache.org

Maven实战  - 许晓斌

  • 大小: 42.3 KB
  • 大小: 11.3 KB
  • 大小: 29.2 KB
  • 大小: 11.6 KB
  • 大小: 17.6 KB
  • 大小: 7.8 KB
  • 大小: 256.6 KB
  • 大小: 14.4 KB
  • 大小: 110.7 KB
  • 大小: 14.4 KB
  • 大小: 109.4 KB
  • 大小: 257.1 KB
分享到:
评论

相关推荐

    Maven exec-maven-plugin:执行外部命令的实践指南

    本文将详细介绍exec-maven-plugin的用途、配置方法以及实际应用案例。 exec-maven-plugin是一个灵活且功能丰富的Maven插件,它极大地扩展了Maven的构建能力。通过本文的介绍,读者应该对如何使用exec-maven-plugin有...

    apache-maven-3.6.1.zip.zip

    Apache Maven 是一个强大的项目管理和构建工具,主要用于Java应用程序的开发。Maven 使用一种标准化的项目对象模型(Project Object Model,POM),通过依赖管理和项目生命周期的概念,使得构建、配置和管理Java项目...

    tomcat7-maven-plugin-2.2.jar.zip

    在这个案例中,"tomcat7-maven-plugin"是一个专门为Tomcat7设计的Maven插件,版本为2.2。这个插件允许开发者在Maven构建流程中直接集成Tomcat7,实现应用的自动部署、启动、停止等操作,无需手动干预。 该插件的...

    apache-maven-3.3.9,需要jdk7及以上版本

    在本案例中,我们关注的是Apache Maven的3.3.9版本,这是一个稳定且广泛使用的版本。 Maven 3.3.9 需要Java Development Kit (JDK) 的7或更高版本才能运行。JDK是Java编程语言的基础,包含了编译器、调试器和其他...

    jetty-console-maven-plugin-1.53.zip

    Maven插件是用于集成Jetty到Maven构建过程中的工具,它允许开发者通过简单的命令行指令快速启动、测试和调试Web应用,而无需每次都打包和部署。 【描述】:“buildergen.zip”包含的是一个名为“buildergen”的Java...

    apache-maven-3.6.3-bin.zip

    在本案例中,我们讨论的是 Apache Maven 的 3.6.3 版本。 标题 "apache-maven-3.6.3-bin.zip" 提供了关键信息,即这是 Maven 的一个二进制发行版,包含了执行 Maven 命令所需的可执行文件和库。这个版本是 3.6.3,...

    apache-maven-3.5.0-bin.zip

    在本案例中,我们关注的是"apache-maven-3.5.0-bin.zip"这个压缩包,它是Apache Maven 3.5.0的二进制版本,包含了运行和配置Maven所需的所有文件。 首先,让我们深入了解Maven的核心概念: 1. **项目对象模型(POM...

    maven-thrift-server

    总结,"Maven-Thrift-Server"是一个基于Maven的项目,利用Thrift框架构建服务端应用,简化了服务接口的定义和代码生成过程,使得开发者可以专注于业务逻辑的实现和测试。通过理解和掌握这些知识点,你可以更高效地...

    (配置好的)apache-maven-3.8.1.zip

    在本案例中,我们讨论的是预配置好的 Apache Maven 3.8.1 版本,其中已经集成了阿里云仓库的配置,这对于在中国开发和部署Java应用程序尤其有用,因为它提供了更快的依赖下载速度。 标题中的 "(配置好的)apache-...

    Apache Maven项目构建工具 v3.9.6.zip

    对于毕业设计或论文,Maven是一个很好的实践案例,可以探讨项目管理工具如何提升开发效率和质量。 7. **模板建站与系统软件工具** Maven不仅可以用于构建传统的Java应用,还可以应用于Web开发,比如结合Spring ...

    maven-dubbo-consumer

    【maven-dubbo-consumer】项目是一个基于Maven构建的Dubbo消费者端示例,它展示了如何在Java应用中使用Dubbo框架来调用服务提供者的接口。Dubbo是一款高性能、轻量级的服务治理框架,它主要实现了服务的发布、发现、...

    Maven-assemble打包使用案例

    我们将探讨`assemble`插件的基本概念、配置以及在实际案例中的应用。 Maven是一款广泛使用的Java项目管理工具,它通过POM(Project Object Model)文件来管理项目的依赖和构建过程。Maven的`assemble`插件则是用于...

    antlr-maven-plugin-2.1.jar.zip

    在本案例中,我们关注的是`antlr-maven-plugin-2.1.jar.zip`,这是一个包含ANTLR相关插件的压缩文件,适用于Maven构建系统。 Maven是一个项目管理和综合工具,它提供了统一的方式来构建、文档生成、项目信息管理...

    apache-maven-3.5.0 阿里镜像

    Apache Maven 是一个强大的项目管理和构建工具,广泛应用于Java开发领域。Maven 使用一种标准化的项目对象模型(Project Object Model,POM),使得构建过程、依赖管理、报告生成等任务变得简单且可重用。在本案例中...

    apache-maven-3.6.1.zip

    在本案例中,我们讨论的是 Apache Maven 的3.6.1版本的安装与使用。 标题 "apache-maven-3.6.1.zip" 提供了我们要下载和使用的 Maven 版本,这是 Maven 的一个归档文件,包含了运行 Maven 所需的所有组件,如 Maven...

    maven-1.rar

    总的来说,"maven-1.rar" 可能是一个包含 Maven 项目配置、MyBatis 集成示例、源代码和测试案例的压缩包,为学习和理解 Maven 与 MyBatis 的集成提供了实践素材。通过解析和运行其中的内容,开发者可以深入了解这两...

    maven-spring 实例

    通过这个案例,开发者可以学习如何配置Maven的POM.xml文件,引入Spring依赖,编写Spring配置,以及如何利用Maven的生命周期进行构建和测试。这个实例对于初学者来说是一个很好的起点,能够帮助他们理解这两个强大的...

    java-maven-analyzer-2012-u6-jar包依赖

    在Java开发中,Maven是一个广泛应用的构建管理和项目管理工具,它使得项目依赖管理变得简单。Maven通过使用一个项目对象模型(Project Object Model,POM)来描述项目,并利用中央仓库下载所需的库,同时也负责构建...

    maven-definitive-guide.pdf

    以上概述了《Maven Definitive Guide》一书中关于Maven的基本概念、安装指南和实践案例的主要内容。Maven不仅是一款强大的构建工具,也是一种项目管理哲学的体现。通过对Maven的学习和掌握,可以极大提高软件开发的...

Global site tag (gtag.js) - Google Analytics