J'ai un plugin maven (jaxb2) et je dois lui fournir un argument jvm. Je ne pense pas qu'il y ait une balise pour ajouter des arguments jvm dans le pom.
Je sais que je peux passer des arguments jvm sur la ligne de commande, par exemple: mvn clean install -Djavax.xml.accessExternalSchema=all
Est-il possible de définir cet argument jvm dans le pom afin que je ne doive pas le taper dans la ligne de commande à chaque fois?
(À part - cet argument jvm est requis pour qu'il fonctionne avec Java-8. Il fonctionne très bien avec Java-7)
Ceci concerne les nouveaux propriétés de sécurité XML dans JAXB 1.5 , introduits dans Java 8. C'est pourquoi vos builds échouent maintenant sur Java 8 mais fonctionnent avec Java sept.
Si vous utilisez mon maven-jaxb2-plugin
, Veuillez mettre à niveau vers la version 0.9.0
Ou une version ultérieure (la version actuelle est 0.10.0
). Il a maintenant un commutateur accessExternalSchema
(la valeur par défaut est all
).
Cela définit précisément javax.xml.accessExternalSchema=all
.
Veuillez consulter la documentation .
Je suis tombé sur ce problème en travaillant avec jaxb2-maven-plugin. J'ai trouvé un problème jira lié au plug-in maven-jabx2 - https://Java.net/projects/maven-jaxb2-plugin/lists/issues/archive/2014-03/message/
Selon ce problème, Stephan202 a suggéré d'utiliser le plugin properties-maven qui fonctionnait comme un charme. Voici un exemple de code de son poste -
<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>
Ré; l'article - "J'avais besoin d'une solution qui n'utilise pas de versions alpha car ce sont les règles de mon entreprise. -"
Changer la version en 1.0 et la valeur en 'all' l'a fait fonctionner pour moi:
<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>
Ça a marché pour moi :
<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>
Jetez un œil au plugin du compilateur Maven. Plus précisément, vous devriez pouvoir utiliser le <compilerArgument>
élément pour passer les paramètres au compilateur.
Voir http://maven.Apache.org/plugins/maven-compiler-plugin/examples/pass-compiler-arguments.html pour des exemples.
Si vous essayez de modifier le comportement de la machine virtuelle Java qui exécute Maven lui-même, ajoutez des options à MAVEN_OPTS dans l'environnement avant de lancer mvn.