9
votes

Comment traiter plusieurs schémas XSD à l'aide de JAXB et de la tâche des fourmis XJC?

J'utilise JAXB pour générer une classe d'objet Java à partir de schémas XML au sein d'un script de fourmis, comme: XXX

MAINTENANT, cela fonctionne brillamment pour un schéma (FF.XSD dans cet exemple) . Comment puis-je traiter plusieurs schémas (c'est-à-dire plusieurs fichiers XSD)?

J'ai essayé d'avoir une tâche de fourmis séparée par schéma, mais cela ne fonctionne pas comme une fourmi traite la première tâche et dit ensuite que " Les fichiers sont à jour "pour les schémas suivants!


0 commentaires

3 Réponses :


11
votes
<target name="process-resources" description="Process resources">
    <taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask"/>
    <xjc destdir="${basedir}/target/generated-sources/jaxb"
         extension="true">
        <schema dir="src/main/xsd" 
                includes="JaxbBindings.xsd,CoreTypes.xsd"/>
    </xjc>
</target>

1 commentaires

ah super, exactement ce dont j'avais besoin. Merci!



3
votes
<target name="generate-jaxb-code">
    <java classname="com.sun.tools.internal.xjc.XJCFacade">
            <arg value="-p" />
            <arg value="com.example"/>
            <arg value="xsd/sample.xsd" />
    </java>
</target>
works with the JAXB that is part of JDK 6 seems that the ANT task only ships with the downloadable JAXB but since JAXB is part of the JDK its probably not a good idea to take the latest release of the JAXB and add to the classpath of the JDK since that means you probably need to mess around with classloader settings, to pickup the downloaded version rather than the version within the JDK.

0 commentaires

0
votes

Vous pouvez également inclure simplement les autres fichiers XSD dans votre fichier XSD principal, à l'aide d'une commande comme ci-dessous: xxx


2 commentaires

Comment compiler plusieurs Xsds avec cette cible de fourmis?


@Vinitgaikwad Je pense que je disais que vous avez signé la POINT ANT à votre principal XSD , mais que le fichier XSD peut avoir nié Inclure des directives sur un autre XSD fichiers. Cela causerait que Jaxb traite tous les fichiers xsd imbriqués, même si le niveau supérieur de votre code pointe vers un seul niveau supérieur XSD . Mais je n'ai pas fait cela dans un moment, vous devriez donc vérifier les détails.