2011-02-02 3 views
2

J'utilise JAXB 2.1.2 avec l'implémentation MOXy. Pour construire mon application web J'utilise Ant 1.7.1 et je suis également en utilisant leJAXB 2.x et Ant

package-info.java 

classe pour spécifier des choses de l'espace de noms.

Tout va bien, sauf que le package-info.java n'est pas compilé. dans le répertoire de construction, il n'y a pas de package-info.class attendu dans le répertoire dédié (avec mes classes de domaine).

Comment puis-je forcer Ant à compiler aussi la classe package-info.java?

J'ai lu à propos de la limitation de Ant ici, mais je ne peux pas croire que cela n'a pas été résolu? http://ant.apache.org/manual/Tasks/javac.html

Merci

+0

J'examine actuellement le "truc" suivant: à partir de la limitation de javac dans ant, il compile seulement l'information de paquetage si le fichier java est plus récent que le répertoire cible où le fichier de classe est copié. J'essaie maintenant de faire un avec ANT juste avant la compilation, peut-être que cela aide. – basZero

+0

Cependant, je me demande comment d'autres projets pour résoudre ce problème quand ils doivent utiliser le package-info.java (par exemple MOXy utilise ce fichier pour déclarer les valeurs de préfixe d'espace de noms) – basZero

Répondre

2

En attendant j'ai trouvé une solution moi-même, cela fonctionne très bien, mais seulement si vous compilez deux fois (en quelque sorte le dossier cible où le fichier de classe est stockée à doit être plus que le paquet-info fichier .java): au lieu de ces commandes de fourmis dans mon build.xml:

<mkdir dir="${realm.classes.dir}"/> 
<javac srcdir="${realm.java.dir}" destdir="${realm.classes.dir}" 
    classpathref="classpath" 
    encoding="${javac.encoding}" 
    debug="true" 
/> 

je devais utiliser la commande supplémentaire:

<mkdir dir="${realm.classes.dir}"/> 
<touch> 
    <fileset dir="${realm.java.dir}" includes="**/package-info.java"/> 
</touch> 
<javac srcdir="${realm.java.dir}" destdir="${realm.classes.dir}" 
    classpathref="classpath" 
    encoding="${javac.encoding}" 
    debug="true" 
/> 

Si vous avez une meilleure solution, faites le moi savoir!

+0

J'utilise ANT 1.8.2 via Jenkins, et le paquet -info.java sont compilés mais aucun fichier package-info.class n'est généré. J'ai également essayé la solution mentionnée mais sans succès, n'importe quel indice. – Alex

+0

L'avez-vous construit deux fois? Sinon, la solution de contournement ne fonctionne pas. – basZero