Annotations em projeto Maven

2 respostas
arianrp

Olá galera,
A princípio deveria ser uma coisa trivial, mas o que acontece é que não consigo compilar classes com Annotations no Maven.
Eu declaro o source 1.5 no pom.xml, claro.
Inclusive já venho usando outros recursos como generics e não tive nenhum problema.

Pesquisando na net vi que o pessoal encontra esse problema por causa de uma biblioteca chamada Qdox. A versão 1.5 desta não suporta Annotations e é exatamente esta que o maven usa. Pra resolver é preciso usar a versão 1.6, que se propõe a resolver isso, mas não parece dar certo.

:shock:

Caused by: com.thoughtworks.qdox.parser.ParseException: syntax error @[25,2] in

file:/D:/work/ncp/5.0/modules/sample/src/main/java/com/company/sample/module/persistence/dao/HibernateUsrDAO.java

at com.thoughtworks.qdox.parser.impl.Parser.yyerror(Parser.java:504)

at com.thoughtworks.qdox.parser.impl.Parser.yyparse(Parser.java:610)

at com.thoughtworks.qdox.parser.impl.Parser.parse(Parser.java:488 )

at com.thoughtworks.qdox.JavaDocBuilder.addSource(JavaDocBuilder.java:29

com certeza alguém já deve ter passado por isso…
Desde já agradeço,

2 Respostas

urubatan

to usando direto com o maven 2.0 aqui e ta funcionando legal :smiley:

arianrp

potz, que será que tá faltando?

Eu estou seguindo o modelo de hibernate transaction sugerido no artigo do Davi Luan Carneiro -&gt Controle Transacional no Hibernate 3 com Anotações
que eu achei muito legal por sinal.

Ele sugere criar uma anotação pra indicar que o método usará transação.
esse annotation é nomeada "HibernateTransaction".

Eu reparei que não estou conseguindo fazer build no maven quando eu uso annotations particulares do Java 5 como por exemplo "SuppressWarnings()".
No Eclipse eu rodo normalmente.

Pesquisando um bocado na net eu vi que esse problema não é do maven e sim de uma versão do xbean. O problema é que eu não consegui rastrea com firmeza a origem do erro. no console:



Scanner.java:34)

at com.thoughtworks.qdox.directorywalker.DirectoryScanner.scan(Directory

Scanner.java:52)

at com.thoughtworks.qdox.JavaDocBuilder.addSourceTree(JavaDocBuilder.jav

a:362)

at org.xbean.spring.generator.QdoxMappingLoader.loadNamespaces(QdoxMappi

ngLoader.java:85)

at org.xbean.spring.generator.MappingGeneratorTask.execute(MappingGenera

torTask.java:99)

 23 more


"23 more"… é possível fazer o java mostrar todo a stacktrace sem abreviações como essa?
Por que daí eu poderia rastrear melhor a mensagem "Caused By" no console.

Só pode ser o Spring quem usa o xbean, mas não diretamente, pois não aparece no seu arquivo pom.

Spring-2.0-rc3Pom

Se for ele usa o xbean 2.4 que por sua vez usa a biblioteca QDox 1.5. O problema todo está na QDox1.5 que tenta faze o parse da minha classe (não sei porque ele faz isso) e não consegue pois não suporta as anotações do java 5.
Foi lançada a versão 1.6 do QDox justamente pra acertar isso. Só que como não sou eu quem usa diretamente a biblioteca eu não estou conseguindo resolver isso.

Existe também outra possibilidade de contornar o problema, simplesmente um workaround mesmo. a versão 2.6 do xbean inclui um patch que permite usar a tag <excludeClasses> pra dizer quais classes não vao ser parseadas como pode ser visto neste link:

http://issues.apache.org/jira/browse/XBEAN-27?page=comments

minha cabeça dói e eu nem sei por que o QDox se meteu no meu projeto :evil:

but thanxs Urubatan, :slight_smile:

Criado 11 de dezembro de 2006
Ultima resposta 12 de dez. de 2006
Respostas 2
Participantes 2