全部产品
云市场
云游戏

创建工程

更新时间:2020-06-05 09:46:22

SOFABoot 支持创建 Web 和 Core 两种类型的工程:

  • Web 工程
    • 通常用于需要 Web 页面展现的应用。当用该工程类型开发一个 Web 程序时,相当于基于 “Spring Boot 的 Web 应用 + SOFA 中间件” 进行开发。
    • 结合中间件 SOFAREST 服务,可提供基于 JAX-RS(Java API for RESTful Web Services) 标准的前后端分离解决方案。
  • Core 工程:通常用于实现无页面展现的后端服务。当使用 SOFABoot 开发一个 J2SE 程序(无 Web 页面访问),相当于“基于 Spring Boot 的非 Web 应用(无 servlet 依赖)+ SOFA 中间件” 进行开发。

下文将向您介绍如何创建工程,并对已创建工程的结构进行说明:

如何创建工程

本部分将向您介绍如何在本地使用 Maven 工具创建 SOFABoot Web 工程 和 Core 工程。在开始创建前,请务必参考 前置条件,完成工程运行前的准备工作。

前置条件

为执行本文代码示例,您需要首先搭建 SOFABoot 的运行环境。具体步骤详见 搭建环境

操作步骤

  1. 以操作系统管理员身份打开命令行工具,定位到需要创建工程的目录,并运行以下命令:

    • 如果使用的是 Maven 默认安装目录下的 settings.xml,且已按照 搭建环境 中的要求,对原 settings.xml 进行了覆盖操作,则使用下述 Maven 命令进行创建。
      • Web 工程:
        1. mvn archetype:generate -DarchetypeGroupId=com.alipay.sofa -DarchetypeArtifactId=sofaboot-web-archetype -DarchetypeVersion=1.0-SNAPSHOT -DarchetypeCatalog=internal
      • Core 工程:
        1. mvn archetype:generate -DarchetypeGroupId=com.alipay.sofa -DarchetypeArtifactId=sofaboot-core-archetype -DarchetypeVersion=1.0-SNAPSHOT -DarchetypeCatalog=internal
    • 如果使用的是 Maven 自定义安装目录下的 settings.xml,且已按照 搭建环境 中的要求,对原 settings.xml 进行了覆盖操作,则使用下述 Maven 命令进行创建。
      • Web 工程:
        1. mvn -s "custom_settings_path" archetype:generate -DarchetypeGroupId=com.alipay.sofa -DarchetypeArtifactId=sofaboot-web-archetype -DarchetypeVersion=1.0-SNAPSHOT -DarchetypeCatalog=internal
      • Core 工程:
        1. mvn -s "custom_settings_path" archetype:generate -DarchetypeGroupId=com.alipay.sofa -DarchetypeArtifactId=sofaboot-core-archetype -DarchetypeVersion=1.0-SNAPSHOT -DarchetypeCatalog=internal

        注意:使用自定义路径下的 settings.xml 时,请勿直接复制 Maven 命令,请把 “custom_settings_path” 替换为真实的文件路径,例如:"C:\apache-maven-3.3.3\conf\settingsXXX.xml"

  2. 在执行过程中,会提示您输入以下信息,可根据实际情况进行配置:

    • groupId:是工程在 Maven 仓库中的唯一标识,一般为公司域名或组织域名的反写,如:com.yourCompanyName.sofa

      注意:请按照开发规范创建自己的 groupId,避免在扫描配置时出现问题。

    • artifactId:表示项目名称或应用名称,如:web-appcore-app
    • version:版本号。默认为 1.0-SNAPSHOT。SNAPSHOT 意为快照,说明该项目还在开发中,是不稳定的版本。此处可维持默认值。
    • package:应用包名。此处可不填。

      说明groupIdartifactIdversion 三个元素生成了一个 Maven 项目的基本坐标。

  3. 完成以上配置后,会向您再次确认信息。
    • 输入 Y,表示确认,继续安装;
    • 输入 N,表示取消,重新定义以上属性。
  4. 属性定义完成后,工程创建会继续进行。当看到以下信息时,表示工程创建完成。
    1. [INFO] ------------------------------------------------------------------------
    2. [INFO] BUILD SUCCESS
    3. [INFO] ------------------------------------------------------------------------
    4. [INFO] Total time: 28.298 s
    5. [INFO] Finished at: 2018-01-10T23:36:19+08:00
    6. [INFO] Final Memory: 15M/163M
    7. [INFO] ------------------------------------------------------------------------
  5. 请移步 版本说明,查看最新的 SOFABoot 版本,然后在步骤 1 中定位的目录中查看新建的工程文件夹(以 artifaceId 命名),然后在工程根目录下的主 pom.xml 中,修改 <parent>标签的版本号,示例如下:
    versionNo

工程结构说明

对于上面所创建的两种 SOFABoot 两种工程的目录结构,现说明如下:

为了便于理解目录结构,本文通过示例进行说明。示例工程所使用的依赖信息如下:

  • groupId:com.alipay.sofa
  • artifactId:APPNAME

Web 工程原型目录

Web 工程模型默认生成 endpointweb 两个模块:

  • endpoint 模块:SOFAREST 的服务模块,对外提供 SOFAREST 服务。
  • web 模块:包含 main 函数的启动模块,可以直接运行。另外,还包含全局配置文件、测试模块和静态资源等。

使用 Maven 命令创建的 Web 工程目录结构如下:

  1. ├── app
  2. ├── endpoint
  3. ├── pom.xml
  4. └── src
  5. └── main
  6. ├── java
  7. └── com
  8. └── alipay
  9. └── APPNAME
  10. └── endpoint => SOFAREST 实践代码
  11. ├── constants
  12. ├── RestConstants.java
  13. └── URLConstants.java
  14. ├── exception
  15. ├── CommonException.java
  16. └── SofaRestExceptionHandler.java
  17. ├── facade
  18. └── SampleRestFacade.java
  19. ├── filter
  20. └── CommonContainerResponseFilter.java
  21. ├── impl
  22. └── SampleRestFacadeRestImpl.java
  23. ├── model
  24. └── DemoUserModel.java
  25. └── response
  26. ├── AbstractFacadeResp.java
  27. └── RestSampleFacadeResp.java
  28. └── resources
  29. └── META-INF
  30. └── APPNAME
  31. └── APPNAME-endpoint.xml
  32. └── web
  33. ├── pom.xml
  34. └── src
  35. ├── main
  36. ├── java
  37. └── com
  38. └── alipay
  39. └── APPNAME
  40. └── Slite2WebSpringBootApplication.java => 启动函数
  41. └── resources
  42. ├── META-INF
  43. └── APPNAME => Spring 配置文件存放处,放到指定的 APPNAME 目录下
  44. └── APPNAME-web.xml
  45. ├── config => 配置目录,详见「配置解决方案」
  46. └── application.properties => 应用的日志配置文件
  47. └── application-dev.properties
  48. └── application-test.properties
  49. ├── logback-spring.xml => 应用的日志配置文件
  50. └── static => WEB 工程的静态页面存放处
  51. └── index.html
  52. └── test => 应用的测试模块,内置启动了 Spring Boot,方便业务测试
  53. └── java
  54. └── com
  55. └── alipay
  56. └── APPNAME
  57. └── web
  58. └── test
  59. ├── base
  60. └── AbstractTestBase.java
  61. └── usercases
  62. └── SofaRestServiceTest.java
  63. └── pom.xml => 应用的 Maven 配置文件

说明:

  • 默认情况下,静态页面都存放至 src/main/resources/static 目录下以进行统一管理。
  • SOFABoot 的全局属性配置解决方案和日志配置解决方案,请参考 SOFABoot 技术栈的 配置解决方案
  • 应用的测试模块,在 web 模块的 src/test/java 目录下,测试用例包含一个测试基类(base)和一个测试类(usercases),测试类中启动了 Spring Boot 进行 SOFAREST 的简单功能测试。

Core 工程原型目录

根据实际应用名称,Core 工程模型会默认生成 {APPNAME}-facade{APPNAME}-service 两个模块:

  • facade 模块:定义应用的接口依赖包。
  • service 模块:包含 main 函数的启动模块,可以直接运行。另外,还包含全局配置文件和测试模块。以 groupId=com.alipay.sofaartifactId=APPNAME 为例,使用 Maven 命令创建的 Core 工程目录结构如下:
  1. ├── APPNAME-facade
  2. ├── pom.xml
  3. └── src => 当前应用用于分发给其他应用的接口依赖包
  4. └── main
  5. └── java
  6. └── com
  7. └── alipay
  8. └── APPNAME
  9. └── facade
  10. └── SampleService.java
  11. ├── APPNAME-service
  12. ├── pom.xml
  13. └── src
  14. ├── main
  15. ├── java
  16. └── com
  17. └── alipay
  18. └── APPNAME
  19. ├── Slite2SpringBootAPPNAMEApplication.java => 启动函数
  20. └── service
  21. └── SampleServiceImpl.java
  22. └── resources
  23. ├── META-INF
  24. └── APPNAME => Spring 配置文件存放处,放到指定的 APPNAME 目录下
  25. └── APPNAME-service.xml
  26. ├── config => 配置目录,详见「配置解决方案」
  27. ├── application-dev.properties
  28. ├── application-test.properties
  29. └── application.properties
  30. └── logback-spring.xml => 应用的日志配置文件
  31. └── test => 应用的测试模块,内置启动了 Spring Boot 方便业务测试
  32. ├── java
  33. └── com
  34. └── alipay
  35. └── APPNAME
  36. └── test
  37. ├── base
  38. └── AbstractTestBase.java
  39. └── usercases
  40. └── BeanTest.java
  41. └── resources
  42. └── test
  43. └── META-INF
  44. └── APPNAME
  45. └── test.xml
  46. └── pom.xml => 应用的 Maven 配置文件

说明

  • SOFABoot 的全局属性配置解决方案和日志配置解决方案,请参考 SOFABoot 技术栈的 配置解决方案
  • 应用的测试模块,在 service 模块的 src/test/java 目录下,测试用例包含一个测试基类(base)和一个测试类(usercases)。测试类中启动了 Spring Boot 进行 bean 的简单功能测试。