This document describes the Maven modules in the App Engine Java standard project, their relationships, and key characteristics.
The project is divided into several categories of modules:
- API: Modules defining the App Engine APIs available to applications.
- SDK: Modules providing implementations for local development and testing.
- Runtime: Modules related to the App Engine runtime environment.
- Testing: Modules for testing App Engine applications.
- Assembly: Modules for packaging the SDK and runtime distributions.
- Utilities: Helper modules used by other parts of the project.
The project supports multiple Jetty versions and servlet API specifications:
- Jetty 9.4 with Servlet 3.1 (
javax.*) - Jetty 12.0 with EE8 (
javax.*Servlet 4.0) and EE10 (jakarta.*Servlet 6.0) - Jetty 12.1 with EE8 (
javax.*Servlet 4.0) and EE11 (jakarta.*Servlet 6.1)
- Description: Compiles protocol buffer definitions used by the APIs and runtime.
- Dependencies:
protobuf-java.
- Description: Defines data structures for session management.
- Dependencies: None.
- Description: Contains code for App Engine environment initialization.
- Dependencies: None.
- Description: Provides common utility classes used across various modules.
- Dependencies:
yamlbeans,flogger,antlr-runtime,javax.servlet-api.
- Description: Core App Engine APIs for bundled services like Datastore, Users, Mail, URL Fetch, etc.
- Dependencies:
protos,runtime-shared,appengine-utils,geronimo-javamail_1.4_spec,javax.servlet-api,jakarta.servlet-api.
- Description: The primary API artifact for users. It is a shaded JAR that bundles
appengine-apisand its dependencies (like Guava, Protobuf, HTTP client libraries, etc.), relocating them tocom.google.appengine.repackaged.*namespaces to prevent dependency conflicts in user applications. It keeps the "1.0-sdk" name as it is backward compatible with the initial version of AppEngine. - Dependencies:
appengine-apis.
- Description: Provides legacy APIs (e.g., JCache) that were removed from
appengine-api-1.0-sdk. This is a shaded JAR includingjcache-api. - Dependencies:
appengine-api-1.0-sdk.
- Description: JSR-107 (JCache) implementation using App Engine Memcache.
- Dependencies:
appengine-api-1.0-sdk,jsr107cache.
- Description: Provides the JavaMail 1.4 API implementation used by the Mail API.
- Dependencies:
javax.activation.
Modules used for local application testing via dev_appserver.
- Description: Contains local implementations (stubs) of the App Engine services for use in the local development server.
- Dependencies:
appengine-apis,protos,appengine-init,appengine-utils,shared-sdk,appengine-resources.
- Description: A shaded JAR containing the local service implementations from
appengine-apis-devand its dependencies, with package relocations to prevent conflicts. This is used for local testing. - Dependencies:
appengine-apis-dev,shared-sdk,appengine-api-1.0-sdk.
- Description: Code shared between different versions of the SDK.
- Dependencies:
appengine-api-1.0-sdk,sessiondata.
- Description: Jetty-version-specific SDK code for Jetty 9, 12.0, and 12.1 respectively.
- Dependencies:
shared-sdk.
-
Description: Provides components for the local runtime based on Jetty 9 / javax Servlet. This is a shaded JAR. This module depends on the javax.servlet API, not on internal Jetty APIs.
-
Dependencies:
appengine-apis-dev,runtime-shared.
- Description: Provides components for the local runtime based on Jetty 12 / jakarta Servlet (EE10 or EE11). This is a shaded JAR. This module depends on the jakarta.servlet API, not on internal Jetty APIs.
- Dependencies:
appengine-apis-dev,runtime-shared.
Modules used for the deployed application runtime.
- Description: Code shared across different runtime implementations.
- Dependencies:
sessiondata.
- Description: Jetty 9 / EE6 specific runtime components, including JSP/EL APIs. This is a shaded JAR.
- Dependencies:
runtime-shared.
- Description: Jetty 12.0 / EE8 specific runtime components (Servlet 4.0), including JSP/EL APIs. This is a shaded JAR.
- Dependencies:
runtime-shared.
- Description: Jetty 12.0 / EE10 specific runtime components (Servlet 6.0), including JSP/EL APIs. This is a shaded JAR.
- Dependencies:
runtime-shared.
- Description: Jetty 12.1 / EE8 specific runtime components (Servlet 4.0), including JSP/EL APIs. This is a shaded JAR.
- Dependencies:
runtime-shared.
- Description: Jetty 12.1 / EE11 specific runtime components (Servlet 6.1), including JSP/EL APIs. This is a shaded JAR.
- Dependencies:
runtime-shared.
- Description: Parent POM for runtime implementation modules (
impl,main,deployment,local_*, etc.).
These modules generate Jetty quickstart web.xml file configurations to speed up server startup. Each module corresponds to a specific Jetty and EE version combination.
quickstartgenerator: Jetty 9quickstartgenerator-jetty12: Jetty 12.0 / EE8quickstartgenerator-jetty12-ee10: Jetty 12.0 / EE10quickstartgenerator-jetty121-ee8: Jetty 12.1 / EE8quickstartgenerator-jetty121-ee11: Jetty 12.1 / EE11
- Description: Provides helper classes for testing App Engine applications, for example,
LocalServiceTestHelper. This is a shaded JAR. - Dependencies:
appengine-api-stubs,appengine-tools-sdk.
- Description: Client library for remotely accessing App Engine services from other applications. This is a shaded JAR.
- Dependencies:
appengine-api-1.0-sdk.
These modules use maven-assembly-plugin and maven-dependency-plugin to build the final SDK distribution ZIP file.
- Description: Unpacks and customizes a Jetty 12.0 distribution for inclusion in the SDK.
- Description: Unpacks and customizes a Jetty 12.1 distribution for inclusion in the SDK.
- Description: The main assembly module. It gathers artifacts from all other modules, such as
appengine-api-1.0-sdk,appengine-api-stubs,appengine-tools-sdk, runtime modules, or Jetty assemblies, and packages them into theappengine-java-sdk.zipdistribution file.