java - property - propiedad accessexternalschema
Cómo especificar javax.xml.accessExternalSchema para el complemento JAXB2 Maven (6)
Tengo un plugin de maven (jaxb2) y necesito proporcionarle un jvm arg. No creo que haya una etiqueta para agregar jvm args en el pom.
Sé que puedo pasar jvm args en la línea de comandos, por ejemplo: mvn clean install -Djavax.xml.accessExternalSchema=all
¿Es posible establecer este jvm arg en el pom para que no tenga que escribirlo en la línea de comandos cada vez?
(Dejando a un lado, este jvm arg es necesario para que funcione con JAVA-8. Funciona bien con JAVA-7)
Eche un vistazo al complemento de compilador de Maven. Específicamente, debe poder usar el elemento <compilerArgument>
para pasar la configuración al compilador.
Consulte http://maven.apache.org/plugins/maven-compiler-plugin/examples/pass-compiler-arguments.html para ver ejemplos.
Esto es relevante para las nuevas propiedades de seguridad XML en JAXB 1.5 , introducidas en Java 8. Es por eso que sus compilaciones ahora fallan en Java 8 pero funcionan con Java 7.
Si está utilizando mi maven-jaxb2-plugin
, actualice a la versión 0.9.0
o posterior (la actual es 0.10.0
). Ahora tiene un conmutador accessExternalSchema
(el valor predeterminado es all
).
Esto establece precisamente javax.xml.accessExternalSchema=all
.
Por favor vea la accessExternalSchema .
Esto ha funcionado para mí :
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<executions>
<execution>
<phase>process-sources</phase>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<vmArgs>
<arg>-Djavax.xml.accessExternalSchema=all</arg>
</vmArgs>
<keep>true</keep>
<verbose>true</verbose>
<wsdlDirectory>${project.build.directory}/wsdl</wsdlDirectory>
<wsdlFiles>
<wsdlFile>ServiceWsService.wsdl</wsdlFile>
</wsdlFiles>
<bindingFiles>
<bindingFile>custom-binding.xml</bindingFile>
<bindingFile>custom-binding2.xml</bindingFile>
</bindingFiles>
</configuration>
</execution>
</executions>
</plugin>
Me encontré con este problema mientras trabajaba con jaxb2-maven-plugin. Encontré un problema relacionado con jira para maven-jabx2-plugin - https://java.net/projects/maven-jaxb2-plugin/lists/issues/archive/2014-03/message/0
De acuerdo con este problema, Stephan202 sugirió usar propiedades-maven-plugin que funcionaron a la perfección. Aquí hay un ejemplo de código de su post -
<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>
Re; la publicación: "Necesitaba una solución que no utilizara versiones alfa, ya que esa es la normativa de mi empresa".
Cambiar la versión a 1.0 y el valor a ''todo'' lo hizo funcionar para mí:
<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> -->
<version>1.0.0</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>
</properties>
</configuration>
</plugin>
Si está intentando cambiar el comportamiento de la JVM que ejecuta Maven, agregue opciones a MAVEN_OPTS en el entorno antes de lanzar mvn.