全部产品
云市场
云游戏

pom.xml配置

更新时间:2020-05-12 18:17:13

本文主要对 SOFABoot Web 工程 和 Core 工程中的配置文件 pom.xml 进行说明。2 个工程在配置上的区别,主要是<module> 内容的不同。

Web 工程的 pom.xml 配置说明

Web 工程完整版 pom.xml 配置,请参考 完整版 pom.xml。下文将就 SOFABoot Web 工程 pom.xml 中的重要标签进行详细介绍。

parent 标签说明

请移步版本说明,查看最新的 SOFABoot 版本,在工程根目录下的主 pom.xml 中,修改下图所示例项的版本号:

版本号

project 标签说明

<project> 标签中,所声明的工程坐标,包括以下内容,可根据工程需要,进行修改:

  • modelVersion:声明工程描述应遵循的 POM 模型版本。
  • groupId:工程的全球唯一标识符,一般为公司域名或组织域名的反写。示例工程为:com.alipay.sofa
  • artifactId:工程的构件标识符。
  • version:工程版本号。SNAPSHOT 意为快照,说明该项目还在开发中,是不稳定的版本。
  • packaging:工程产生的构件类型,例如 jar、war、ear、pom。
  • name:工程的名称,非必选项。
  • url:工程主页的 URL,非必选项。

了解这些元素的具体含义,可参见 Apache Maven 官方文档(英文)

dependencies 标签说明

<dependencies> 标签中,声明了工程相关的所有依赖,说明如下:

模块标签

工程原型默认生成 app/endpointapp/web 两个模块(module):

  1. <modules>
  2. <module>app/endpoint</module>
  3. <module>app/web</module>
  4. </modules>
endpoint 模块

endpoint 模块是 SOFAREST 的服务模块,对外提供 SOFAREST 服务。SOFABoot Web 工程的 app/endpoint 模块中,默认添加了 SOFAREST 的启动期依赖。

  1. ```
  2. <dependency>
  3. <groupId>com.alipay.sofa</groupId>
  4. <artifactId>rest-enterprise-sofa-boot-starter</artifactId>
  5. </dependency>
  6. ```

SOFABoot 使用一系列的 {XXXXXX}-sofa-boot-starter 来统一管理中间件的依赖。例如,您需要新增对 RPC 中间件的依赖,可以在 pom.xml 中添加以下配置:

  1. <dependency>
  2. <groupId>com.alipay.sofa</groupId>
  3. <artifactId>rpc-enterprise-sofa-boot-starter</artifactId>
  4. </dependency>
web 模块

web 模块是启动模块,包含 main 函数可以直接运行,同时将全局的配置文件以及静态资源等放在这个模块下。

打包部署说明

SOFABoot Web 工程在 web 模块中配置 构建(build),使用 spring-boot-maven-plugin 作为构建工具并在工程根目录的 target 下生成一个 fat JAR(.jar)包。该 fat JAR 包是一个可部署单元,有本地和云端 2 种部署方式:

  • 本地部署:可运行 java -jar 命令启动该 .jar 包;
  • 云端部署:当上传到 SOFAStack 平台进行部署时,只需要上传该 fat JAR 文件,SOFABoot 技术栈会自动配合 SOFAStack 的部署平台为您部署。

build 标签示例如下:

  1. <build>
  2. <plugins>
  3. <!-- http://docs.spring.io/spring-boot/docs/current/maven-plugin/usage.html -->
  4. <plugin>
  5. <groupId>org.springframework.boot</groupId>
  6. <!-- http://docs.spring.io/spring-boot/docs/current/maven-plugin/usage.html -->
  7. <artifactId>spring-boot-maven-plugin</artifactId>
  8. <version>1.4.2.RELEASE</version>
  9. <configuration>
  10. <!-- 可部署的 fat JAR 打包在工程的根目录的 target 下面 -->
  11. <outputDirectory>../../target</outputDirectory>
  12. <classifier>executable</classifier>
  13. </configuration>
  14. <executions>
  15. <execution>
  16. <goals>
  17. <goal>repackage</goal>
  18. </goals>
  19. </execution>
  20. </executions>
  21. </plugin>
  22. </plugins>
  23. </build>


Core 工程的 pom.xml 配置说明

Core 工程完整版 pom.xml 配置,请参考完整版 pom.xml。下文将就 SOFABoot Core 工程 pom.xml 中的重要标签进行详细介绍。

parent 标签说明

请移步版本说明,查看最新的 SOFABoot 版本,在工程根目录下的主 pom.xml 中,修改下图所示例项的版本号:

版本号

project 标签说明

请您参考上文 Web 工程中的相关说明。

dependencies 标签说明

<dependencies> 标签中,声明了工程相关的所有依赖,说明如下:

模块标签

工程原型默认生成 APPNAME-facadeAPPNAME-service 两个模块(module):

  1. <modules>
  2. <module>APPNAME-facade</module>
  3. <module>APPNAME-service</module>
  4. </modules>
facade 模块

facade 模块用于定义服务的接口,同时在使用 RPC 中间件时方便将这个模块打包的 JAR 分发给服务的调用方。

service 模块

service 模块包含的配置信息包括 全局配置应用的日志配置文件 以及 技术栈相关的配置信息
service 模块引入 facade 模块和 RPC 中间件需要的所有依赖。以下是 service 模块的 pom.xml

  • service module 的 pom.xml 说明
    1. <!-- facade 依赖 -->
    2. <dependency>
    3. <groupId>com.alipay.sofa</groupId>
    4. <artifactId>APPNAME-facade</artifactId>
    5. </dependency>
    6. <!-- 引入了 RPC 中间件需要的所有依赖 -->
    7. <dependency>
    8. <groupId>com.alipay.sofa</groupId>
    9. <artifactId>rpc-enterprise-sofa-boot-starter</artifactId>
    10. </dependency>

打包部署说明

关于打包部署方式,请您参考上文 Web 工程中 打包部署说明