maven-2 - 如何在 maven-jaxb2-plugin 中指定 JAXB 版本?

标签 maven-2 maven jaxb2 maven-jaxb2-plugin

我需要使用最新版本的 jaxb: 2.2.4-1,但 maven 或 maven-jaxb2-plugin 似乎从 JDK 中选择了那个。

我尝试指定这样的版本:

<configuration>
    <specVersion>2.2</specVersion>
    ...
</configuration>

但日志显示:
[INFO] [jaxb2:generate {execution: common}]
[INFO] Started execution.
[INFO] JAXB API is loaded from the [jar:file:/opt/jdk1.6.0_24/jre/lib/rt.jar!].
[INFO] Detected JAXB API version [2.1].

我尝试向正确版本的 javax.xml.bind:jaxb-api 和 com.sun.xml.bind:jaxb-impl 添加依赖项,但这没有帮助。
<plugins>
    <plugin>
        <groupId>org.jvnet.jaxb2.maven2</groupId>
        <artifactId>maven-jaxb2-plugin</artifactId>
        <version>0.8.0</version>

        <dependencies>
            <dependency>
                <groupId>javax.xml.bind</groupId>
                <artifactId>jaxb-api</artifactId>
                <version>2.2.4</version>
            </dependency>

            <dependency>
                <groupId>com.sun.xml.bind</groupId>
                <artifactId>jaxb-impl</artifactId>
                <version>2.2.4-1</version>
            </dependency>
        </dependencies>

        <executions>
            <execution>
                <id>common</id>
                <goals>
                    <goal>generate</goal>
                </goals>
                <configuration>
                    <specVersion>2.2</specVersion>
                    ...
                </configuration>
            </execution>
        </executions>
    </plugin>
</plugins>

我也尝试使用 maven-jaxb22-plugin 但它也不起作用。

最佳答案

以下代码改编自 netbeans 生成的默认 webapp。它使用依赖插件将 jars 复制到一个临时文件夹,并将该文件夹指定为编译器的认可目录,以便它覆盖 jdk 中的实现。

<properties>
    <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
</properties>

...

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <compilerArguments>
                    <endorseddirs>${endorsed.dir}</endorseddirs>
                </compilerArguments>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.1</version>
            <executions>
                <execution>
                    <phase>validate</phase>
                    <goals>
                        <goal>copy</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${endorsed.dir}</outputDirectory>
                        <silent>true</silent>
                        <artifactItems>
                            <artifactItem>
                                <groupId>javax.xml.bind</groupId>
                                <artifactId>jaxb-api</artifactId>
                                <version>2.2.4</version>
                                <type>jar</type>
                            </artifactItem>
                            <artifactItem>
                                <groupId>com.sun.xml.bind</groupId>
                                <artifactId>jaxb-impl</artifactId>
                                <version>2.2.4-1</version>
                                <type>jar</type>
                            </artifactItem>
                        </artifactItems>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

关于maven-2 - 如何在 maven-jaxb2-plugin 中指定 JAXB 版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7094574/

相关文章:

java - h2数据库测试maven

java - 如何使用默认访问(或包默认)访问构造函数

java - 是否可以使用 JAXB 生成共享对象?

java - 如何编写 Maven 构建脚本来执行 Java

maven-2 - Maven Exec 插件不读取配置

maven-2 - 如何使用 cargo :start using maven部署特定的子项目

java - 当我的电脑刚刚安装x64 jdk7时,如何使用x86 jdk构建代码

java - 如何在现有项目中正确使用 Swagger Maven Plugin

java - 是否有生成生成器的 JAXB 插件?

java - Docx4j 加载 docx 时出现 NullPointerException