[RESOLVIDO] Maven (2) + VRaptor - Aplicação não roda

Caros,

Estou criando um projeto VRaptor do zero utilizando Maven.

O que fiz foi criar um Dynamic Web Project no Eclipse (Servlet 2.5), e então converti o projeto para um projeto Maven (right click > Configure > Convert to Maven Project) e adicionei as dependências.
Fiz também algumas configurações no Deployment Assembly, para jogar as dependências do Maven no diretório WEB-INF/lib.

Subo o servidor, e a aplicação é devidamente startada (vejo pelos logs que tudo sobe como deveria).

Mas ao acessá-la (localhost:8080/minha-app), recebo um 404 na face.

Já gastei bastante tempo tentando entender o que se passa, mas não consigo ver o erro.
Pelo log sei que o VRaptor está sendo carregado, mas não consigo acessar a aplicação.

Alguém aí tem alguma dica do que possa ser?

Desde já, valeu!

tem como vc mostrar a estrutura so seu projeto?

se vc está criando novo pq vc jah não cria um “maven project”?

cria um simple project no maven e depois vai em properties do projeto… vai no módulo “project facets” click em “convert to faceted…” e marca a opcao “Dynamic Web Module 3”

feito isso vai aparecer uma msg de “mais configuracoes disponíveis” clicando vai aparecer a opcao de alterar o content directory, ao invés de webcontent muda para /src/main/webapp

clica em ok.

depois abre o properties do projeto novamente e agora vai no módulo “deployment assembly” clique em add e depois clique em java build path entries e escolha a opcao maven dependência

pronto configurado! depois soh add as dependencias necessárias

abrass

https://github.com/ricardo-lino/vraptor-blank-maven

tem um projeto com o vraptor já configurado…

mas vc vai ter que seguir os passos acima!

testa aih

abrass

Olá, Ricardo (ou kadu? hehe).

Segui este caminho pois estou mais acostumado com a estrutura de pastas do projeto criado pelo Eclipse (com o conteúdo todo dentro de WebContent).
Como não encontrei nenhum archetype equivalente, fiz isso que falei: criei o projeto normalmente, e então o converti para um Maven Project.

Claro, que se não conseguir nenhuma solução, serei obrigado a criar o projeto direto pelo Maven. Mas por ora estou tentando descobrir a causa do problema e como solucioná-lo.

Assim que chegar em casa posto as configs e a estrutura do projeto.

De qualquer forma, valeu! :thumbup:

Opá!

Cara, não vou te afirmar pq sempre tem um cara q sabe fazer isso!

mas pela lógica não tem como…
a sua pastinha lib ficara vazia em um projeto maven!
os jars que vão aparecer na sua aplicação será gerenciada pelo maven… e isso terá que ser configurado no pom.xml
ele que vai baixar as libs(jars) necessárias
o eclipse não consegue fazer essa conversão…

tendeu?
flw bronx
e acertou o Ricardo!
rs
abrass

Então mano,

Fato é que a aplicação sobe. Vejo pelos logs que ao menos o startup dela rola normalmente.
Por isso acho que é algum detalhe que está faltando. Mas acho que rola sim!

Vejamos…

ela sobe pq os jar estão na pasta lib, o seu servidor reconhece!

mas não está sendo gerenciada pelo maven!

aih qual o sentido de vc ter um projeto maven?

Vc não entendeu, mano.

O Maven que jogou todas as dependências lá. Ele está sim gerenciando a parada.

Ah sim, vc add os caras no pom.xml

então! o maven ele segue uma convenção de estrutura de pasta…

talvez seja esse o problema…

esse post talvez te ajude! estava nos meus favitos! http://silvacarvalho.net/blog/?p=1096

jah apanhei com isso no começo! rs

Vou olhar.

Mas então, até onde sei o maven não usa uma “convenção” de estrutura de pasta.
Elas (as estruturas) são definidas pelos archetypes.

Em aplicações web “padrão” geralmente é utilizado o archetype “maven-archetype-webapp”, que possui a estrutura de pastas que estou evitando ("/src/main/webapp").

Como não conheço um archetype que possua a estrutura que desejo (/WebContent), resolvi utilizar esta abordagem que citei: criei um Dynamic Web Project, e o converti para um maven project.
Assim, o maven passa a gerenciar minhas dependências, e eu mantenho a estrutura que desejo.

Então, quando estudei sobre o maven… eu lembro de ter lido que o Maven define um padrão para a estrutura de diretórios no projeto, agora não sei se a fonte era confiável…

Acredito que não era muito confiável não…hehe

Saca só: http://maven.apache.org/guides/introduction/introduction-to-archetypes.html

Dei uma lida e não consegui achar como alterar o diretório padrão!
tá no caminho certo então! rs

baixa esse plugin e mete as caras… me fala depois como vc fez caso consiga! vlw!

habilita o log de debug do vraptor e veja se ele está sendo carregado

Como dizem: “‘faz’ direito que dá certo”…

Dei uma olhada no meu arquivo de configurações do eclipse:

<?xml version="1.0" encoding="UTF-8"?>
<project-modules id="moduleCoreId" project-version="1.5.0">
    <wb-module deploy-name="projeto-backoffice">
        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
        <wb-resource deploy-path="/" source-path="/WebContent"/>
        <property name="java-output-path" value="/projeto-backoffice/build/classes"/>
        <property name="context-root" value="backoffice"/>
    </wb-module>
</project-modules>

Estava tentando acessá-lo por localhost:8080/projeto-backoffice.

Mas como podem ver pelo atributo “context-root”, o contexto é outro: /backoffice.

Shame on me… :oops:

Agora a requisição chega no VRaptor, mas ao que parece, não está sendo possível renderizar as jsps:

Vou dar uma pesquisada, mas o problema raiz deste tópico já foi “solucionado”. ^^

Consegui resolver o problema da JasperException!!

Dentro do meu pom, o artefato estava registrado da seguinte forma:

		<dependency>
			<groupId>javax.servlet.jsp</groupId>
			<artifactId>jsp-api</artifactId>
			<version>2.2.1-b03</version>
		</dependency>

Segundo um reply nesse post aqui do Stackoverflow, bastava inserir a tag com o valor “provided”:

		<dependency>
			<groupId>javax.servlet.jsp</groupId>
			<artifactId>jsp-api</artifactId>
			<version>2.2.1-b03</version>
			<scope>provided</scope>
		</dependency>

Fiz isso e minhas JSPs passaram a ser renderizadas! :thumbup:

Agora tenho meu projeto VRaptor gerenciado pelo Maven, com a estrutura de pastas padrão de um Dynamic Web Project do Eclipse! Sucesso!! :thumbup: :thumbup: :thumbup: