org.jvnet.jaxb2.maven2:maven-jaxb2-plugin
などのプラグインを使用してxsdファイルを解析すると、jdk7からjdk8にアップグレードするときに次の例外が発生します。
org.xml.sax.SAXParseException; systemId: file:/D:/Work/my/schema.xsd; lineNumber: 27; columnNumber: 133; schema_reference: Failed to read schema document 'CoreComponentsTechnicalSpecification-1p0.xsd', because 'file' access is not allowed due to restriction set by the accessExternalSchema property.
このプラグインをjdk8でどのように機能させるのですか?
この質問の根本的な原因は これ と同じです。この問題を解決するには2つの方法があります。
javax.xml.accessExternalSchemaシステムプロパティの設定:
ローカルでのみビルドする場合は、この行を/path/to/jdk1.8.0/jre/libの下にあるjaxp.propertiesという名前のファイルに追加できます(存在しない場合)。
javax.xml.accessExternalSchema=all
他の人と一緒にプロジェクトで作業している可能性がある場合、特にjdk7をまだ使用している場合、これは機能しません。コマンドラインで指定されたシステムプロパティを使用して、Mavenビルドを実行できます。
$mvn <target and options> -Djavax.xml.accessExternalSchema=all
プラグインを使用してシステムプロパティを設定することもできます。
<plugin>
<!-- Needed to run the plugin xjc en Java 8 or superior -->
<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>all</value>
</property>
<property>
<name>javax.xml.accessExternalDTD</name>
<value>all</value>
</property>
</properties>
</configuration>
</plugin>
maven-jaxb2-plugin
プロパティを設定するには:
<plugin>
<groupId>org.jvnet.jax-ws-commons</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.3</version>
<configuration>
<!-- Needed with JAXP 1.5 -->
<vmArgs>
<vmArg>-Djavax.xml.accessExternalSchema=all</vmArg>
</vmArgs>
</configuration>
</plugin>
ターゲットバージョンの設定:システムプロパティを使用しない場合は、maven-jaxb2-plugin
ターゲットバージョン2.0に:
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>${maven.plugin.jaxb2.version}</version>
<configuration>
<args>
<arg>-target</arg>
<arg>2.0</arg>
</args>
</configuration>
</plugin>
プラグインの2.4バージョン:
<externalEntityProcessing>true</externalEntityProcessing>