Create your first OSGi bundle
An OSGi bundle is a Java™ archive file that contains Java code, resources, and a manifest that describes the bundle and its dependencies. The bundle is the unit of deployment for an application. This article is meant for developers wanting to create OSGi service or a servlet using AEM Forms 6.4 or 6.5. To build your first OSGi bundle please follow the following steps:
Install JDK
Install the supported version of JDK. I have used JDK1.8. Make sure you have added JAVA_HOME in your environment variables and is pointing to the root folder of your JDK installation.
Add the %JAVA_HOME%/bin to the path
Test your JDK version
Open a new command prompt window and type: java -version
. You should get back the version of JDK identified by the JAVA_HOME
variable
Install Maven
Maven is a build automation tool used primarily for Java projects. Please follow the following steps to install maven on your local system.
- Create a folder called
maven
in your C drive - Download the binary zip archive
- Extract the contents of the zip archive into
c:\maven
- Create an environment variable called
M2_HOME
with a value ofC:\maven\apache-maven-3.6.0
. In my case, the mvn version is 3.6.0. At the time of writing this article the latest maven version is 3.6.3 - Add the
%M2_HOME%\bin
to your path - Save your changes
- Open a new command prompt and type in
mvn -version
. You should see the mvn version listed as shown in the screenshot below
Install Eclipse
Install the latest version of eclipse
Create your first project
Archetype is a Maven project templating toolkit. An archetype is defined as an original pattern or model from which all other things of the same kind are made. The name fits as we are trying to provide a system that provides a consistent means of generating Maven projects. Archetype helps authors create Maven project templates for users, and provides users with the means to generate parameterized versions of those project templates.
To create your first maven project, please follow the following steps:
- Create a new folder called
aemformsbundles
in your C drive - Open a command prompt and navigate to
c:\aemformsbundles
- Run the following command in your command prompt
mvn -B org.apache.maven.plugins:maven-archetype-plugin:3.2.1:generate -D archetypeGroupId=com.adobe.aem -D archetypeArtifactId=aem-project-archetype -D archetypeVersion=36 -D appTitle="My Site" -D appId="mysite" -D groupId="com.mysite" -D aemVersion=6.5.13
On successful completion you should see a build success message in your command window
Create eclipse project from your maven project
- Change your working directory to
mysite
- Execute
mvn eclipse:eclipse
from the command line. The command reads your pom file and creates Eclipse projects with correct metadata so that Eclipse understands project types, relationships, classpath, etc.
Import the project into eclipse
Launch Eclipse
Go to File -> Import and select Existing Maven Projects as shown here
Click Next
Select the c:\aemformsbundles\mysite by clicking the Browse button
Click Finish to start the import process
Project is imported into Eclipse and you see a number of mysite.xxxx
folders
Expand the src/main/java
under the mysite.core
folder. This is the folder in which you are writing most of your code.
Include AEMFD Client SDK
You need to include the AEMFD client sdk in your project to take advantage of various services that come with AEM Forms. Please refer AEMFD Client SDK to include the appropriate client SDK in your Maven project. You have to include the AEM FD Client SDK in the dependencies section of pom.xml
of the core project as shown below.
<dependency>
<groupId>com.adobe.aemfd</groupId>
<artifactId>aemfd-client-sdk</artifactId>
<version>6.0.122</version>
</dependency>
To build your project, please follow the following steps:
- Open command prompt window
- Navigate to
c:\aemformsbundles\mysite\core
- Execute the command
mvn clean install -PautoInstallBundle
The above command builds and installs the bundle in the AEM server running onhttp://localhost:4502
. The bundle is also available on the file system atC:\AEMFormsBundles\mysite\core\target
and can be deployed using Felix web console