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

como fazer o build e executar pela IDE

Boa tarde,

Estou tentando gerar uma aplicação para estudos utilizando maven, mas esta desastroso e muito frustrante.

vim olhar a video aula pra ver se ajudava, mas empaquei no mesmo ponto q estava, não ajudou muito, pois gostaria de fazer tudo pela ide.

estou tentando criar um projeto web utilizando o maven, porem não consigo por nada fazer com que ele seja executado, porem estou tentando fazer tudo pela IDE, ta tentei vários web servers e web containers, mas nenhum deles sobe de fato a aplicação.

tentei configurar o wildfly de forma tradicional, assim o projeto sobe normalmente, mas ao converter o msm para maven ele para de executar, o mesmo ocorre se eu criar o projeto como sendo um projeto maven.

tentei acrescentar o plugin do wildfly e posteriormente o jetty e em nenhum dos casos obtive sucesso, ao tentar "maven>update project" ele nem ao menos baixa o server, consequentemente não o executa, o mesmo ocorre com o jetty e é claro se mantem o erro:

Description    Resource    Path    Location    Type
The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path

claramente devido a falta de um web server ou servlet container

segue meu pom.xml

<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>br.com.lsoft</groupId>
  <artifactId>gameapi</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>gameapi Maven Webapp</name>
  <url>http://maven.apache.org</url>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies> 

  <build>
    <finalName>gameapi</finalName>

    <plugins>
        <plugin>
            <groupId>org.wildfly.plugins</groupId>
            <artifactId>wildfly-maven-plugin</artifactId>
            <version>13.0.0.Final</version>
            <configuration>
                <port>8081</port>
            </configuration>
        </plugin>
    </plugins>

  </build>
</project>

com isso me resta algumas pergunta simples:

  1. sempre que eu for trabalhar com maven eu sou obrigado a utilizar o cmd pra compilar e executar o projeto?

caso não seja, pq isso não foi demostrado na aula em questão, neste caso ja fica a sugestão pra refazer essa aula, ou criar uma a mais para este curso, ensinando como faze-lo.

  1. ao analisar o "web.xml" criado percebi que o projeto foi criado co o padrão servlet 2.3, como faço pro projeto ser criado com uma versão posterior???

segue o web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
</web-app>
10 respostas

Oi Allan,

Sobre a sua frustração: Infelizmente é bem normal passar um aperto na criação do projeto. Você está estudando maven mesmo ? Se sim o caminho é esse mesmo.

Respondendo suas perguntas :

Sobre erro da ausência do servlet no projeto, é só adiciona a dependência no pom.xml

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

O jsp é só se for usar mesmo. No curso você vai aprender para serve esse scope que tem ai.

1 - Sim é possível criar um projeto com maven sem ser via terminal, não foi feito dessa forma pois se você entender como é feito via terminal vai conseguir utilizar de qualquer outra forma.

2 - Não consegui achar um modo de criar o projeto usando a última versão do servlet, você pode mudar na mão mesmo, procurando um exemplo do web.xml na internet. (Caso alguém aqui do forum saiba é só postar aqui)

Consegui te ajudar?

boa tarde,

  1. criar um projeto pela ide sei que é possível, no video foi feito isso, perguntei sobre compilar e executar o projeto pelo maven, ou seja, sem precisar ir ao cmd e usar o comando "mvn compile"/"mvn wildfly:run"

  2. uma pena q a ide não tenha evoluído a tal ponto

essas dependências q vc me passou, elas são realmente necessárias, considerando que tando web servers como wildfly, glassfish e web containers como jetty e tomcat ja comtem os componentes para tal???

mesmo utilizando algum deles eu ainda preciso colocar sua dependência+??

Oi Allan

1 - Pela IDE é possível fazer algumas tarefas, só clicar com o direito na pasta do projeto, ir na opção maven e escolher o que você quer. mvn wildfly: run é só para rodar o projeto no wildfly, isso o eclipse faz também, mas ai você adicionar o servidor, coloca o projeto nele e roda a aplicação.

Sobre a dependência, veja que ela tem o escopo provided, quer dizer seu projeto vai considerar apenas para compilar o projeto. Ele não vai usar realmente ele para subir a aplicação, pois o servidor web( no seu caso o wildfly) já tem esse cara.

abraço

boa noite, acredito que eu finalmente tenha intendido.

se eu quiser executar pela IDE eu não tenho a necessidade de configurar i plugin, eu só preciso faze-lo caso eu queira fazer o deploy automático da minha aplicação, porem eu preciso declarar a dependência do wildfly ao meu projeto como provider, para que o mesmo possa compilar, é isso?

caso eu tivesse um servidor de testes ou de produção eu poderia configurar o maven para fazer todo o processo de deploy automaticamente, é isso?

agora estou com outro problema, ainda não consigo executar a aplicação, pois esta dando um erro quando tento trocar de "Dynamic Web Module to 2.3" para "Dynamic Web Module to 4.0" esta dando o seguinte erro:

Cannot change version of project facet Dynamic Web Module to 4.0. 

ja troquei o web.xml para a versão 4.0, tb tentei trocar nas "propriedades>project facets" a tentar trocar pra ver~soa 4.0 ou qualquer outra acima da 2.3 ocorre o seguinte erro: "Cannot change version of project facet Dynamic Web Module to 4.0."

sendo que no pom.xml ja configurei pra usar a versão 4.0.

pom.xml

<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>br.com.lsoft</groupId>
  <artifactId>gamesapi</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>gamesapi Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>

    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.0</version>
        <scope>provided</scope>
    </dependency>

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

    <!-- https://mvnrepository.com/artifact/org.wildfly/wildfly-feature-pack -->
    <dependency>
        <groupId>org.wildfly</groupId>
        <artifactId>wildfly-feature-pack</artifactId>
        <version>13.0.0.Final</version>
        <type>pom</type>
        <scope>provided</scope>
    </dependency>



  </dependencies>
  <build>
    <finalName>gamesapi</finalName>

    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>

  </build>
</project>

como posso resolver isso?

oi Allan

como está o seu web.xml? Ele tem que ficar desse jeito aqui :

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee webapp_4_0.xsd"
  version="4.0">

</web-app>

boa tarde,

eu alterei o web.xml criado, para web-app 4.0

aqui esta o web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
  <display-name>gamesapi</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

tentei com o web.xml q vc colocou no post, ams aidna tenho o problema, nem msm tentando alterar em "propriedades > java facet > dynamic web module" o problema continua......

Oi Allan

Parece que é algum problema no seu eclipse =[ Vou tentar te ajudar, segue esse passo-a-passo:

  1. Fecha o eclipse.
  2. Vai na pasta do seu projeto.
  3. Nessa pasta, tenta achar uma pasta que se chama .setting entra nessa pasta.
  4. Nessa pasta você vai achar um arquivo que se chama org.eclipse.wst.common.project.facet.core.xml
  5. Você vai achar algo assim nesse arquivo:
    <?xml version="1.0" encoding="UTF-8"?>
    <faceted-project>
     <installed facet="jst.web" version="3.0"/>
    </faceted-project>
    1.Tenta mudar o installed facet para a versão 4.0
  6. Salva o arquivo, fecha o editor que está usando e abra o eclipse, veja se o problema persiste.

Me avisa se deu certo Allan ? Abraço

pesquisando aqui achei uma forma que resolve esse problema do "dynamic web module", no lugar de acertar a versão dele, eu desarquei ele e salvei as alterações, dei update pelo maven e o msm foi para a versão 4 automaticamente, o que me pareceu muito estranho.

com isso parou de dar errode compilação, porem ao subir o wildfly ele não enxerga o projeto, fui na pasta de deploy e o mesmo está lá, mas ao tentar acessar "http://localhost:8081/gamesapi/" ocorre o erro 404.

maven da uns problemas cabulosos.

achei o arquivo q vc falou, está assim:

<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
  <fixed facet="wst.jsdt.web"/>
  <installed facet="wst.jsdt.web" version="1.0"/>
  <installed facet="java" version="1.8"/>
  <installed facet="jst.jaxrs" version="2.1"/>
  <installed facet="jst.web" version="4.0"/>
  <installed facet="jst.jsf" version="2.2"/>
</faceted-project>

deixei o arquivo como o que vc me passou e o projeto nem da o deploy, presumindo q possa ser a IDE, vou baixar a msm novamente e recriar o projeto.

solução!

Consegui resolver a treta, o problema não era a IDE, a solução é simples, precisa de 2 passos, primeiro anotar no seu com q sera utilizado a versão 4.0:

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

que ja havia feito, porem o maven configura inicialmente seu projeto em 2.3, não sei o pq, e fica conflitando, pq a IDE ja a configurou assim, então vc precisa ir em "project -> properties -> project facets" e desmarcar a opção "Dynamic web project", dps vc vai em "project -> maven -> update project" que ele vai alterar pra 4.0.

a solução é estranha a vera, mas funciona