| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| // |
| |
| === Archetypes |
| |
| Karaf provides archetypes to easily create commands, manage features or repository and create a kar archive. |
| This section describes each of them and explain How to use it. |
| |
| ==== Create a command (karaf-command-archetype) |
| |
| This archetype creates a Maven skeleton project that you will use to develop new Karaf commands. |
| |
| ===== Command line |
| |
| Using the command line, we can create our project: |
| |
| ---- |
| mvn archetype:generate \ |
| -DarchetypeGroupId=org.apache.karaf.archetypes \ |
| -DarchetypeArtifactId=karaf-command-archetype \ |
| -DarchetypeVersion=4.0.0 \ |
| -DgroupId=com.mycompany \ |
| -DartifactId=com.mycompany.command \ |
| -Dversion=1.0-SNAPSHOT \ |
| -Dpackage=com.mycompany.package |
| ---- |
| |
| ===== Additional parameters |
| |
| During the maven creation process, additional questions will be asked on the console : |
| |
| * Define value for property 'command': the name of the command (list, add-item, ...) |
| * Define value for property 'description': provide a description of the command that you want to create. |
| This description will be displayed in the Karaf console when the parameter --help is used |
| * Define value for property 'scope': this value represents the family name to which the command belongs |
| (features, osgi, admin, jaas, ...) |
| |
| ===== Result of Maven command execution |
| |
| ---- |
| [INFO] Scanning for projects... |
| [INFO] |
| [INFO] ------------------------------------------------------------------------ |
| [INFO] Building Maven Stub Project (No POM) 1 |
| [INFO] ------------------------------------------------------------------------ |
| [INFO] |
| [INFO] >>> maven-archetype-plugin:2.1:generate (default-cli) @ standalone-pom >>> |
| [INFO] |
| [INFO] <<< maven-archetype-plugin:2.1:generate (default-cli) @ standalone-pom <<< |
| [INFO] |
| [INFO] --- maven-archetype-plugin:2.1:generate (default-cli) @ standalone-pom --- |
| [INFO] Generating project in Interactive mode |
| [INFO] Archetype repository missing. Using the one from [org.apache.karaf.archetypes:karaf-command-archetype:4.0.0] found in catalog local |
| [INFO] Using property: groupId = com.mycompany |
| [INFO] Using property: artifactId = com.mycompany.command |
| [INFO] Using property: version = 1.0-SNAPSHOT |
| [INFO] Using property: package = com.mycompany.package |
| Define value for property 'command': : list |
| Define value for property 'description': : List sample command |
| Define value for property 'scope': : my |
| Confirm properties configuration: |
| groupId: com.mycompany |
| artifactId: com.mycompany.command |
| version: 1.0-SNAPSHOT |
| package: com.mycompany.package |
| command: list |
| description: List sample command |
| scope: my |
| Y: : |
| [INFO] ---------------------------------------------------------------------------- |
| [INFO] Using following parameters for creating project from Archetype: karaf-command-archetype:4.0.0 |
| [INFO] ---------------------------------------------------------------------------- |
| [INFO] Parameter: groupId, Value: com.mycompany |
| [INFO] Parameter: artifactId, Value: com.mycompany.command |
| [INFO] Parameter: version, Value: 1.0-SNAPSHOT |
| [INFO] Parameter: package, Value: com.mycompany.package |
| [INFO] Parameter: packageInPathFormat, Value: com/mycompany/package |
| [INFO] Parameter: package, Value: com.mycompany.package |
| [INFO] Parameter: version, Value: 1.0-SNAPSHOT |
| [INFO] Parameter: groupId, Value: com.mycompany |
| [INFO] Parameter: scope, Value: my |
| [INFO] Parameter: description, Value: List sample command |
| [INFO] Parameter: command, Value: list |
| [INFO] Parameter: artifactId, Value: com.mycompany.command |
| [WARNING] Don't override file /com.mycompany.command/pom.xml |
| [INFO] project created from Archetype in dir: /com.mycompany.command |
| [INFO] ------------------------------------------------------------------------ |
| [INFO] BUILD SUCCESS |
| [INFO] ------------------------------------------------------------------------ |
| [INFO] Total time: 27.204s |
| [INFO] Finished at: Mon Dec 19 09:38:49 CET 2011 |
| [INFO] Final Memory: 7M/111M |
| [INFO] ------------------------------------------------------------------------ |
| ---- |
| |
| Next, you can import your project in Eclipse/IntelliJ and developp the Karaf command. |
| |
| ==== Create an OSGi bundle (karaf-bundle-archetype) |
| |
| This archetype creates a Maven skeleton to create an OSGi bundle, including a bundle Activator (a special callback |
| class for bundle start/stop). |
| |
| ===== Command line |
| |
| Using the command line, we can create our project: |
| |
| ---- |
| mvn archetype:generate \ |
| -DarchetypeGroupId=org.apache.karaf.archetypes \ |
| -DarchetypeArtifactId=karaf-bundle-archetype \ |
| -DarchetypeVersion=4.0.0 \ |
| -DgroupId=com.mycompany \ |
| -DartifactId=com.mycompany.bundle \ |
| -Dversion=1.0-SNAPSHOT \ |
| -Dpackage=com.mycompany.package |
| ---- |
| |
| ===== Result of Maven command execution |
| |
| ---- |
| [INFO] Scanning for projects... |
| [INFO] |
| [INFO] ------------------------------------------------------------------------ |
| [INFO] Building Maven Stub Project (No POM) 1 |
| [INFO] ------------------------------------------------------------------------ |
| [INFO] |
| [INFO] >>> maven-archetype-plugin:2.1:generate (default-cli) @ standalone-pom >>> |
| [INFO] |
| [INFO] <<< maven-archetype-plugin:2.1:generate (default-cli) @ standalone-pom <<< |
| [INFO] |
| [INFO] --- maven-archetype-plugin:2.1:generate (default-cli) @ standalone-pom --- |
| [INFO] Generating project in Interactive mode |
| [INFO] Archetype repository missing. Using the one from [org.apache.karaf.archetypes:karaf-bundle-archetype:4.0.0] found in catalog local |
| [INFO] Using property: groupId = com.mycompany |
| [INFO] Using property: artifactId = com.mycompany.bundle |
| [INFO] Using property: version = 1.0-SNAPSHOT |
| [INFO] Using property: package = com.mycompany.package |
| Confirm properties configuration: |
| groupId: com.mycompany |
| artifactId: com.mycompany.bundle |
| version: 1.0-SNAPSHOT |
| package: com.mycompany.package |
| Y: : |
| [INFO] ---------------------------------------------------------------------------- |
| [INFO] Using following parameters for creating project from Archetype: karaf-bundle-archetype:4.0.0 |
| [INFO] ---------------------------------------------------------------------------- |
| [INFO] Parameter: groupId, Value: com.mycompany |
| [INFO] Parameter: artifactId, Value: com.mycompany.bundle |
| [INFO] Parameter: version, Value: 1.0-SNAPSHOT |
| [INFO] Parameter: package, Value: com.mycompany.package |
| [INFO] Parameter: packageInPathFormat, Value: com/mycompany/package |
| [INFO] Parameter: package, Value: com.mycompany.package |
| [INFO] Parameter: version, Value: 1.0-SNAPSHOT |
| [INFO] Parameter: groupId, Value: com.mycompany |
| [INFO] Parameter: artifactId, Value: com.mycompany.bundle |
| [INFO] project created from Archetype in dir: /com.mycompany.bundle |
| [INFO] ------------------------------------------------------------------------ |
| [INFO] BUILD SUCCESS |
| [INFO] ------------------------------------------------------------------------ |
| [INFO] Total time: 7.895s |
| [INFO] Finished at: Mon Dec 19 11:41:44 CET 2011 |
| [INFO] Final Memory: 8M/111M |
| [INFO] ------------------------------------------------------------------------ |
| ---- |
| |
| ==== Create an OSGi blueprint bundle (karaf-blueprint-archetype) |
| |
| This archetype creates a Maven skeleton project to create an OSGi blueprint bundle, including a sample bean exposed as |
| an OSGi service in the blueprint XML descriptor. |
| |
| ===== Command line |
| |
| Using the command line, we can create our project: |
| |
| ---- |
| mvn archetype:generate \ |
| -DarchetypeGroupId=org.apache.karaf.archetypes \ |
| -DarchetypeArtifactId=karaf-blueprint-archetype \ |
| -DarchetypeVersion=4.0.0 \ |
| -DgroupId=com.mycompany \ |
| -DartifactId=com.mycompany.blueprint \ |
| -Dversion=1.0-SNAPSHOT \ |
| -Dpackage=com.mycompany.blueprint |
| ---- |
| |
| ===== Result of Maven command execution |
| |
| ---- |
| [INFO] Scanning for projects... |
| [INFO] |
| [INFO] ------------------------------------------------------------------------ |
| [INFO] Building Maven Stub Project (No POM) 1 |
| [INFO] ------------------------------------------------------------------------ |
| [INFO] |
| [INFO] >>> maven-archetype-plugin:2.1:generate (default-cli) @ standalone-pom >>> |
| [INFO] |
| [INFO] <<< maven-archetype-plugin:2.1:generate (default-cli) @ standalone-pom <<< |
| [INFO] |
| [INFO] --- maven-archetype-plugin:2.1:generate (default-cli) @ standalone-pom --- |
| [INFO] Generating project in Interactive mode |
| [INFO] Archetype repository missing. Using the one from [org.apache.karaf.archetypes:karaf-blueprint-archetype:4.0.0] found in catalog local |
| [INFO] Using property: groupId = com.mycompany |
| [INFO] Using property: artifactId = com.mycompany.blueprint |
| [INFO] Using property: version = 1.0-SNAPSHOT |
| [INFO] Using property: package = com.mycompany.package |
| Confirm properties configuration: |
| groupId: com.mycompany |
| artifactId: com.mycompany.blueprint |
| version: 1.0-SNAPSHOT |
| package: com.mycompany.package |
| Y: : |
| [INFO] ---------------------------------------------------------------------------- |
| [INFO] Using following parameters for creating project from Archetype: karaf-blueprint-archetype:4.0.0 |
| [INFO] ---------------------------------------------------------------------------- |
| [INFO] Parameter: groupId, Value: com.mycompany |
| [INFO] Parameter: artifactId, Value: com.mycompany.blueprint |
| [INFO] Parameter: version, Value: 1.0-SNAPSHOT |
| [INFO] Parameter: package, Value: com.mycompany.package |
| [INFO] Parameter: packageInPathFormat, Value: com/mycompany/package |
| [INFO] Parameter: package, Value: com.mycompany.package |
| [INFO] Parameter: version, Value: 1.0-SNAPSHOT |
| [INFO] Parameter: groupId, Value: com.mycompany |
| [INFO] Parameter: artifactId, Value: com.mycompany.blueprint |
| [INFO] project created from Archetype in dir: /com.mycompany.blueprint |
| [INFO] ------------------------------------------------------------------------ |
| [INFO] BUILD SUCCESS |
| [INFO] ------------------------------------------------------------------------ |
| [INFO] Total time: 1:06:36.741s |
| [INFO] Finished at: Mon Dec 19 13:04:43 CET 2011 |
| [INFO] Final Memory: 7M/111M |
| [INFO] ------------------------------------------------------------------------ |
| ---- |
| |
| ==== Create a features XML (karaf-feature-archetype) |
| |
| This archetype creates a Maven skeleton project which create a features XML file, using the dependencies that you define |
| in the POM. |
| |
| ===== Command line |
| |
| Using the command line, we can create our project: |
| |
| ---- |
| mvn archetype:generate \ |
| -DarchetypeGroupId=org.apache.karaf.archetypes \ |
| -DarchetypeArtifactId=karaf-feature-archetype \ |
| -DarchetypeVersion=4.0.0 \ |
| -DgroupId=my.company \ |
| -DartifactId=my.company.feature \ |
| -Dversion=1.0-SNAPSHOT \ |
| -Dpackage=my.company.package |
| ---- |
| |
| ===== Result of maven command execution |
| |
| ---- |
| [INFO] Scanning for projects... |
| [INFO] |
| [INFO] ------------------------------------------------------------------------ |
| [INFO] Building Maven Stub Project (No POM) 1 |
| [INFO] ------------------------------------------------------------------------ |
| [INFO] |
| [INFO] >>> maven-archetype-plugin:2.1:generate (default-cli) @ standalone-pom >>> |
| [INFO] |
| [INFO] <<< maven-archetype-plugin:2.1:generate (default-cli) @ standalone-pom <<< |
| [INFO] |
| [INFO] --- maven-archetype-plugin:2.1:generate (default-cli) @ standalone-pom --- |
| [INFO] Generating project in Interactive mode |
| [INFO] Archetype repository missing. Using the one from [org.apache.karaf.archetypes:karaf-feature-archetype:4.0.0] found in catalog local |
| [INFO] Using property: groupId = com.mycompany |
| [INFO] Using property: artifactId = com.mycompany.feature |
| [INFO] Using property: version = 1.0-SNAPSHOT |
| [INFO] Using property: package = com.mycompany.package |
| Confirm properties configuration: |
| groupId: com.mycompany |
| artifactId: com.mycompany.feature |
| version: 1.0-SNAPSHOT |
| package: com.mycompany.package |
| Y: : |
| [INFO] ---------------------------------------------------------------------------- |
| [INFO] Using following parameters for creating project from Archetype: karaf-feature-archetype:4.0.0 |
| [INFO] ---------------------------------------------------------------------------- |
| [INFO] Parameter: groupId, Value: com.mycompany |
| [INFO] Parameter: artifactId, Value: com.mycompany.feature |
| [INFO] Parameter: version, Value: 1.0-SNAPSHOT |
| [INFO] Parameter: package, Value: com.mycompany.package |
| [INFO] Parameter: packageInPathFormat, Value: com/mycompany/package |
| [INFO] Parameter: package, Value: com.mycompany.package |
| [INFO] Parameter: version, Value: 1.0-SNAPSHOT |
| [INFO] Parameter: groupId, Value: com.mycompany |
| [INFO] Parameter: artifactId, Value: com.mycompany.feature |
| [INFO] project created from Archetype in dir: /com.mycompany.feature |
| [INFO] ------------------------------------------------------------------------ |
| [INFO] BUILD SUCCESS |
| [INFO] ------------------------------------------------------------------------ |
| [INFO] Total time: 7.262s |
| [INFO] Finished at: Mon Dec 19 13:20:00 CET 2011 |
| [INFO] Final Memory: 7M/111M |
| [INFO] ------------------------------------------------------------------------ |
| ---- |
| |
| ==== Create a KAR file (karaf-kar-archetype) |
| |
| This archetype creates a Maven skeleton project including a features XML sample, used to generate a KAR file. |
| |
| ===== Command line |
| |
| Using the command line, we can create our project: |
| |
| ---- |
| mvn archetype:generate \ |
| -DarchetypeGroupId=org.apache.karaf.archetypes \ |
| -DarchetypeArtifactId=karaf-kar-archetype \ |
| -DarchetypeVersion=4.0.0 \ |
| -DgroupId=com.mycompany \ |
| -DartifactId=com.mycompany.kar \ |
| -Dversion=1.0-SNAPSHOT \ |
| -Dpackage=com.mycompany.package |
| ---- |
| |
| ===== Result of maven command execution |
| |
| ---- |
| [INFO] Scanning for projects... |
| [INFO] |
| [INFO] ------------------------------------------------------------------------ |
| [INFO] Building Maven Stub Project (No POM) 1 |
| [INFO] ------------------------------------------------------------------------ |
| [INFO] |
| [INFO] >>> maven-archetype-plugin:2.1:generate (default-cli) @ standalone-pom >>> |
| [INFO] |
| [INFO] <<< maven-archetype-plugin:2.1:generate (default-cli) @ standalone-pom <<< |
| [INFO] |
| [INFO] --- maven-archetype-plugin:2.1:generate (default-cli) @ standalone-pom --- |
| [INFO] Generating project in Interactive mode |
| [INFO] Archetype repository missing. Using the one from [org.apache.karaf.archetypes:karaf-kar-archetype:4.0.0] found in catalog local |
| [INFO] Using property: groupId = com.mycompany |
| [INFO] Using property: artifactId = com.mycompany.kar |
| [INFO] Using property: version = 1.0-SNAPSHOT |
| [INFO] Using property: package = com.mycompany.package |
| Confirm properties configuration: |
| groupId: com.mycompany |
| artifactId: com.mycompany.kar |
| version: 1.0-SNAPSHOT |
| package: com.mycompany.package |
| Y: : |
| [INFO] ---------------------------------------------------------------------------- |
| [INFO] Using following parameters for creating project from Archetype: karaf-kar-archetype:4.0.0 |
| [INFO] ---------------------------------------------------------------------------- |
| [INFO] Parameter: groupId, Value: com.mycompany |
| [INFO] Parameter: artifactId, Value: com.mycompany.kar |
| [INFO] Parameter: version, Value: 1.0-SNAPSHOT |
| [INFO] Parameter: package, Value: com.mycompany.package |
| [INFO] Parameter: packageInPathFormat, Value: com/mycompany/package |
| [INFO] Parameter: package, Value: com.mycompany.package |
| [INFO] Parameter: version, Value: 1.0-SNAPSHOT |
| [INFO] Parameter: groupId, Value: com.mycompany |
| [INFO] Parameter: artifactId, Value: com.mycompany.kar |
| [INFO] project created from Archetype in dir: /com.mycompany.kar |
| [INFO] ------------------------------------------------------------------------ |
| [INFO] BUILD SUCCESS |
| [INFO] ------------------------------------------------------------------------ |
| [INFO] Total time: 7.465s |
| [INFO] Finished at: Mon Dec 19 13:30:15 CET 2011 |
| [INFO] Final Memory: 8M/157M |
| [INFO] ------------------------------------------------------------------------ |
| ---- |