JAXB plugin maven de ne pas générer les classes
Je suis en train de générer les fichiers java à partir de la XSD, mais le code ci-dessous n'est pas de générer. Si je décommentez outputDirectory, il fonctionne, mais supprimer le dossier la première. l'ajout de clearOutputDir = false
est aussi de ne pas générer quoi que ce soit.
<build>
<plugins>
<!-- JAXB xjc plugin that invokes the xjc compiler to compile XML schema into Java classes.-->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>xjc</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- The package in which the source files will be generated. -->
<packageName>uk.co.infogen.camel.message</packageName>
<!-- The schema directory or xsd files. -->
<sources>
<source>${basedir}/src/main/resources/xsd</source>
</sources>
<!-- The working directory to create the generated java source files. -->
<!--<outputDirectory>${basedir}/src/main/java</outputDirectory>
<clearOutputDir>false</clearOutputDir>-->
</configuration>
</plugin>
</plugins>
</build>
J'obtiens le message:
[INFO] --- jaxb2-maven-plugin:2.2:xjc (default) @ service-business ---
[INFO] Ignored given or default xjbSources [/Users/aaa/development/workspace/infogen/infogen_example/service-business/src/main/xjb], since it is not an existent file or directory.
[INFO] No changes detected in schema or binding files - skipping JAXB generation.
Vous ne devez jamais offrir à votre dossier source, mais à target/generated-sources/xjc
oui c'est pourquoi j'ai commenté outputDirectory, mais ce n'est pas la génération de la source et de donner le même message d'information.
oui c'est pourquoi j'ai commenté outputDirectory, mais ce n'est pas la génération de la source et de donner le même message d'information.
OriginalL'auteur krmanish007 | 2016-02-06
Vous devez vous connecter pour publier un commentaire.
La première chose est que vous devez jamais, jamais, générer du code à l'intérieur de
src/main/java
. Le code généré ne doit pas être sous contrôle de version, et peuvent être supprimés à tout moment, puisqu'il sera régénéré de toute façon.Code généré doit toujours être situé sous
target
, le répertoire de construction de Maven. Lejaxb2-maven-plugin
va générer des classes par défaut soustarget/generated-sources/jaxb
et il n'y a vraiment aucune raison de changer cela. Si vous utilisez Eclipse, vous avez juste besoin d'ajouter ce dossier à la buildpath par un clic-droit dessus et en sélectionnant "Build Path > l'Utilisation d'un Dossier Source".Lors de l'exécution de Maven, vous pourrez l'exécuter avec
mvn clean install
: elle va nettoyer latarget
dossier et de régénérer le tout à partir de zéro: ce qui conduit à un coffre-fort et facile à gérer construire. Vous verrez que cela va résoudre votre problème: depuis les classes générées sont supprimés avant de le construire, ils seront correctement re-générés au cours de la prochaine génération.Bien sûr, si ce processus de génération est longue et que vous ne voulez pas le faire à chaque fois, vous pouvez exécuter Maven avec juste
mvn install
et configurer le plugin ne pas supprimer précédemment classes générées par la mise enclearOutputDir
àfalse
. Mais notez que, bien que la construction sera légèrement plus rapide, vous ne pouvez pas détecter entraînant des erreurs dans votre XSD si elles sont mises à jour.N'oubliez pas mon avertissement cependant: la génération de code à l'intérieur de
src/main/java
ne fera que conduire à la douleur et de la souffrance pour vous! 🙂c'est pourquoi il a été dit depuis le début. J'ai seulement ajouté à voir, si cela contribue à générer, et a mentionné de nouveau.
OriginalL'auteur Tunaki