La gestion de JAXB-classes générées dans un projet Maven

J'ai un Maven du projet, dans lequel j'ai essayer d'ajouter quelques JAXB classes généré automatiquement par le "jaxb2-maven-plugin" plugin Maven. Cependant, ma première coupe a moi dans une dépendance circulaire boucle:

  • Parce que ces JAXB classes ne sont pas générés encore, mes autres sources de référence qui ont des erreurs de compilation.
  • Parce que ces autres sources ont des erreurs de compilation, ces JAXB classes ne pas générée.

Il semble comme il y a deux possibilités évidentes pour la résolution de ce:

  1. Commentaire-les références rompues, de sorte que le projet est construit et la JAXB classes sont générées automatiquement. Puis copier ceux générés sources de /target en /src/main/java, de sorte que les références à eux de ne pas provoquer des erreurs de compilation.
  2. Créer un tout autre projet, composé de rien, mais le JAXB choses. L'inclure comme une dépendance dans mon projet principal.

Suis-je manqué quelque chose? Option #1 semble carrément ridicule... qui vient de ne peut pas être la façon dont les gens utilisent JAXB. Option #2 semble plus rationnel, mais encore assez inefficaces et fastidieux. J'ai vraiment besoin de prendre sur les frais généraux d'un tout autre projet pour utiliser les JAXB?

Sont toutes plus élégantes les approches que les développeurs utilisent pour faire référence à JAXB-classes générées dans le même projet où le plugin Maven pour les génère?

Mise à JOUR: à la demande, voici la partie pertinente de mon POMPON:

<build>
    <plugins>
        <plugin>
            <!-- configure the compiler to compile to Java 1.6 -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>       
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>jaxb2-maven-plugin</artifactId>
            <version>1.4</version>
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>xjc</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <!-- The name of your generated source package -->
                <packageName>com.mypackage</packageName> 
            </configuration>
        </plugin>
    </plugins>  
</build>

Quand je lance mvn clean package, je vois mon JAXB sources générées sous la /target sous-répertoire. Cependant, ceux générés sources ne sont pas automatiquement ajoutés dans le chemin de la phase de compilation.

POST-RÉSOLUTION de mise à JOUR: Il s'avère que ma compilation questions avaient plus à voir avec le fait que je courais dans Eclipse, et son Maven integration a quelques problèmes avec les "jaxb2-maven-plugin". Voir cette question StackOverflow pour plus de détails sur ce problème et sa résolution.

Merci de poster les articles pertinents de la POM.

OriginalL'auteur Steve Perkins | 2012-08-15