Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Novo Projeto dando erro.

Bom dia,

Tentando colocar em prática os aprendizados do curso para fixar o conteudo, acessei o eclipse Neon, para montar meu primeiro projeto com maven.

Fui em file > new MAven Project e preenchi os dados corretos. O projeto foi criado, adicionei o server runtime do Tomcat 7, troquei o JRE library para JAVA 7.

Em project facets, tentei trocar o Dynamic Web Module para a versão 3.0, mas recebo a mensagem de:

Cannot change version of project facet Dynamic Web Module do 3.0

Minha ideia é montar um projeto com JSF - CDI - JPA.

O que estou errando?

4 respostas

Olá, Guilherme.

A questão é a seguinte, usando Maven, todas essas configurações devem ficar dentro do pom.xml do seu projeto. Eu recomendo que destrua esse projeto e recrie ele novamente. Não altere nada, exceto o arquivo pom.xml

Passo a passo:

1) Configurar a versão do Java no projeto

Para configurar o Java no seu projeto Maven, você tem que configurar a forma como o Maven irá compilar (build) o seu projeto. Adicione a configuração abaixo no final do seu arquivo pom.xml antes da tag :

(...)
<build>
    <plugins>
        <plugin>
            <!-- Configuracao do Maven para utilizar a versao do Java 1.7 -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
    </plugins>
</build>
(...)

Adicionado isso, salve o arquivo . Para o eclipse reconhecer as novidades, você vai clicar com o botão direito em cima do projeto e ir em Maven > Update Project. Isso vai atualizar as configurações do projeto eclipse. Inclusive, vai mudar o Java para a versão 1.7

2) Dynamic Web Module

Para fazer com que seu projeto use o Dynamic Web Module, você precisa adicionar a dependência para a servlet api da versão que você quer.

Se quer a versão 3.1, você adiciona o seguinte código ao seu arquivo pom.xml antes da tag build:

(...)
<dependencies>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
    </dependency>
</dependencies>
(...)

O escopo é provided, pois essa biblioteca estará no servidor que você escolher para executar sua aplicação, seja ele Tomcat, Jetty, JBoss, Weblogic, etc.

3) Tomcat

Essa é a única configuração que você não faz no pom. Se você quiser instanciar um Runtime do Tomcat no seu eclipse e executar o projeto nele é só fazer o que você fez. Porém, não vincule o Tomcat ao seu projeto. Fazendo isso você está acoplando o servidor ao seu projeto e quebra todo o sentido de centralizar a configuração e build do seu projeto no Maven, ficando independente de plataforma.

Com o Maven, eu não precisei mais criar runtime do Tomcat 7. Agora tem uma configuração do Maven que ele cria um servidor embedded do Tomcat, executando a aplicação automaticamente, sem depender de Runtime.

Se quiser testar, adicione o seguinte código ao seu pom.xml dentro da tag plugins:

<plugins>
    (...)
    <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.3-SNAPSHOT</version>
    </plugin>
<plugins>

Agora, para você executar o seu projeto, basta você usar o comando mvn tomcat7:run. Você pode configurar esse mesmo comando dentro do eclipse: Clique com o botão direito em cima do projeto > Maven > Maven build...

Vai abrir uma janela e basta você adicionar no campo goals os seguintes valores: clean compile tomcat7:run

Até mesmo debugar sua aplicação você pode com esse comando.

4) CDI e JPA

Aí, a configuração para usar CDI e JPA você encontra em outro curso:

https://cursos.alura.com.br/course/jsf-cdi

Espero ter ajudado :)

OBS: O seu arquivo pom.xml deve estar bastante igual a esse daqui:

<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>???</groupId>
    <artifactId>???</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

    <dependencies>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <!-- Configuracao do Maven para utilizar a versao do Java 1.7 -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.0.0</version>
            </plugin>

            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.3-SNAPSHOT</version>
            </plugin>
        </plugins>
    </build>
</project>

Note que eu coloquei ??? no lugar do artifactId e do groupId. Neles vão ficar o que você definiu para o projeto.

Boa tarde,

Primeiramente, muito obrigado pelo retorno. Com certeza já esclareceu bastante coisa.

Ainda assim, estou recebendo um erro ao tentar rodar o maven:

[INFO] Scanning for projects... [WARNING] The POM for org.apache.tomcat.maven:tomcat7-maven-plugin:jar:2.3-SNAPSHOT is missing, no dependency information available [WARNING] Failed to retrieve plugin descriptor for org.apache.tomcat.maven:tomcat7-maven-plugin:2.3-SNAPSHOT: Plugin org.apache.tomcat.maven:tomcat7-maven-plugin:2.3-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact org.apache.tomcat.maven:tomcat7-maven-plugin:jar:2.3-SNAPSHOT [INFO] Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-metadata.xml [INFO] Downloading: https://repo.maven.apache.org/maven2/org/codehaus/mojo/maven-metadata.xml [INFO] Downloaded: https://repo.maven.apache.org/maven2/org/codehaus/mojo/maven-metadata.xml (20 KB at 7.4 KB/sec) [INFO] Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-metadata.xml (13 KB at 4.7 KB/sec) [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 5.434 s [INFO] Finished at: 2016-10-27T14:05:07-02:00 [INFO] Final Memory: 9M/121M [INFO] ------------------------------------------------------------------------ [ERROR] No plugin found for prefix 'tomcat7' in the current project and in the plugin groups [org.apache.maven.plugins, org.codehaus.mojo] available from the repositories [local (C:\Users\Guilherme.m2\repository), central (https://repo.maven.apache.org/maven2)] -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/NoPluginFoundForPrefixException

Boa tarde,

Fui no site do tomcat e achei a seguinte configuração:

2.2 no lugar onde você colocou

2.3-SNAPSHOT

Isso alterado, e consegui fazer rodar.

solução!

Opa! Versões snapshots tem esse problema. Não havia percebido que coloquei a versão Snapshot. Desculpe.

O importante é que está funcionando :)

Se resolveu seu problema, escolha uma das respostas que foi a solução!