2008-12-02 6 views
5

Je suis en train de remplacer le framework IBM WebService par Axis2. Lors de la génération du code à partir du fichier WSDL, j'utilise le plugin Maven WSDL2Code. Cependant, le code créé est toujours incorrect. Ou plutôt, les noms de paquets sont toujours faux, ce qui à son tour rend chaque méthode appelée incallable (créant encore plus d'erreurs, jusqu'à 10.000+ erreurs dans Eclipse).WSDL2Code (Maven) génère automatiquement des classes corrompues (packages)

Voici un exemple de ce qui se passe réellement (ce qui est juste un exemple que j'ai fait spécifiquement pour obtenir des conseils):

 <plugin> 
      <groupId>org.apache.axis2</groupId> 
      <artifactId>axis2-wsdl2code-maven-plugin</artifactId> 
      <version>1.4.1</version> 
      <executions> 
       <execution> 
        <id>Test</id> 
        <goals> 
         <goal>wsdl2code</goal> 
        </goals> 
        <configuration> 
         <packageName>test.testpackage</packageName> 
         <databindingName>xmlbeans</databindingName> 
         <wsdlFile>${basedir}/wsdl/service.wsdl</wsdlFile> 
         <outputDirectory>${basedir}/testdirectory</outputDirectory> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

En théorie, cela devrait générer du code avec le nom du package « test.testpackage » dans le répertoire testdirectory/test/testpackage. Toutefois, à la place, il crée le package suivant: Src.test.testpackage dans le répertoire testdirectory.src.test.testpackage. Il ajoute toujours un "src" au nom du paquet et au répertoire - si je change le nom du paquet en src.test.testpackage, il va générer le paquet suivant: src.src.test.testpackage.

Ceci, bien sûr, conduit à un énorme problème, parce que chaque fichier généré a l'erreur suivante: « Le paquet a déclaré « src.test.testpackage » ne correspond pas au paquet attendu » src.src.test. testpackage "

Je suis complètement perdu ici, je ne trouve absolument pas de raison d'ajouter" src "partout J'ai remarqué un fichier build.xml auto-généré contenant une valeur appelée sourcedirectory = x/src (ou quelque chose de similaire), mais il n'y a rien que je puisse faire pour modifier cette valeur (essayer de la changer puis sauvegarder le fichier ne change pas, évidemment, car il est généré la prochaine fois que maven).

Oh, et j'utilise généralement la commande "mvn clean install" et la version 1.4.1 de WSDL2Code, ce n'est donc pas l'un des anciens bugs de wsdl2code: wsdl2code.

Si quelqu'un a une idée de ce qui est réellement faux ici, je l'apprécierais grandement.

Merci d'avance.

Répondre

0

Peut-être que 'src' fait partie de $ {basedir}?

0

J'ai bien peur que non. Même si c'était le cas, le problème étrange ne devrait pas se produire alors - le chemin serait alors correct étant testdirectory/src/test/testpackage, ne causant ainsi aucun problème avec le nom du paquet. Le problème se pose maintenant parce qu'il est placé dans un répertoire que le paquet n'attend pas - il attend $ {basedir} /testdirectory/insert.package.here.divided.by./, mais à la place il obtient $ {basedir}/testdirectory/src /insert.package.here.divided.by./.

Le src ne devrait pas être présent dans cette partie du chemin.

+0

Est-ce que cela répondait à leppie? Si oui, utilisez les commentaires dans le futur. – Adam

9

version 1.4.1 a quelques options de configuration qui ne sont pas vraiment documentées (un coup d'oeil à la source de org.apache.axis2.maven2.wsdl2code.WSDL2CodeMojo) ...

utiliser Juste <flattenFiles> vrai </flattenFiles > - qui devrait résoudre votre problème :-)

+0

Merci, cela fonctionne effectivement, mais pouvez-vous expliquer pourquoi cela fonctionne? – Confusion

+0

Merci @ Eh Ehm, c'est exactement ce que j'avais besoin de savoir. – Joe

2

Cette question est assez vieux, donc je ne sais pas si vous avez encore le problème ...

Je recommande en utilisant Axistools Maven Plugin à la place, il a travaillé grea t dans notre cas.

+0

Indice: axistools utilise uniquement Axis1 et non Axis2 ... – Lonzak

0

Ceci est lié à ces "génie" (ou utilisateur) maven/axis2 qui prend pratiquement les décisions pour vous ... voir ceci: [Axis2 entrée de la liste de diffusion] [1]

[1] : http://markmail.org/search/?q=[Axis2]+indrit#query:[Axis2 Mailing List entry]% ​​20indrit + page: 1 + mid: a34wbp7l3pljagsz ​​+ état: résultats

Questions connexes