Свойство каталога accessExternalDTD игнорирует файл каталога
При запуске mvn clean install я получаю следующую ошибку: внешние файлы недоступны.
schema_reference: Failed to read schema document 'xml.xsd', because 'http' access is not allowed due to restriction set by the accessExternalSchema property.
Это поведение, как я и хочу, чтобы мои ресурсы были локальными. Но не должно ли изменение каталога избежать этой ошибки? Или что-то не так с моим конфигом?
Части файла pom:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<id>xjc</id>
<goals>
<goal>xjc</goal>
</goals>
</execution>
</executions>
<configuration>
<catalog>${project.basedir}/catalog.xml</catalog>
<schemaDirectory>${project.basedir}/src/main/resources/</schemaDirectory>
<outputDirectory>${project.basedir}/src/main/java</outputDirectory>
<clearOutputDir>false</clearOutputDir>
</configuration>
</plugin>
<plugin>
<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</value>
</property>
<property>
<name>javax.xml.accessExternalDTD</name>
<value>file</value>
</property>
</properties>
<outputFile/>
</configuration>
</plugin>
Файл каталога:
<!DOCTYPE catalog
PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
<rewriteSystem systemIdStartString="http://www.w3.org/XML/1998/namespace" rewritePrefix="www.w3.org"/>
</catalog>
2 ответа
После долгих экспериментов я обнаружил, что мой каталог был неправильным. Использование
<property>
<name>javax.xml.accessExternalSchema</name>
<value>file</value>
</property>
<property>
<name>javax.xml.accessExternalDTD</name>
<value>file</value>
</property>
был удален, и я изменил свой каталог на файл catalog.cat, форма catalog.xml, на этот:
REWRITE_SYSTEM "http://www.w3.org" "www.w3.org"
REWRITE_SYSTEM "http://docs.oasis-open.org" "docs.oasis-open.org"
REWRITE_URI "http://docs.oasis-open.org/wsn" "docs.oasis-open.org/wsn"
REWRITE_URI "http://docs.oasis-open.org/wsrf" "docs.oasis-open.org/wsrf"
Свойства, упомянутые выше, работают с этим каталогом, но я удалил его, так как с рабочим каталогом maven не извлекает какие-либо внешние схемы, пока путь в каталоге правильный. Делать свойства устаревшими.
У меня была похожая ошибка, и я пробовал слишком много решений, которые я нашел, но единственное, которое работает для меня, было:
Добавив это в тег pom in plugins
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemPropertyVariables>
<javax.xml.accessExternalSchema>all</javax.xml.accessExternalSchema>
</systemPropertyVariables>
</configuration>
</plugin>
Извините за мой плохой английский, я надеюсь, что это будет работать для вас