如何为 JAXB2 Maven 插件指定 javax.xml.accessExternalSchema

2022-09-01 13:50:18

我有一个maven插件(jaxb2),我需要为它提供一个jvm arg。我不认为有一个标签可以在pom中添加jvm args。

我知道我可以在命令行上传入jvm args,例如:mvn clean install -Djavax.xml.accessExternalSchema=all

是否可以在pom中设置此jvm arg,以便我不必每次都将其键入命令行?

(顺便说一句 - 这个jvm arg是必需的,以便它与JAVA-8一起工作。它与JAVA-7一起工作正常)


答案 1

这与 Java 8 中引入的 JAXB 1.5 中新的 XML 安全性属性相关。这就是为什么你的构建现在在Java 8上失败,但使用Java 7。

如果您使用的是 my ,请升级到版本或更高版本(当前为 )。它现在有一个 accessExternalSchema 开关(默认值为 )。maven-jaxb2-plugin0.9.00.10.0all

这精确地设置了.javax.xml.accessExternalSchema=all

请参阅文档


答案 2

我在使用jaxb2-maven-plugin时遇到了这个问题。我发现了一个相关的jira问题 maven-jabx2-plugin - https://java.net/projects/maven-jaxb2-plugin/lists/issues/archive/2014-03/message/0

根据这个问题,Stephan202建议使用属性maven插件,它像魅力一样工作。这是他帖子中的示例代码 -

<plugin>
<!-- We use this plugin to ensure that our usage of the
maven-jaxb2-plugin is JDK 8 compatible in absence of a fix
for https://java.net/jira/browse/MAVEN_JAXB2_PLUGIN-80. -->
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>properties-maven-plugin</artifactId>
    <version>1.0-alpha-2</version>
    <executions>
        <execution>
            <id>set-additional-system-properties</id>
            <goals>
                <goal>set-system-properties</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <properties>
            <property>
                <name>javax.xml.accessExternalSchema</name>
                <value>file,http</value>
            </property>
        </properties>
    </configuration>
</plugin>

推荐