Vraptor + gradle

Boa noite,

Já tentei de tudo e não estou achando o erro.

Estou tentando utilizar o vraptor com o gradle no tomcat, porém quando subo o servidor o vraptor não sobe. Seguem os logs

Log do tomcat
jan 19, 2016 10:28:09 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
ADVERTÊNCIA: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property ‘source’ to ‘org.eclipse.jst.j2ee.server:library’ did not find a matching property.
jan 19, 2016 10:28:09 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: Server version: Apache Tomcat/8.0.30
jan 19, 2016 10:28:09 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: Server built: Dec 1 2015 22:30:46 UTC
jan 19, 2016 10:28:09 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: Server number: 8.0.30.0
jan 19, 2016 10:28:09 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: OS Name: Windows 10
jan 19, 2016 10:28:09 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: OS Version: 10.0
jan 19, 2016 10:28:09 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: Architecture: amd64
jan 19, 2016 10:28:09 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: Java Home: C:\Program Files\Java\jdk1.8.0_66\jre
jan 19, 2016 10:28:09 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: JVM Version: 1.8.0_66-b18
jan 19, 2016 10:28:09 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: JVM Vendor: Oracle Corporation
jan 19, 2016 10:28:09 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: CATALINA_BASE: D:\desenv\workspace\bukaholic.metadata.plugins\org.eclipse.wst.server.core\tmp1
jan 19, 2016 10:28:09 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: CATALINA_HOME: D:\desenv\programas\apache-tomcat-8.0.30
jan 19, 2016 10:28:09 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: Command line argument: -agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:53381
jan 19, 2016 10:28:09 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: Command line argument: -Dcatalina.base=D:\desenv\workspace\bukaholic.metadata.plugins\org.eclipse.wst.server.core\tmp1
jan 19, 2016 10:28:09 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: Command line argument: -Dcatalina.home=D:\desenv\programas\apache-tomcat-8.0.30
jan 19, 2016 10:28:09 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: Command line argument: -Dwtp.deploy=D:\desenv\workspace\bukaholic.metadata.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps
jan 19, 2016 10:28:09 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: Command line argument: -Djava.endorsed.dirs=D:\desenv\programas\apache-tomcat-8.0.30\endorsed
jan 19, 2016 10:28:09 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: Command line argument: -Dfile.encoding=UTF-8
jan 19, 2016 10:28:09 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFORMAÇÕES: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jdk1.8.0_66\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\Program Files\Java\jdk1.8.0_66\jre\bin;C:/Program Files/Java/jre1.8.0_66/bin/server;C:/Program Files/Java/jre1.8.0_66/bin;C:/Program Files/Java/jre1.8.0_66/lib/amd64;C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Intel\iCLS Client;C:\Program Files\Intel\iCLS Client;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\Program Files (x86)\Intel\Intel® Management Engine Components\DAL;C:\Program Files\Intel\Intel® Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel® Management Engine Components\IPT;C:\Program Files\Intel\Intel® Management Engine Components\IPT;c:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files\Intel\WiFi\bin;C:\Program Files\Common Files\Intel\WirelessCommon;C:\Program Files (x86)\Brackets\command;C:\Program Files\Git\cmd;C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\usr\bin;C:\Program Files (x86)\Skype\Phone;C:\Program Files (x86)\Heroku\bin;C:\Program Files (x86)\git\cmd;D:\desenv\programas\gradle-2.10\bin;D:\desenv\programas\eclipse-mars;;.
jan 19, 2016 10:28:09 PM org.apache.coyote.AbstractProtocol init
INFORMAÇÕES: Initializing ProtocolHandler [“http-nio-8080”]
jan 19, 2016 10:28:09 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
INFORMAÇÕES: Using a shared selector for servlet write/read
jan 19, 2016 10:28:09 PM org.apache.coyote.AbstractProtocol init
INFORMAÇÕES: Initializing ProtocolHandler [“ajp-nio-8009”]
jan 19, 2016 10:28:09 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
INFORMAÇÕES: Using a shared selector for servlet write/read
jan 19, 2016 10:28:09 PM org.apache.catalina.startup.Catalina load
INFORMAÇÕES: Initialization processed in 1007 ms
jan 19, 2016 10:28:09 PM org.apache.catalina.core.StandardService startInternal
INFORMAÇÕES: Starting service Catalina
jan 19, 2016 10:28:09 PM org.apache.catalina.core.StandardEngine startInternal
INFORMAÇÕES: Starting Servlet Engine: Apache Tomcat/8.0.30
jan 19, 2016 10:28:12 PM org.apache.jasper.servlet.TldScanner scanJars
INFORMAÇÕES: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
log4j:WARN No appenders could be found for logger (org.jboss.logging).
log4j:WARN Please initialize the log4j system properly.
jan 19, 2016 10:28:23 PM org.apache.coyote.AbstractProtocol start
INFORMAÇÕES: Starting ProtocolHandler [“http-nio-8080”]
jan 19, 2016 10:28:23 PM org.apache.coyote.AbstractProtocol start
INFORMAÇÕES: Starting ProtocolHandler [“ajp-nio-8009”]
jan 19, 2016 10:28:23 PM org.apache.catalina.startup.Catalina start
INFORMAÇÕES: Server startup in 13757 ms

build.gradle

buildscript {
repositories {
jcenter()
}

dependencies {
    classpath 'com.bmuschko:gradle-tomcat-plugin:2.0'
}

}

apply plugin: 'java’
apply plugin: 'war’
apply plugin: 'eclipse-wtp’
apply plugin: ‘com.bmuschko.tomcat’

// JDK version source compatibility
sourceCompatibility = 1.8
// project version
version = ‘1.0’
// War file name
war.baseName = ‘bukaholic-war’
// Web directory, this overrides the default value "webapp"
project.webAppDirName = ‘WebContent’

repositories {
mavenLocal()
mavenCentral()
}

// Set source directory
sourceSets {
main {
java {
srcDir ‘src’
}
}
}

dependencies {
compile ‘br.com.caelum:vraptor:4.1.+’

compile 'org.hibernate:hibernate-validator-cdi:5.0.2.Final'
compile 'org.hibernate:hibernate-entitymanager:4.3.0.Final'
compile 'org.jboss.weld.servlet:weld-servlet:2.1.1.Final'
compile 'javax.el:el-api:2.2'
compile 'javax.servlet:jstl:1.2'
compile 'org.slf4j:slf4j-log4j12:1.6.0'
compile 'org.slf4j:slf4j-api:1.6.0'

compile 'javax.servlet:javax.servlet-api:3.1.0'

testCompile group: 'junit', name: 'junit', version: '4.+'

def tomcatVersion = '8.0.30'
tomcat "org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}",
        "org.apache.tomcat.embed:tomcat-embed-logging-juli:${tomcatVersion}"
tomcat("org.apache.tomcat.embed:tomcat-embed-jasper:${tomcatVersion}") {
    exclude group: 'org.eclipse.jdt.core.compiler', module: 'ecj'
}

}

task updateProject << {
println ‘Projeto atualizado’
}

updateProject {
group 'IDE’
description 'Atalho para cleanEclipseWtp eclipseWtp’
dependsOn cleanEclipseWtp, eclipseWtp
}

tomcatRun.contextPath = '/'
tomcatRunWar.contextPath = ‘/’

Você chegou a inspecionar o .war gerado e verificar se o jar do vraptor realmente foi baixado e foi empacotado junto ?

Então, fiz isso sim.

Sem saber o que estava acontecendo, fiz o projeto funcionar puro, sem maven e sem gradle.

Agora que esta funcionando conseguido fazer melhor a comparação e ver o que pode ser. Estou achando que pode ser o plugin do tomcat.

Vou tentar utilizar só os plugins java, war e eclipse-wtp.

E como sou novo não sei se estou fazendo certo. No maven e no ivy, depois que vc adiciona uma dependência e salva eles atualizam na hora. No gradle estou executando “gradle eclipseWtp”. Esta certo isso?

Depois que fazer os testes volto aqui para comentar. Mas acho que é esse o caminho mesmo.

Nao explorei o Gradle tanto quanto eu queria e por isso não vou conseguir te ajudar… tem que dar uma pesquisada no Google.

Abs

Consegui resolver, haviam 2 erros e uma confusão.

Para descobrir o que estava faltando para rodar o projeto primeiro fui rodando a task “war” e fui comparando o war gerado com o war do projeto puro.

No começo não estava aparecendo o código fonte, (só isso) e depois que fiz aparecer ficou faltando os arquivos do META-INF. Ambos os problemas resolvi setando o sourceSets que eu tinha excluído:

No meu projeto o código fonte esta localizado em src/ e os resources em src/META-INF/. Com isso em mente o sourceSets ficou assim.

sourceSets {
main {
java {
srcDir ‘src’
}
resources {
srcDir ‘src’
}
}
}

Beleza, war funcionando, porém ainda não conseguir fazer o eclipseWtp funcionar e depois de vários testes e configurações vi que além do código fonte em ‘src’ ele criava ‘src/main/…’ e isso impedia que funcionasse, pois as classes estavam duplicadas. Então achei a configuração que faltava. A configuração do source para o ecliseWtp também.

eclipse {
      wtp {
        component {
              resource deployPath: '/WEB-INF/classes', sourcePath: '/src'
        }
      }
}

Resumindo, o problema estava apenas na configuração das pastas de código fonte e resources, tanto do war quando do plugin do eclipseWtp.

E ainda encontrei depois o plugin Buildship que é para rodar o gradle no eclipse.

Bom fica as dicas e o como ficou meu gradle.build para quem tiver dificuldades como eu tive

buildscript {
repositories {
jcenter()
}
}

apply plugin: 'java’
apply plugin: 'war’
apply plugin: ‘eclipse-wtp’

// Aqui que eu tive um confusão, o eclipseWtp faz com que seja o nome do modulo
//quando você adiciona no tomcat
war.baseName = ‘vraptor-gradle’
// Diretório Web por padrão é "webapp"
project.webAppDirName = ‘WebContent’

repositories {
jcenter()
}

eclipse {
wtp {
component {
resource deployPath: ‘/WEB-INF/classes’, sourcePath: ‘/src’
}
}
}

sourceSets {
main {
java {
srcDir ‘src’
}
resources {
srcDir ‘src’
}
}
}

dependencies {
compile ‘br.com.caelum:vraptor:4.1.+’

compile 'org.hibernate:hibernate-validator-cdi:5.0.2.Final'
compile 'org.hibernate:hibernate-entitymanager:4.3.0.Final'
compile 'org.jboss.weld.servlet:weld-servlet:2.1.2.Final'
compile 'javax.el:el-api:2.2'
compile 'javax.servlet:jstl:1.2'
compile 'org.slf4j:slf4j-log4j12:1.6.0'
compile 'org.slf4j:slf4j-api:1.6.0'

compile 'javax.servlet:javax.servlet-api:3.1.0'

testCompile group: 'junit', name: 'junit', version: '4.+'

}

1 curtida