Pessoal qual é a diferença entre o maven 2 e o 3?
A maioria da documentação que eu to encontrando é referente ao maven 2, estou tendo muita dificuldade em integrar o Maven 3 + Eclipse + Tomcat 7.
Não consigo fazer a aplicação Rodar com o Tomcat pelo eclipse e nem direto pelo maven
Alguém pode me explicar como eu configuro o eclipse?
Quando eu gero o war pelo maven ele não gerar os arquivos .class
Obrigado,
Uso o Maven 3 + Eclipse Indigo + Tomcat 7 sem problemas. Um problema que tive logo que migrei pro Indigo foi que o plugin do Maven publicava as dependências marcadas como provided e test no Tomcat.
Mas detalha mais um pouco seu problema, talvez o projeto nem compilando esteja.
Na verdade estou enfrentando vários problemas.
Consigo fazer subir com o tomcat porém quando eu executo o goal mvn tomcat:run, a aplicação sobe mas ele não encontra as classes compiladas.
Ele não gera os arquivos .class dentro do target
Ele cria também o projeto com java 1.4
Tem um archetype que fiz para gerar projetos Maven para o Eclipse Indigo, se quiser testar e ver as diferenças com seu projeto o comando é esse:
mvn archetype:generate -DarchetypeRepository=http://maven.woodstock.net.br/repos/ -DarchetypeGroupId=br.net.woodstock.rockframework.archetypes -DarchetypeArtifactId=webapp-simple -DarchetypeVersion=1.0 -DgroupId=my.domain -DartifactId=my-app -Dversion=1.0
Será gerado um projeto modularizado da seguinte forma:
my-app/
...my-app-api
...my-app-impl
...my-app-orm
...my-app-util
...my-app-web
Sendo que no seu caso apenas o Web é importante, importe ele para o Eclipse ajuste o pom desse jeito:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>my.domain.my-app</groupId>
<artifactId>my-app-web</artifactId>
<version>1.0</version>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<scope>provided</scope>
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<scope>provided</scope>
<version>2.1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<scope>compile</scope>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
<version>3.8.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<scope>compile</scope>
<version>1.1.2</version>
</dependency>
</dependencies>
</project>
PS: Tive que apagar a classe Index, pois o nome da aplicação tem um carácter especial.
O meu pom.xml ta assim.
O Plugin do tomcat está configurado certo?
Como eu configuro o target runtime?
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.speed.powercrud</groupId>
<artifactId>powercrud</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>powercrud Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<!-- Version JSF -->
<jsfversion>2.1.2</jsfversion>
<!-- Themes Version Primefaces -->
<themeversion>1.0.1</themeversion>
<!-- Driver Banco de dados -->
<drivermysql>5.1.18</drivermysql>
</properties>
<repositories>
<repository>
<id>maven2-repository.dev.java.net</id>
<name>Java.net Repository for Maven</name>
<url>http://download.java.net/maven/2</url>
</repository>
<repository>
<id>prime-repo</id>
<name>PrimeFaces Maven Repository</name>
<url>http://repository.primefaces.org</url>
<layout>default</layout>
</repository>
<repository>
<id>spring-milestone</id>
<name>Spring Maven MILESTONE Repository</name>
<url>http://maven.springframework.org/milestone</url>
</repository>
<repository>
<id>JBoss Repo</id>
<url>http://repository.jboss.com</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>${jsfversion}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>${jsfversion}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>3.0.M3</version>
</dependency>
<dependency>
<groupId>org.primefaces.themes</groupId>
<artifactId>aristo</artifactId>
<version>${themeversion}</version>
</dependency>
<dependency>
<groupId>org.primefaces.themes</groupId>
<artifactId>bluesky</artifactId>
<version>${themeversion}</version>
</dependency>
<!--
<dependency>
<groupId>springframework</groupId>
<artifactId>spring</artifactId>
<version>2.0-M4</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>3.0.7.RELEASE</version>
</dependency>
-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${drivermysql}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<configuration>
<mode>both</mode>
</configuration>
</plugin>
<!-- Maven compiler plugin -->
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
<finalName>powercrud</finalName>
</build>
</project>
No meu caso o Maven no Eclipse apenas gerencia as dependências, adiciono o Tomcat via Servers/Runtime Environments.
Estou executando, e ele não está encontrnado os meus ManagedBeans
19/10/2011 11:49:03 com.sun.faces.lifecycle.InvokeApplicationPhase execute
AVISO: #{Testando.testando}: javax.el.PropertyNotFoundException: /index.xhtml @13,78 action="#{Testando.testando}": Target Unreachable, identifier 'Testando' resolved to null
javax.faces.FacesException: #{Testando.testando}: javax.el.PropertyNotFoundException: /index.xhtml @13,78 action="#{Testando.testando}": Target Unreachable, identifier 'Testando' resolved to null
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
at javax.faces.component.UICommand.broadcast(UICommand.java:315)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:304)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: javax.faces.el.EvaluationException: javax.el.PropertyNotFoundException: /index.xhtml @13,78 action="#{Testando.testando}": Target Unreachable, identifier 'Testando' resolved to null
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:95)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
... 23 more
Caused by: javax.el.PropertyNotFoundException: /index.xhtml @13,78 action="#{Testando.testando}": Target Unreachable, identifier 'Testando' resolved to null
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:107)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
... 24 more
Agora é que seu managedbean não foi encontrado. Vc está anotando eles com @ManagedBean e colocando o nome neles?
Encontrei uma coisa no meu java build path que não sei o que é, ele está excluindo os meus arquivos *.java
Segue imagem.
o meu managedBean
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean(name = "Testando")
@RequestScoped
public class TestandoFacade
{
public void testando()
{
System.out.println("Testando Bruno Rodrigues e Rodrigues");
}
}
Meu arquivo xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.prime.com.tr/ui">
<h:head>
</h:head>
<h:body>
<h:form>
<p:commandButton value="Testando o Maven" action="#{Testando.testando}" />
</h:form>
</h:body>
</html>