【问题标题】:cxf-codegen-plugin generates bad code if mixing global build and profile build如果混合全局构建和配置文件构建,cxf-codegen-plugin 会生成错误代码
【发布时间】:2017-03-14 17:40:08
【问题描述】:

Java SOAP 网络应用程序。我有几项服务要查询,我必须根据环境(测试、产品)区分其中一项。我认为将通用 WSDL 保持在一起并为需要区分的服务创建两个配置文件是一种逻辑。不幸的是,我无法在运行时以编程方式更改 WSDL_LOCATION。所以我写了(将 XML 简化为 YAML 并删除像 <phase>generate-sources</phase> 这样的明显元素):

project: 
 build: 
  plugins: 
   plugin: 
    executions: 
     execution: 
      id: "generate-common-sources"
      configuration: 
       wsdlOptions: 
        wsdlOption: 
         -
          wsdl: "${project.basedir}/src/main/resources/wsdl/Service1.wsdl"
          wsdlLocation: "/wsdl/Service1.wsdl"
         - 
          wsdl: "${project.basedir}/src/main/resources/wsdl/Service2.wsdl"
          wsdlLocation: "/wsdl/Service2.wsdl"
 profiles: 
  profile: 
   id: "env-test"
   build: 
    plugins: 
     plugin: 
      executions: 
       execution: 
        id: "generate-test-sources"
        configuration: 
         wsdlOptions: 
          wsdlOption: 
           wsdl: "${project.basedir}/src/main/resources/wsdl/Service3-test.wsdl"
           wsdlLocation: "/wsdl/Service3-test.wsdl"
  profile:
   id: "env-prod"
   build:
    # Duplicate env-test here

但这不起作用:Service1 和 Service2 生成的完整路径 WSDL_LOCATION 在服务器上显然失败了。为什么?

【问题讨论】:

    标签: java web-services maven soap cxf-codegen-plugin


    【解决方案1】:

    我在多次诅咒后发现的工作配置是:

    project: 
     build: 
      plugins: 
       plugin: 
        executions: 
         execution: 
          id: "generate-common-sources"
          configuration: 
           wsdlOptions: # Keep this empty!
     profiles: 
      profile: 
       id: "env-test"
       build: 
        plugins: 
         plugin: 
          executions: 
           execution: 
            id: "generate-test-sources"
            configuration: 
             wsdlOptions: 
              wsdlOption: 
               - 
                wsdl: "${project.basedir}/src/main/resources/wsdl/Service1.wsdl"
                wsdlLocation: "/wsdl/Service1.wsdl"
               - 
                wsdl: "${project.basedir}/src/main/resources/wsdl/Service2.wsdl"
                wsdlLocation: "/wsdl/Service2.wsdl"
               - 
                wsdl: "${project.basedir}/src/main/resources/wsdl/Service3-test.wsdl"
                wsdlLocation: "/wsdl/Service3-test.wsdl"
      profile:
       id: "env-prod"
       build:
        # Duplicate env-test here
    

    仍然不清楚为什么我的第一种方法不起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-27
      • 2015-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-22
      相关资源
      最近更新 更多