web-dev-qa-db-fra.com

Comment spécifier javax.xml.accessExternalSchema pour le plug-in JAXB2 Maven

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)

25
Josh

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 .

32
lexicore

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>
20
Amit Misra

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>
8
Neil Piper

Ç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>
2
user6280333

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.

0
creechy

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.

0
bmargulies