CXF-Codegen-Plugin如果混合全局构建和配置文件,会生成不良代码



Java SOAP Web应用程序。我有几种查询的服务,我必须根据环境(测试,产品)来区分其中之一。我认为将常见的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生成,该路径显然在服务器上失败。为什么?

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

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

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

最新更新