We ended up using no plugins for GWT with Gradle. Even if there are some, 
none of them fit well.
Luckily, GWT compiler has a nice CLI, so...
Also, we make the gwt a subproject, as we don't use GWT RPC anyway. This 
helps keeping gwt-dev out of any runtime classpath!!!

Below is a trimmed version (not sure it even compiles, and it is the 
build.gradle for a subproject) of the build.gradle file for reference, for 
both compilation (even with a system flag to compile only the dev module) 
and for running the super dev mode:

ext {
    buildWebapp = "${project(':web').buildDir}/generated/webapp"
    gwtDev = Boolean.getBoolean('gwt.development')
}

configurations {
    gwt
}
dependencies {
    gwt(project(':api')) { transitive = false }
    gwt files(project.sourceSets.main.java.srcDirs)
    gwt files(project.sourceSets.main.resources.srcDirs)
    gwt files(project(':api').sourceSets.main.java.srcDirs)
    gwt "com.google.gwt:gwt-user:$gwtVersion"
    gwt "com.google.code.gwtx:gwtx:$gwtxVersion"
    gwt "com.github.branflake2267:gwt-maps-api:$googleMapsApiVersion"
    gwt "com.google.elemental2:elemental2-webstorage:$elementalVersion"
    gwt "com.google.elemental2:elemental2-dom:$elementalVersion"
    gwt "com.google.elemental2:elemental2-promise:$elementalVersion"
    gwt "com.fasterxml.jackson.core:jackson-annotations:$jacksonVersion"
    gwt "com.google.gwt:gwt-dev:$gwtVersion"
}

task compileGwt(type: JavaExec) {
    dependsOn compileJava
    ext {
        outDir = "$buildWebapp/gwt"
    }
    group = 'Build'
    description = 'Compile the GWT source'
    inputs.files configurations.gwt
    inputs.property 'development', gwtDev
    outputs.dir outDir
    classpath = configurations.gwt
    main = 'com.google.gwt.dev.Compiler'
    args = []
    args += ['-sourceLevel', "1.$javaVersion"]
    args += ['-war', buildWebapp]
    args += ['-logLevel', 'INFO']
    args += ['-workDir', "$buildDir/tmp/gwt"]
    args += ['-XfragmentCount', '6']
    args += ['-failOnError']
    if (gwtDev) {
        args += ['-style', 'PRETTY']
        args += ['-draftCompile']
        args += ['-optimize', '0']
        args += ['-XmethodNameDisplayMode', 'ABBREVIATED']
        args += ['org.example.MyModuleDev']
    } else {
        args += ['-style', 'OBFUSCATED']
        args += ['-optimize', '9']
        args += ['-XnoclassMetadata']
        args += ['org.example.MyModule']
    }
}
task cleanGwtTemp {
    doLast {
        ant.delete(dir: "$buildWebapp/gwt")
        ant.delete(dir: "$buildDir/tmp/gwt")
    }
}
clean {
    dependsOn cleanGwtTemp
}

task gwtSuperDev(type: JavaExec) {
    dependsOn compileJava
    description = 'Run the GWT code server for Super Dev Mode'
    classpath = configurations.gwt
    main = 'com.google.gwt.dev.codeserver.CodeServer'
    args = []
    args += ['-sourceLevel', "1.$javaVersion"]
    args += ['-launcherDir', buildWebapp]
    args += ['-logLevel', 'INFO']
    args += ['-workDir', "$buildDir/tmp/gwt"]
    args += ['-precompile']
    args += ['-failOnError']
    args += ['-bindAddress', '0.0.0.0']
    args += ['org.example.MyModuleDev']
    
    doFirst {
        file("$buildDir/tmp/gwt").mkdirs()
    }
}



Em quarta-feira, 10 de março de 2021 às 12:44:57 UTC-3, aka...@gmail.com 
escreveu:

> Even if it is opinionated, please give us Gradle GWT archetype. :-)
>
> On Wednesday, March 10, 2021 at 5:25:47 PM UTC+2 t.br...@gmail.com wrote:
>
>>
>>
>> On Wednesday, March 10, 2021 at 4:13:03 PM UTC+1 pavel....@gmail.com 
>> wrote:
>>
>>> We had the same problem with maven but at the end, maven's multi-module 
>>> project and profiles helped to solve *hack around* it.
>>>
>>
>> There, fixed it for you 😉
>>
>> Also see https://www.cloudbees.com/blog/maven-profiles-and-maven-way and 
>> https://blog.soebes.de/blog/2013/11/09/why-is-it-bad-to-activate-slash-deactive-modules-by-profiles-in-maven/
>>  
>> among others, by prominent Maven PMC members.
>> (and yet, gwt-maven-archetypes use a "dev" profile 🤷, but it's know to 
>> be kind of hackish in places due to Maven and jetty-maven-plugin's 
>> limitations)
>>
>

-- 
You received this message because you are subscribed to the Google Groups "GWT 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-web-toolkit+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-web-toolkit/b369da9d-78fc-4d5f-9227-68a47b18dd61n%40googlegroups.com.

Reply via email to