Mavengenerate-sources 使用 javax 而不是 jakarta 命名空间生成类

问题描述 投票:0回答:1

我正在将 Java 项目迁移为在 Java 17 中使用 Jakarta EE,但我遇到了一个问题:运行

mvn generate-sources
使用
javax
命名空间而不是预期的 jakarta 命名空间生成类。我的项目使用 JAXB 进行 XML 绑定,并且我已更新我的依赖项以使用最新的 Jakarta EE 版本。但是,生成的源仍然引用 javax.xml.bind 注释。

这是我的

pom.xml
的片段:

<dependencies>
    <dependency>
        <groupId>jakarta.xml.bind</groupId>
        <artifactId>jakarta.xml.bind-api</artifactId>
        <version>4.0.0</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jaxb</groupId>
        <artifactId>jaxb-runtime</artifactId>
        <version>4.0.3</version>
    </dependency>
    <!-- Other dependencies -->
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.jvnet.jaxb2.maven2</groupId>
            <artifactId>maven-jaxb2-plugin</artifactId>
            <version>0.15.3</version>
            <configuration>
                <!-- Configuration details -->
            </configuration>
        </plugin>
        <!-- Other plugins -->
    </plugins>
</build>

确保在生成源代码之前清理项目 (

mvn clean
)。尽管如此,输出仍然使用
javax
而不是
jakarta

有人遇到过类似的问题,或者有人知道可能导致这种差异的原因是什么?任何有关如何确保生成的类使用

jakarta
命名空间的见解或建议将不胜感激。

在检查 target/ generated-sources 目录中生成的源时,我注意到注释仍然从 javax.xml.bind.annotation 包导入,如下所示:

package localhost._8080.beers;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;

但是,我希望这些是从 jakarta.xml.bind.annotation 包导入的,如下所示:

import jakarta.xml.bind.annotation.XmlType;
java maven
1个回答
2
投票

看来你应该使用 4.x 版本的 jaxb-maven-plugin 而不是 maven-jaxb2-plugin。请参阅github

© www.soinside.com 2019 - 2024. All rights reserved.