For more information see the following guide kindly provided by Google. Here is the partial copy:
Standard Directory and Package Layout
GWT projects are overlaid onto Java packages such that most of the configuration can be inferred from the classpath and the module definitions.
Guidelines
If you are not using the Command-line tools to generate your project files and directories, here are some guidelines to keep in mind when organizing your code and creating Java packages.
- Under the main project directory create the following directories:
- src folder - contains production Java source
- war folder - your web app; contains static resources as well as compiled output
- test folder - (optional) JUnit test code would go here
- Within the src package, create a project root package and a client package.
- If you have server-side code, also create a server package to differentiate between the client-side code (which is translated into JavaScript) from the server-side code (which is not).
- Within the project root package, place one or more module definitions.
- In the war directory, place any static resources (such as the host page, style sheets, or images).
- Within the client and server packages, you are free to organize your code into any subpackages you require.
Example: GWT standard package layout
For example, all the files for the "DynaTable" sample are organized in a main project directory also called "DynaTable".
- Java source files are in the directory: DynaTable/src/com/google/gwt/sample/dynatable
- The module is defined in the XML file: DynaTable/src/com/google/gwt/sample/dynatable/DynaTable.gwt.xml
- The project root package is: com.google.gwt.sample.dynatable
- The logical module name is: com.google.gwt.sample.dynatable.DynaTable
The src directory
The src directory contains an application's Java source files, the module definition, and external resource files.
Package | File | Purpose |
---|---|---|
com.google.gwt.sample.dynatable | The project root package contains module XML files. | |
com.google.gwt.sample.dynatable | DynaTable.gwt.xml | Your application module. Inherits com.google.gwt.user.User and adds an entry point class, com.google.gwt.sample.dynatable.client.DynaTable. |
com.google.gwt.sample.dynatable | Static resources that are loaded programmatically by GWT code. Files in the public directory are copied into the same directory as the GWT compiler output. | |
com.google.gwt.sample.dynatable | logo.gif | An image file available to the application code. You might load this file programmatically using this URL: GWT.getModuleBaseURL() + "logo.gif". |
com.google.gwt.sample.dynatable.client | Client-side source files and subpackages. | |
com.google.gwt.sample.dynatable.client | DynaTable.java | Client-side Java source for the entry-point class. |
com.google.gwt.sample.dynatable.client | SchoolCalendarService.java | An RPC service interface. |
com.google.gwt.sample.dynatable.server | Server-side code and subpackages. | |
com.google.gwt.sample.dynatable.server | SchoolCalendarServiceImpl.java | Server-side Java source that implements the logic of the service. |
The war directory
The war directory is the deployment image of your web application. It is in the standard expanded war format recognized by a variety of Java web servers, including Tomcat, Jetty, and other J2EE servlet containers. It contains a variety of resources:
- Static content you provide, such as the host HTML page
- GWT compiled output
- Java class files and jar files for server-side code
- A web.xml file that configures your web app and any servlets
A detailed description of the war format is beyond the scope of this document, but here are the basic pieces you will want to know about:
Directory | File | Purpose |
---|---|---|
DynaTable.html | A host HTML page that loads the DynaTable app. | |
DynaTable.css | A static style sheet that styles the DynaTable app. | |
The DynaTable module directory where the GWT compiler writes output and files on the public path are copied. NOTE: by default this directory would be the long, fully-qualified module name com.google.gwt.sample.dynatable.DynaTable. However, in our GWT module XML file we used the rename-to="dynatable" attribute to shorten it to a nice name. | ||
dynatable.nocache.js | The "selection script" for DynaTable. This is the script that must be loaded from the host HTMLto load the GWT module into the page. | |
All non-public resources live here, see the servlet specification for more detail. | ||
web.xml | Configures your web app and any servlets. | |
Java compiled class files live here to implement server side functionality. If you're using an IDE set the output directory to this folder. | ||
Any library dependencies your server code needs goes here. | ||
gwt-servlet.jar | If you have any servlets using GWT RPC, you will need to place a copy of gwt-servlet.jar here. |
The test directory
The test directory contains the source files for any JUnit tests.
Package | File | Purpose |
---|---|---|
com.google.gwt.sample.dynatable.client | Client-side test files and subpackages. | |
com.google.gwt.sample.dynatable.client | DynaTableTest.java | Test cases for the entry-point class. |
com.google.gwt.sample.dynatable.server | Server-side test files and subpackages. | |
com.google.gwt.sample.dynatable.server | SchoolCalendarServiceImplTest.java | Test cases for server classes. |