Je dois utiliser la dernière version JAXB: 2.2.4-1, mais Maven ou Maven-Jaxb2-plugin semble ramasser celui de la JDK.
J'ai essayé de spécifier la version comme celle-ci: p > mais les journaux lus: p> J'ai essayé d'ajouter des dépendances aux versions correctes de Javax.xml.bind: JAXB- API et COM.SUN.XML.Bind: JAXB-IMPL, mais cela n'a pas aidé. P> <plugins>
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.8.0</version>
<dependencies>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.2.4</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.2.4-1</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>common</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<specVersion>2.2</specVersion>
...
</configuration>
</execution>
</executions>
</plugin>
</plugins>
3 Réponses :
Le code suivant est adapté à partir de la webApp par défaut que NetBeans génère. Il utilise le plugin de dépendance pour copier les pots dans un dossier temporaire et spécifie ce dossier en tant que répertoire endossé au compilateur afin qu'il remplace la mise en œuvre dans le JDK.
<properties> <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir> </properties> ... <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <compilerArguments> <endorseddirs>${endorsed.dir}</endorseddirs> </compilerArguments> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.1</version> <executions> <execution> <phase>validate</phase> <goals> <goal>copy</goal> </goals> <configuration> <outputDirectory>${endorsed.dir}</outputDirectory> <silent>true</silent> <artifactItems> <artifactItem> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.2.4</version> <type>jar</type> </artifactItem> <artifactItem> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId> <version>2.2.4-1</version> <type>jar</type> </artifactItem> </artifactItems> </configuration> </execution> </executions> </plugin> </plugins> </build>
Idée intéressante. Je vais l'essayer. Pendant ce temps, j'ai retourné d'utiliser Antrun ... ça marche mais ce n'est pas très gentil.
J'ai également essayé cette approche et même en utilisant le plugin spécifique Maven-Jaxb22, mais je reçois toujours la version détectée JDK.
J'ai tenté d'utiliser la solution de Jörn, mais cela ressemble à Maven-Jaxb2-plugin, a utilisé la version Rt.jar quand même, car j'ai eu le message de rachat du plugin: [Info] Jaxb API est chargé de Le [JAR: fichier: / c: /jdk1.6.0_25/jre/lib/rt.jar!].
Ma version infructueuse de la solution est légèrement différente dans la manière dont il utilise le plugin de dépendance, mais c'est la partie unique de la construction qui réussit ... p>
Essayez de courir Maven avec des informations de débogage (option -x) pour voir ce qui se passe. Cela pourrait vous donner une idée où est le problème et comment le réparer.
Hey je veux gagner du temps des gens.
Pour les personnes qui travaillent sur Jaxb-Impl, la version Jaxb-Implat 2.2.4-1 qui signifiait corriger un bogue de la version 2.2.4, la POM de Istack-runtime dans le dossier META-INF contient une référence à son parent pom 2.4-instantané quand il devrait être JSUT 2.4, cette version n'est pas un instantané.
<parent> <groupId>com.sun.istack</groupId> <artifactId>istack-commons</artifactId> <version>2.4-SNAPSHOT</version> </parent>