// This module is included in the following assembly:
// as_developing-extensions.adoc

[id='overview-extension-content-structure_{context}']
= Overview of extension content and structure

An extension is a collection of classes, dependencies, and resources 
that are packaged in a `.jar` file. 

{prodname} uses Spring Boot to load an extension. Consequently, you must
package an extension according to Spring Boot's executable JAR format. 
For example, ensure that you use the `ZipEntry.STORED()` method to save
a nested JAR file.

The structure of a `.jar` file that packages an extension is as follows:

[source]
----
extension.jar
|
+- META-INF
|  |
|  +- syndesis
|     |
|     +- syndesis-extension-definition.json <1>
|
+- mycompany
|  |
|  +-project
|    |
|    +-YourClasses.class <2>
|
+- lib <3>
  |
  +-dependency1.jar
  |
  +-dependency2.jar
----
<1> A JSON schema file that specifies the data structures that 
define the extension. This is referred to as the extension definition JSON file. 
<2> The Java classes that implement the behavior that the extension 
provides. 
<3> Additional dependencies that are required to build and 
execute the custom feature. 
