- Create a custom Apache Karaf distribution using karaf-maven-plugin
- Create a custom logo using maven-bundle-plugin
- Configure karaf-maven-plugin
- Build a OSGi bundle using maven-bundle-plugin
- Use maven-dependency-plugin for post-processing
Karaf 2: Coming soon
Karaf 3: https://github.com/juttayaya/karaf/tree/master/karaf3/custom-karaf
Karaf 4: Coming soon
Step 1: Import the Karaf 3 dependencies
Add the following entry in the dependencyManagement section of the pom.xml
<dependencyManagement>
<!-- Import Karaf POM to use the correct
version of the Karaf dependencies -->
<dependencies>
<dependency>
<groupId>org.apache.karaf</groupId>
<artifactId>karaf</artifactId>
<version>${karaf.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Doing this will automatically configure the custom Karaf Maven build to use the correct version of dependencies libraries.
See https://github.com/juttayaya/karaf/blob/master/karaf3/custom-karaf/pom.xml for full example.
Step 2: Configure the karaf-maven-plugin
Add the following entry to the pom.xml to configure karaf-maven-plugin to build Karaf
<dependencies>
<dependency>
<!-- Scope is compile so all features (there is only one) are installed
into startup.properties and
the feature repo itself is not added in
etc/org.apache.karaf.features.cfg file
-->
<groupId>org.apache.karaf.features</groupId>
<artifactId>framework</artifactId>
<type>kar</type>
<scope>compile</scope>
</dependency>
<dependency>
<!-- Scope is runtime so the feature repo is listed
in etc/org.apache.karaf.features.cfg file,
and features will installed into the system directory.
This imports the standard Karaf features described at https://repo1.maven.org/maven2/org/apache/karaf/features/standard/3.0.4/standard-3.0.4-features.xml
These features are installed in the karaf-maven-plugin configuration
-->
<groupId>org.apache.karaf.features</groupId>
<artifactId>standard</artifactId>
<classifier>features</classifier>
<type>xml</type>
<scope>runtime</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.karaf.tooling</groupId>
<artifactId>karaf-maven-plugin</artifactId>
<configuration>
<karafVersion>${karaf.version}</karafVersion>
<!-- bootFeatures starts up these features when Karaf first boots up.
The feature names are obtained from the features.xml in the
dependencies section
-->
<bootFeatures>
<feature>standard</feature>
<feature>config</feature>
<feature>ssh</feature>
</bootFeatures>
<!-- installedFeatures only installs the libraries but the user will
have to start it up manually via Karaf command line feature:install
-->
<installedFeatures>
<feature>scheduler</feature>
<feature>war</feature>
</installedFeatures>
</configuration>
</plugin>
</plugins>
</build>
See https://github.com/juttayaya/karaf/blob/master/karaf3/custom-karaf/custom-karaf-server/pom.xml for full example.
Step 3: Create customized logo
You can customize the logo displayed when users first log in via command line
A.) Create the file src/main/resources/org/apache/karaf/branding/branding.properties
This file configures the welcome logo and command prompt.
See https://github.com/juttayaya/karaf/blob/master/karaf3/custom-karaf/custom-karaf-branding/src/main/resources/org/apache/karaf/branding/branding.properties for full example.
B.) Configure maven-bundle-plugin to create an OSGi bundle with the branding.properties file. Add the following entry in the pom.xml
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<configuration>
<instructions>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Import-Package>*</Import-Package>
<Private-Package>!*</Private-Package>
<Export-Package>org.apache.karaf.branding</Export-Package>
<Spring-Context>*;public-context:=false</Spring-Context>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
The maven-bundle-plugin creates a JAR file with a META-INF/MANIFEST.MF and branding.properties .
See https://github.com/juttayaya/karaf/blob/master/karaf3/custom-karaf/custom-karaf-branding/pom.xml for full example.
C.) Configure maven-dependency-plugin to copy the branding JAR created in step B into the Karaf lib directory. Add the following entry to the pom.xml
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<inherited>false</inherited>
<executions>
<execution>
<id>copy</id>
<phase>generate-resources</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>${project.groupId}</groupId>
<artifactId>custom-karaf-branding</artifactId>
<version>${project.version}</version>
<!-- target/assembly is the directory karaf-maven-plugin
assembles all the files of the Karaf server -->
<outputDirectory>target/assembly/lib</outputDirectory>
<destFileName>custom-karaf-branding.jar</destFileName>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
See https://github.com/juttayaya/karaf/blob/master/karaf3/custom-karaf/custom-karaf-server/pom.xml for full example.
Step 4: Build it
Run mvn clean install
The output file is target/custom-karaf-server.tar.gz and target/custom-karaf-server.zip
Exceptionally structured website offering valuable insights, unigetui software updates guidance helps visitors manage applications effortlessly and securely. The responsive design ensures a pleasant browsing experience on different devices without confusion. Detailed explanations, attractive visuals, and efficient organization make this platform highly impressive and beneficial for modern users everywhere.
ReplyDeleteElectrifyingly structured platform featuring valuable tools, hidusbfmouse response booster features support efficient hardware adjustments for smoother gaming experiences online. Visitors can easily locate information thanks to the organized layout and responsive design across devices. Excellent usability, clear instructions, and professional presentation reflect strong commitment toward maintaining exceptional website quality consistently.
ReplyDeleteHarmonically presented website offering reliable information, mtkclient flashing software capabilities improve smartphone management processes while keeping navigation intuitive and efficient. The platform maintains strong visual appeal alongside highly informative resources for technical audiences. Excellent accessibility, organized sections, and professional updates make this website exceptionally useful and highly recommended among technology enthusiasts globally.
ReplyDelete