Я пытаюсь создать веб-приложение с поддержкой GWT с Gradle (на Ubuntu Linux).Gradle (tomcat-plugin): tomcatRun не может выполнить GWT JS
Я сконфигурировал все, и Gradle удалось успешно создать приложение, но когда я запускаю задачу «tomcatRun», я могу видеть только пустую страницу, которая является результатом не выполняемого javascript GWT (если я просматриваю источник страницы, он есть). Никаких ошибок, никаких предупреждений от Tomcat, только эта пустая страница.
Однако, когда я запускаю «tomcatRunWar», все работает отлично. Я не могу понять, что может быть неправильным или почему это может произойти.
Это мой gradle.build
файл:
apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'tomcat'
apply plugin: 'eclipse-wtp'
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "org.gradle.api.plugins:gradle-tomcat-plugin:1.0"
}
}
repositories {
mavenCentral()
}
dependencies {
/* Tomcat plugin dependencies */
def tomcatVersion = '7.0.47'
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'
}
/* Google Web Toolkit */
def gwtVersion = '2.5.1'
providedCompile "com.google.gwt:gwt-user:${gwtVersion}"
providedCompile "com.google.gwt:gwt-dev:${gwtVersion}"
runtime "com.google.gwt:gwt-servlet:${gwtVersion}"
/* Spring Security */
def springVersion = '3.1.4.RELEASE'
compile "org.springframework.security:spring-security-web:${springVersion}"
compile "org.springframework.security:spring-security-config:${springVersion}"
}
/* Task to compile the client package GWT code to JavaScript */
task gwtCompile (dependsOn: classes, type: JavaExec) {
buildDir = "${project.buildDir}/gwt"
extraDir = "${project.buildDir}/extra"
inputs.source sourceSets.main.java.srcDirs
inputs.dir sourceSets.main.output.resourcesDir
outputs.dir buildDir
doFirst {
file(buildDir).mkdirs()
}
main = "com.google.gwt.dev.Compiler"
classpath {
[
sourceSets.main.java.srcDirs, // Java source
sourceSets.main.output.resourcesDir, // Generated resources
sourceSets.main.output.classesDir, // Generated classes
sourceSets.main.compileClasspath, // Dependencies
]
}
args = [
'<package_path_to_GWT_module>', // Our GWT module
'-war', buildDir,
'-logLevel', 'INFO',
'-localWorkers', '2',
'-compileReport',
'-extra', extraDir,
]
maxHeapSize = '256M'
}
/* Make the war plugin depend on the gwtCompile task */
war.dependsOn gwtCompile
/* Include the contents of the GWT compilation in the generated WAR file */
war {
from gwtCompile.buildDir
}
/* Configure the eclipse plugin in case it is used */
eclipse {
project {
natures 'com.google.gwt.eclipse.core.gwtNature'
buildCommand 'com.google.gdt.eclipse.core.webAppProjectValidator'
buildCommand 'com.google.gwt.eclipse.core.gwtProjectValidator'
}
classpath {
containers 'com.google.gwt.eclipse.core.GWT_CONTAINER'
}
}
Мое дерево каталогов выглядит следующим образом:
ProjectHome
-- src
-- main
-- java
-- <packages>
-- webapp
-- WEB-INF
-- web.xml
-- index.html
-- test
-- build.gradle
Я также сравнил дерево каталогов получившейся войны с тем, которая используется заданию «tomcatRun» (build/libs/ProjectName), и они кажутся одинаковыми.
У кого-нибудь есть идеи для этого?
// Редактировать: На самом деле, он не отображает пустую страницу, он просто не может выполнить GWT Javascript, чтобы назначить контент единственному div в теле.
Задача 'tomcatRun' не связывает WAR-файл заранее. Он использует соглашения об исходных каталогах, предоставляемые плагином Java и War, для разрешения файлов. –
Привет! Спасибо, есть ли способ изменить скрипт сборки, чтобы сообщить плану tomcat использовать расположение встроенных файлов? – errikos
Что именно вы имеете в виду? –