java 如何使cxf-codegen-plugin从www.example.com生成Web服务jakarta.xml.ws?

2admgd59  于 2023-01-24  发布在  Java
关注(0)|答案(3)|浏览(147)

从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
 *
 */

jws已被弃用,应该改为jakarta. jws,我是否理解错了?
如何使用所需的包完成代码生成?

daupos2t

daupos2t1#

尝试在生成源代码阶段使用maven-replacer-plugin,在我的例子中,我在目标文件夹上生成客户端文件,然后替换那里的包

<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>
68bkxrlz

68bkxrlz2#

在我们的例子中,配置是这样的:

<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>
xesrikrc

xesrikrc3#

问题已在CXF-8371中解决
如果您升级到4.0.0以上的版本,它将生成jakarta.jws而不是javax.jws。

相关问题