{"id":13657637,"url":"https://github.com/gwtproject/gwt","last_synced_at":"2026-01-10T04:58:03.623Z","repository":{"id":8097982,"uuid":"9512610","full_name":"gwtproject/gwt","owner":"gwtproject","description":"GWT Open Source Project","archived":false,"fork":false,"pushed_at":"2025-04-09T22:39:42.000Z","size":325060,"stargazers_count":1562,"open_issues_count":847,"forks_count":383,"subscribers_count":145,"default_branch":"main","last_synced_at":"2025-04-22T01:09:30.501Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://www.gwtproject.org","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gwtproject.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2013-04-18T03:12:03.000Z","updated_at":"2025-04-18T08:49:03.000Z","dependencies_parsed_at":"2023-10-02T10:01:13.204Z","dependency_job_id":"36f4871a-4477-4c95-a5f5-e955add06f67","html_url":"https://github.com/gwtproject/gwt","commit_stats":{"total_commits":9508,"total_committers":375,"mean_commits":"25.354666666666667","dds":0.895561632309634,"last_synced_commit":"d6ffc51e00ba4f965b36a4721f9ac65d96b2ed44"},"previous_names":[],"tags_count":73,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gwtproject%2Fgwt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gwtproject%2Fgwt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gwtproject%2Fgwt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gwtproject%2Fgwt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gwtproject","download_url":"https://codeload.github.com/gwtproject/gwt/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250544108,"owners_count":21448042,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T05:00:47.283Z","updated_at":"2026-01-10T04:58:03.573Z","avatar_url":"https://github.com/gwtproject.png","language":"Java","funding_links":[],"categories":["Java (78)","Java","开发框架"],"sub_categories":[],"readme":"## GWT\n\n  [![latest release](https://img.shields.io/github/v/release/gwtproject/gwt)](https://github.com/gwtproject/gwt/releases)\n  [![nightly](https://github.com/gwtproject/gwt/actions/workflows/full-check.yml/badge.svg)](https://github.com/gwtproject/gwt/actions/workflows/full-check.yml)\n  [![gitter](https://img.shields.io/badge/gitter.im-Join%20Chat-green.svg)](https://gitter.im/gwtproject/gwt)\n  [![irc](https://img.shields.io/badge/irc:%20chat.freenode.net-%23%23gwt-green.svg)](https://webchat.freenode.net/)\n\n  GWT is the official open source project for GWT releases 2.5 and onwards.\n\n  In this document you have some quick instructions to build the SDK from\n  source code and to run its tests.\n\n  For a more detailed documentation visit our [web site](http://gwtproject.org).\n  If you are interested in contributing with the project, please read the\n  [Making GWT better](http://gwtproject.org/makinggwtbetter.html)\n  section.\n\n### Building the GWT SDK:\n\n - In order to build GWT, `java` and `ant` are required in your system.\n\n - You need the [GWT tools repository](https://github.com/gwtproject/tools/)\n   checked out and up-to-date. By default it is expected to be found at `../tools`.\n   You can override the default location using the GWT_TOOLS environment variable\n   or passing `-Dgwt.tools=` argument to ant.\n\n - To create the SDK distribution files run:\n\n   `$ ant clean dist-dev`\n\n   Then you will get all `.jar` files in the folder `build/lib` and\n   the redistributable file will be: `build/dist/gwt-0.0.0.zip`\n\n   if you want to specify a different version number run:\n\n   `$ ant clean dist-dev -Dgwt.version=x.x.x`\n\n - To compile everything including examples you have to run\n\n   `$ ant clean dist`\n   \n - To create maven artifacts (after building .jar using ant), use [following guide](./maven/README.txt).\n\n### How to verify GWT code conventions:\n\n - In GWT we have some conventions so as all code written\n   by contributors look similar being easier to review.\n\n - After you make any modification, run this command to compile\n   everything including tests, to check APIs, and to verify code style.\n   It shouldn't take longer than 3-4 minutes.\n\n   `$ ant compile.tests apicheck checkstyle`\n\n### How to run GWT tests\n\n - Previously to run any test you have to set some environment variables\n   to guarantee that they are run in the same conditions for all\n   developers.\n\n   In a _Unix_ like platform you can use the `export` command:\n\n   `$ export TZ=America/Los_Angeles ANT_OPTS=-Dfile.encoding=UTF-8`\n\n   But in _Windows™_ you have to set the time-zone in your control panel, and\n   the environment variables using the command `set`.\n\n - Finally you can run all test suites with the following command, but be\n   prepared because it could take hours, and probably it would fail because\n   of timeouts, etc.\n\n   `$ ant test`\n\n - Thus, you might want to run only certain tests so as you can\n   focus on checking the modifications you are working on.\n\n   GWT build scripts use specific ant tasks and a bunch of system\n   properties listed in the following table to specify which tests\n   to run and how.\n\n   For instance to run the task `test` in the module `user` you\n   have to change to the `user` folder and run `ant` with the task\n   as argument, adding any other property with the `-D` flag:\n\n   `$ ( cd user \u0026\u0026 ant test -Dtest.emma.htmlunit.disable=true ; cd .. )`\n\n    Module         | Task                   | Property to skip               | Description\n    -------------- | ---------------------- | ------------------------------ | ----------------------\n    dev            | test                   | test.dev.disable               | GWT compiler \u0026 dev libraries\n    codeserver     | test                   | test.codeserver.disable        | SuperDevMode server\n    user           | test                   | test.user.disable              | GWT user API and JRE emulation\n    user           | test.nongwt            | test.nongwt.disable            | Run tests that not require GWTTestCase\n    user           | test.dev.htmlunit      | test.dev.htmlunit.disable      | Run dev-mode tests with HtmlUnit\n    user           | test.web.htmlunit      | test.web.htmlunit.disable      | Run web-mode tests with HtmlUnit\n    user           | test.draft.htmlunit    | test.draft.htmlunit.disable    | Run draft compiled HtmlUnit tests\n    user           | test.nometa.htmlunit   | test.nometa.htmlunit.disable   | Run -XdisableClassMetadata tests with HtmlUnit\n    user           | test.emma.htmlunit     | test.emma.htmlunit.disable     | Run emma tests with HtmlUnit\n    user           | test.coverage.htmlunit | test.coverage.htmlunit.disable | Run tests for coverage support\n    user           | test.dev.selenium      | test.dev.selenium.disable      | Run dev-mode tests using Selenium RC servers\n    user           | test.web.selenium      | test.web.selenium.disable      | Run web tests using Selenium RC servers\n    user           | test.draft.selenium    | test.draft.selenium.disable    | Run draft compiled tests using Selenium RC servers\n    user           | test.nometa.selenium   | test.nometa.selenium.disable   | Run -XdisableClassMetadata tests using Selenium RC servers\n    user           | test.emma.selenium     | test.emma.selenium.disable     | Run emma tests with Selenium RC servers\n    requestfactory | test                   | test.requestfactory.disable    | Request Factory library\n    tools          | test                   | test.tools.disable             | Some tools used in GWT development\n\n   Additionally you can utilize some variables to filter which test to run in each task:\n\n    Module         | Task                                  | Properties                           | Default\n    ---------------|---------------------------------------|--------------------------------------|-------------------\n    dev/core       | test                                  | gwt.junit.testcase.dev.core.includes | `**/com/google/**/*Test.class`\n    \u0026nbsp;         |                                       | gwt.junit.testcase.dev.core.excludes |\n    user           | test                                  | gwt.junit.testcase.includes          | `**/*Suite.class`\n    user           | test.nongwt                           | gwt.nongwt.testcase.includes         | `**/*JreSuite.class`\n    \u0026nbsp;         |                                       | gwt.nongwt.testcase.excludes         |\n    user           | test.web.* test.draft.* test.nometa.* | gwt.junit.testcase.web.includes      | `**/*Suite.class`\n    \u0026nbsp;         |                                       | gwt.junit.testcase.web.excludes      | `**/*JsInteropSuite.class,**/*JreSuite.class,***/OptimizedOnly*`\n    user           | test.dev.* test.emma.*                | gwt.junit.testcase.dev.includes      | `**/*Suite.class`\n    \u0026nbsp;         |                                       | gwt.junit.testcase.dev.excludes      | `**/*JsInteropSuite.class,**/*JreSuite.class,***/OptimizedOnly*`\n\n### Examples\n\n - Run all tests in dev\n\n   `$ ( cd dev \u0026\u0026 ant test ; cd .. )`\n\n    _Note: that the last `cd ..' is only needed in Windows._\n\n - There is another option to do the same but without changing to the\n   module folder. We have to specify the module as the ant task, and\n   the task as a target argument.\n\n   `$ ant dev -Dtarget=test`\n\n - Run all tests in codeserver\n\n   `$ ( cd dev/codeserver \u0026\u0026 ant test )`\n\n    or\n\n   `$ ant codeserver -Dtarget=test -Dtest.dev.disable=true`\n\n    _Note: that we disable dev tests because code server depends on dev\n    and we don`t want to run its tests._\n\n - Run all tests in tools\n\n   `$ ant tools -Dtarget=test -Dtest.dev.disable=true -Dtest.user.disable=true`\n\n - Run only the JsniRefTest in dev\n\n   ```\n   $ ant dev -Dtarget=test \\\n       -Dgwt.junit.testcase.dev.core.includes=\"**/JsniRefTest.class\"\n   ```\n\n - Run a couple of tests in dev\n\n   ```\n   $ ant dev -Dtarget=test \\\n       -Dgwt.junit.testcase.dev.core.includes=\"**/JsniRefTest.class,**/JsParserTest.class\"\n   ```\n\n   _Note: that you have to use regular expressions separated by comma to\n   select the test classes to execute._\n\n - Run all Jre tests in user, they should take not longer than 3min.\n   We have two ways to run them. Although the second case is more\n   complex it is here to know how disable properties work.\n\n   `$ ( cd user \u0026\u0026 ant test.nongwt )`\n\n      or\n\n   ```\n   $ ant user -Dtarget=test\n          -Dtest.dev.disable=true \\\n          -Dtest.codeserver.disable=true \\\n          -Dtest.requestfactory.disable=true \\\n          -Dtest.tools.disable=true \\\n          -Dtest.dev.htmlunit.disable=true \\\n          -Dtest.web.htmlunit.disable=true \\\n          -Dtest.coverage.htmlunit.disable=true \\\n          -Dtest.dev.selenium.disable=true \\\n          -Dtest.draft.htmlunit.disable=true \\\n          -Dtest.draft.selenium.disable=true \\\n          -Dtest.emma.htmlunit.disable=true \\\n          -Dtest.emma.selenium.disable=true \\\n          -Dtest.nometa.htmlunit.disable=true \\\n          -Dtest.nometa.selenium.disable=true \\\n          -Dtest.web.selenium.disable=true\n   ```\n\n    _Note: that we have to set all disable variables but `test.nongwt.disable`_\n\n - Run certain Jre tests in the user module.\n\n   `$ ( cd user \u0026\u0026 ant test.nongwt -Dgwt.nongwt.testcase.includes=\"**/I18NJreSuite.class\" )`\n\n - Run all GWT tests in user using htmlunit in dev mode.\n\n   `$ ( cd user \u0026\u0026 ant test.dev.htmlunit )`\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgwtproject%2Fgwt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgwtproject%2Fgwt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgwtproject%2Fgwt/lists"}