Ola Pessoal.
Estou começando a trabalhar com maven, consegui configurar ele aki blz.
A aplicação tá encontrando as libs lá no repositório. Só que estou tendo problema
na hora q vou subir o Tomcat(usando o plugin do eclipse).
Nessa aplicação estou usando struts 1, quando o Tomcat vai subir ele não consegue encontrar
a classe org.apache.struts.action.ActionServlet.
Usando o maven, não faz mas necessário usar a pasta lib dentro de WEB-INF/llib,
oq julgo ser o motivo do problema, pois quando subo o Tomcat ele não consegue
achar o jar struts.jar(q está no repositório do maven e q contém essa classe).
lá no arquivo do .classpath está:
<classpathentry kind="var" path="M2_REPO/org/apache/struts/struts/1.2.4/struts-1.2.4.jar"/>
A aplicação consegue achar o jar. Como devo fazer p/ o Tomcat achar esse jar?
Desde já agradeço.
Cara, pra trabalhar com Maven esqueça os arquivos .project e .classpath do eclipse.
Primeiro veja se seu projeto está compilando corretamente usando mvn clean install pela linha de comando.
Poste seu pom.xml aqui para ver se está tudo ok.
Sim esta compilando blz.
o pom.xml está assim;
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>br.com.controVendas</groupId>
<artifactId>controle-vendas</artifactId>
<packaging>jar</packaging>
<version>1.0</version>
<name>ControVenda - Controle de Vendas</name>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>3.1.3</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
<version>1.1</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts</artifactId>
<version>1.2.4</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.6</version>
<type>jar</type>
</dependency>
</dependencies>
</project>
server.xml assim:
<Context
path="/controleVendas"
reloadable="true"
debug="1"
crossContext="true"
docBase="C:\Projetos\br.com.controVendas\src\main\webapp">
</Context>
Esse é o pom da sua aplicação web? se sim vc deve usar <packaging>war</packaging>
e a estrutura do seu projeto maven ficará assim:
src
-main
–java
–resources
–webapp
-test
–java
–resources
tente não editar o server.xml, faça o deploy diretamente no tomcat.
pode usar esse plugin do maven: http://mojo.codehaus.org/tomcat-maven-plugin/deployment.html
[quote=emilio2hd]Sim esta compilando blz.
o pom.xml está assim;
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>br.com.controVendas</groupId>
<artifactId>controle-vendas</artifactId>
<packaging>war</packaging>
<version>1.0</version>
<name>ControVenda - Controle de Vendas</name>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>3.1.3</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
<version>1.1</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts</artifactId>
<version>1.2.4</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.6</version>
<type>jar</type>
</dependency>
</dependencies>
</project>
server.xml assim:
<Context
path="/controleVendas"
reloadable="true"
debug="1"
crossContext="true"
docBase="C:\Projetos\br.com.controVendas\src\main\webapp">
</Context>
[/quote]
quando vc usa o <packaging>jar</packaging>
as dependencias declaradas no pom.xml não serão copiadas para o arquivo de distribuição.
Já quando você usa <packaging>war</packaging>
o projeto será reconhecido como um projeto web e no momento da compilação as dependencias serão copiadas para a pasta WEB-INF/lib do war.
Caso tenha alguma dependencia declarada no seu pom.xml, como por exemplo as que já vem no tomcat, declare-as com <scope>provided</scope>
assim elas não serão copiadas para a pasta WEB-INF/lib.
Hum… então não tem como usar sem gerar o war não?
Pq tipo, queria pode testar sem ter q gerar o war toda vez
que subir a aplicação. Por isso criei um novo contexto no
server.xml
[quote=emilio2hd]Hum… então não tem como usar sem gerar o war não?
Pq tipo, queria pode testar sem ter q gerar o war toda vez
que subir a aplicação. Por isso criei um novo contexto no
server.xml[/quote]
Jeito tem, mas dai você não estaria seguindo as convenções. Você teria que copiar as dependencias do maven para dentro da pasta WEB-INF/lib, mas isso seria muito tosco. :lol:
Consegui, tipo quando faço:
mvn package
ele copia e gera um pasta com o nome da aplicação.versão ai basta apontar o contexto p/ lá.
Obrigado.
Cara teria como postar como ficou essas configurações de tomcat sua?
Valeu