hi! I have tried using Vaadin Gradle plugin, but the latest versions (0.9, 0.9.1) don’t recompile GWT widgetset for some reason and the older versions had other issues. so I switched back to calling GWT Compiler directly (not clear what the value of that plugin vs. direct GWT Compiler call is anyway).
so, now the widgetset compilation works fine, but vaadin-server and some other jars are missing in the WAR file.
so… can someone please post a sample build.gradle file for a Vaadin project that calls GWT Compiler directly without using Vaadin Gradle Plugin?
here’s my build.gradle file for “webui” module. again, it builds the widgetset fine, but it does NOT include vaadin-server and some other jars in the war file. some online posts suggest this maybe due to the fact that “providedCompile” dependency prevents some transitive jars from being added to the WAR.
in other words, let’s say you have:
providedCompile "com.vaadin:vaadin-client:$vaadinVersion"
compile "com.vaadin:vaadin-server:$vaadinVersion"
- here vaadin-server will NOT be included in the WAR because vaadin-client has dependency on “vaadin-client” (as you can see http://search.maven.org/#artifactdetails|com.vaadin|vaadin-client|7.3.2|jar ). I can fix this issue by declaring vaadin-client dependency as “Compile” instead of “providedCompile”, but then the WAR file has a bunch of vaadin jars which are actually not needed there.
apply plugin: 'war'
dependencies {
compile "com.vaadin:vaadin-server:$vaadinVersion"
compile "com.vaadin:vaadin-client-compiled:$vaadinVersion"
compile "com.vaadin:vaadin-themes:$vaadinVersion"
compile 'org.vaadin.addons:googleanalyticstracker:2.0.0'
compile libraries.slf4j
providedCompile libraries.servletAPI
providedCompile "com.vaadin:vaadin-client:$vaadinVersion"
providedCompile "com.vaadin:vaadin-client-compiler:$vaadinVersion"
compile project(":webshared")
compile project( -- skipped... many other modules of the same project -- )
testCompile project(":test-utilities")
}
ext {
webAppDirName = "src/main/webapp"
gwtBuildDirInWebRoot = 'VAADIN/widgetsets'
gwtBuildDir = webAppDirName + '/' + gwtBuildDirInWebRoot
widgetsetClass = 'com.taskadapter.webui.widgetset.Vaadin1Widgetset'
}
war {
// Exclude unneccessery GWT Compiler artifacts
exclude "**/gwt-unitCache/**"
}
task widgetset << {
// Create widgetset directory (if needed)
def created = (new File(gwtBuildDir)).mkdirs()
// Compile
ant.java(classname: 'com.google.gwt.dev.Compiler', failOnError: 'yes',
maxmemory: '1000m', fork: 'true')
{
classpath {
pathElement(path: configurations.compile.asPath)
pathElement(path: sourceSets.main.runtimeClasspath.asPath)
sourceSets.main.java.srcDirs.each {
pathelement(location: it.absolutePath)
}
}
arg(line: '-war ' + gwtBuildDir)
arg(line: '-logLevel INFO')
arg(line: '-style OBF')
arg(line: '-localWorkers 2')
arg(line: widgetsetClass)
//
jvmarg(value: '-Djava.awt.headless=true')
//
jvmarg(value: '-XX:MaxPermSize=256M')
//
jvmarg(value: '-Xmx500M')
}
}
// Require widgetset compilation before WAR is built
war.dependsOn widgetset
I could filter out the unneeded Jars from the WAR file in
war {
// Exclude unneccessery GWT Compiler artifacts
exclude "**/gwt-unitCache/**"
.............
exclude some vaadin jars here ........
}
- but this seems like a hack.