【问题标题】:Telosys & Maven Modules - Code Generation Across Several ModulesTelosys 和 Maven 模块 - 跨多个模块的代码生成
【发布时间】:2023-01-30 22:19:24
【问题描述】:

我有一个 Maven 项目,里面有几个子模块。它们被打包,以便我可以跨多个微服务重用代码。我可以在父项目中生成我希望的 Java 类,但是,当我尝试在子目录中生成类时,我的包解析为:

error.folder.not.started.with.the.given.src.folder.activities

这是可以理解的,因为我的$SRCsrc/main/java 而不是service-core/src/main/java

我所有的模块都以相同的方式组织,$SRC at src/main/java,如果我可以通知 Telosys 这些模块的存在,我就可以在正确的位置生成代码,而无需在之后移动它一代。

我只想在 service-core 模块中使用 init Telosys,但我也想支持在 dto-public 中生成 DTO,在我的 api-public 中生成控制器/测试。有什么方法可以在 Telosys 中支持这个吗?

我尝试过的事情:

  • 添加父 .vm 文件,使用不同的目录调用 $generator.generate。此配置产生上述结果。
  • templates.cfg 中生成的目录更改为包括 service-core/${SRC}/${ROOT_PKG}/model/。此配置也会产生上述结果。

【问题讨论】:

    标签: java maven telosys


    【解决方案1】:

    看起来你可能正在寻找$target

    $target.javaPackageFromFolder(String srcFolder)
    

    【讨论】:

    • 不幸的是,这就是产生error.folder.not.started.with.the.given.src.folder.activities的原因
    • Aw dang,我不认为我可以提供任何更有价值的东西。
    【解决方案2】:

    要生成多模块 Maven 项目,我推荐以下方法:

    1. Telosys 项目级别为文件中的每个模块定义一个特定的全局变量“telosys.cfg“并定义“根包”变量

      例子:

      # Root package (will be used as "root folder" in targets)
      ROOT_PKG = org.demo.orders
      
      # Maven project / parent  :
      ProjectVariable.MODULE_PARENT = orders-parent
      
      # Maven project / modules :
      ProjectVariable.MODULE_MICROSERVICE   = orders-microservice
      ProjectVariable.MODULE_DOMAIN         = orders-domain
      ProjectVariable.MODULE_INFRA_MYBATIS  = orders-infra-mybatis
      ProjectVariable.MODULE_INFRA_ELASTIC  = orders-infra-elastic
      ProjectVariable.MODULE_INFRA_RABBITMQ = orders-infra-rabbitmq
      

      您可以保留标准变量的常用值:

      SRC      = src/main/java
      RES      = src/main/resources
      WEB      = src/main/webapp
      TEST_SRC = src/test/java
      TEST_RES = src/test/resources
      DOC      = doc
      TMP      = tmp
      
      1. Telosys 模板级别(在每个包中)使用全局变量定义文件中的目标文件夹“模板.cfg

      您可以组合 $SRC、$MODULE_XXX 和 $ROOT_PKG 来构建目标目录

      示例(项目模块初始化):

      # "microservice" module
      ; pom.xml                    ; ${MODULE_MICROSERVICE}                     ; microservice/microservice-pom_xml.vm; 1 
      ; README.md                  ; ${MODULE_MICROSERVICE}                     ; microservice/README_md.vm ; 1 
      ; SpringBootApp.java         ; ${MODULE_MICROSERVICE}/${SRC}/${ROOT_PKG}  ; microservice/SpringBootApp_java.vm    ; 1 
      ; application.properties     ; ${MODULE_MICROSERVICE}/${RES}              ; microservice/application_properties.vm    ; 1 
      ; application-dev.properties ; ${MODULE_MICROSERVICE}/${RES}              ; microservice/application-dev_properties.vm; 1 
      
      # Other modules initialization
      ; pom.xml ; ${MODULE_DOMAIN}        ; modules/domain-pom_xml.vm  ; 1 
      ; pom.xml ; ${MODULE_INFRA_MYBATIS} ; modules/infra-mybatis-pom_xml.vm   ; 1 
      ; pom.xml ; ${MODULE_INFRA_ELASTIC} ; modules/infra-elastic-pom_xml.vm   ; 1 
      ; pom.xml ; ${MODULE_INFRA_RABBITMQ}; modules/infra-rabbitmq-pom_xml.vm   ; 1 
      ; pom.xml ; ${MODULE_REST_APP}      ; modules/rest-app-pom_xml.vm   ; 1 
      ; pom.xml ; ${MODULE_REST_DTO}      ; modules/rest-dto-pom_xml.vm   ; 1 
      

      其他示例(在“域”模块的捆绑包中):

      pom.xml file    ; pom.xml      ; ${MODULE_DOMAIN} ; domain-pom_xml.vm      ; 1
      readme file     ; README.md    ; ${MODULE_DOMAIN} ; domain-readme_md.vm    ; 1 
      
      Entity        ; Entity.java                  ; ${MODULE_DOMAIN}/${SRC}/${ROOT_PKG}/domain/common ; domain-common/Entity_java.vm  ; 1 
      AggregRoot    ; AggregateRoot.java           ; ${MODULE_DOMAIN}/${SRC}/${ROOT_PKG}/domain/common ; domain-common/AggregateRoot_java.vm  ; 1 
      AggregRootRepo; AggregateRootRepository.java ; ${MODULE_DOMAIN}/${SRC}/${ROOT_PKG}/domain/common ; domain-common/AggregateRootRepository_java.vm  ; 1
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-08
      • 1970-01-01
      • 2014-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多