簡體   English   中英

如何讓 cxf-codegen-plugin 從 jakarta.xml.ws 生成 Web 服務?

[英]How make cxf-codegen-plugin generate Webservices from jakarta.xml.ws?

從 Java 8 遷移到 Java 11。

將 cxf-codegen-plugin 從版本 3.2.0 更新到 3.3.6。

插件仍然使用來自 javax.jws.* 而不是來自 jakarta.jws.* 的包從 wsdl 個文件生成 Java 個存根:

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;

/**
 * This class was generated by Apache CXF 3.3.6
 * 2020-08-12T19:22:40.406+02:00
 * Generated source version: 3.3.6
 *
 */

我是否誤會了 javax.jws 已被棄用並應更改為 jakarta.jws?

以及如何使用所需的包完成代碼生成?

嘗試在生成源階段使用 maven-replacer-plugin,在我的情況下,我在目標文件夾上生成客戶端文件,然后在那里替換 package

            <plugin>
            <groupId>com.google.code.maven-replacer-plugin</groupId>
            <artifactId>maven-replacer-plugin</artifactId>
            <version>1.4.1</version>
            <executions>
                <execution>
                    <id>replace-for-jakarta</id>
                    <phase>process-sources</phase>
                    <goals>
                        <goal>replace</goal>
                    </goals>
                    <configuration>
                        <filesToInclude>target/generated/**/*.java</filesToInclude>
                        <preserveDir>true</preserveDir>
                        <replacements>
                            <replacement>
                                <token>javax.jws</token>
                                <value>jakarta.jws</value>
                            </replacement>
                        </replacements>
                    </configuration>
                </execution>
            </executions>
        </plugin>

在我們的例子中,配置是這樣的:

<configuration>
                            <filesToInclude>${project.build.directory}/generated-sources/cxf/**/*.java</filesToInclude>
                            <preserveDir>true</preserveDir>
                            <replacements>
                                <replacement>
                                    <token>javax.xml.bind</token>
                                    <value>jakarta.xml.bind</value>
                                </replacement>
                                <replacement>
                                    <token>javax.annotation</token>
                                    <value>jakarta.annotation</value>
                                </replacement>
                                <replacement>
                                    <token>javax.jws</token>
                                    <value>jakarta.jws</value>
                                </replacement>
                                <replacement>
                                    <token>javax.xml.ws</token>
                                    <value>jakarta.xml.ws</value>
                                </replacement>
                            </replacements>
                        </configuration>

問題已在CXF-8371中得到解決

如果升級到版本 >4.0.0,它將生成 jakarta.jws 而不是 javax.jws。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM