Hi Michael,
Using features-maven-plugin 2.2.5, you have to do something like
1. The define a filtered-resources folder in the resources containing
the features.xml file:
<build>
<resources>
<resource>
<directory>src/main/filtered-resources</directory>
<filtered>true</filtered>
</resource>
</resources>
[...]
2. As the packaging is pom (<packaging>pom</packaging>), we need to
execute the dependency plugin "explicitly":
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>filter</id>
<phase>generate-resources</phase>
<goals>
<goal>resources</goal>
</goals>
</execution>
</executions>
</plugin>
3. Now you can define the featuresFile in the create-kar goal on the
process-resources phase:
<plugin>
<groupId>org.apache.karaf.tooling</groupId>
<artifactId>features-maven-plugin</artifactId>
<version>2.2.5</version>
<executions>
<execution>
<id>create-kar</id>
<phase>process-resources</phase>
<goals>
<goal>create-kar</goal>
</goals>
<configuration>
<featuresFile>${basedir}/target/classes/features.xml</featuresFile>
</configuration>
</execution>
</executions>
</plugin>
Regards
JB
On 01/12/2012 02:12 PM, Michael Täschner wrote:
Hi again,
I found more details for the karaf-maven-plugin in the doc and changed
the packaging to "kar". The feature.xml is now read from the
src/main/feature folder and contained only once in the output kar.
Unfortunately now a huge number of bundles are included which are
inherited from parent projects where I only wanted the bundles defined
in the input feature.xml. How can I disable the dependencies from being
included in the feature.xml ? I tried with
"includeTransitiveDependencies" = false but that does not help for
ignoring inherited dependencies.
Thanks and Regards,
Michael
Am 12. Januar 2012 11:44 schrieb Michael Täschner
<[email protected] <mailto:[email protected]>>:
Hi David,
sorry but I am still confused. I had a look at the 3.0.0
users-guide/kar and it says to put the feature.xml into
src/main/resources:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>my.groupId</groupId>
<artifactId>my-kar</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.karaf.tooling</groupId>
<artifactId>karaf-maven-plugin</artifactId>
<version>3.0.0-SNAPSHOT</version>
<executions>
<execution>
<id>features-create-kar</id>
<goals>
<goal>features-create-kar</goal>
</goals>
<configuration>
<featuresFile>src/main/resources/features.xml</featuresFile>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Can you give me an example with src/main/feature or how to use the
plugin with dependencies as features ?
Thanks and Regards,
Michael
2012/1/12 David Jencks <[email protected]
<mailto:[email protected]>>
Hi Michael,
I'm still slightly confused because 3.0.0 does not have a
feature-maven-plugin, it has a karaf-maven-plugin.
Using the 3.0.0 karaf-maven-plugin, put your source feature.xml
in src/main/feature/feature.xml, NOT
src/main/resources/feature.xml. It will get filtered before the
feature generation from maven dependencies takes place.
Use the kar packaging as explained in the 3.0.0 manual.
Unless you need different start-levels for different bundles, or
something like config information in the feature descriptor, you
can have the plugin generate the entire feature.xml from maven
dependencies.
hope this helps
david jencks
On Jan 12, 2012, at 12:35 AM, Michael Täschner wrote:
Hi again,
sorry for any confusion, I hope to clarify my goals and
approach. My goal is to generate kar archive for my
multimodule project to deploy them at runtime as
self-contained features. For this I set up a module for
generating the kar from a filtered feature file to manage the
version information of the project.
I started using "archive-kar" goal of feature-maven-plugin of
3.0.0.SNAPSHOT with the feature.xml residing in
src/main/resources. As the feature.xml has to be filtered
first, I refer to the filtered file as input for the plugin:
<featuresFile>${project.build.outputDirectory}/features.xml</featuresFile>
JB recommended using "create-kar" goal of released karaf
feature-maven-plugin (tried with 2.2.5) and the feature.xml in
the same folder.
The result is the same, that the final kar archive contains 2
feature.xml files causing karaf to register 2 feature
repositories, one for the file copied in from /target/classes
and the other one from /repository/<groupid>/<artifactId> ...
My question was then if one of them could be removed from the
kar file to prevent duplicate feature repository entries.
Feature file (example):
<?xml version="1.0" encoding="UTF-8"?>
<features name="${project.artifactId}-${project.version}"
xmlns="http://karaf.apache.org/xmlns/features/v1.0.0">
<feature name='${project.artifactId}'
version='${project.version}' >
<bundle>mvn:${project.groupId}/common/${project.version}</bundle>
<bundle>mvn:${project.groupId}/businessLogic/${project.version}</bundle>
<bundle>mvn:${project.groupId}/webservice/${project.version}</bundle>
</feature>
</features>
Thanks and Regards,
Michael
2012/1/11 David Jencks <[email protected]
<mailto:[email protected]>>
I can't tell what you are doing since your information is
inconsistent.
If you use the trunk (3.0.0-SNAPSHOT) karaf-maven-plugin
and the kar packaging your "source" feature.xml file
should be in src/main/feature/feature.xml. AFAIK this
works fine.
I don't know anything about 2.2.x.
david jencks
On Jan 11, 2012, at 8:21 AM, Michael Täschner wrote:
Hi JB,
I switched to the create-kar goal of
maven-features-plugin of karaf 2.2.5, yet the issues
remain: If the input feature file uses properties I can
only use the already filtered file in target/classes (I
uses ${project.artifactId}, version, etc.) else the
bundles cannot be resolved. Additionally the resulting
kar still contains two feature files: the one from build
path (target/classes) and the one within /repository,
still resulting in two feature repositories being added
in karaf ?
Did I do something wrong ?
Cheers,
Michael
2012/1/11 Jean-Baptiste Onofré <[email protected]
<mailto:[email protected]>>
Hi Michael,
my comments inline:
1: I use the features-maven-plugin of karaf
3.0.0-SNAPSHOT to
"archive-kar" my feature from a filtered
features.xml file in
src/main/resources/feature. This works fine apart
from the fact that the
resulting kar contains two features.xml, one in
/features (as copied
from /target/classes/feature) and one in the
correct place under
/repository/<groupId>/<__artifactId>-features.xml. How
can I tell the
plugin to ignore the /target/feature/features.xml
in the kar while I
still need it for the build ? Right now karaf
shows two added feature
repositories for the same bundles and I have to
remove one manually.
The create-kar goal is now available with
features-maven-plugin 2.2.5.
http://karaf.apache.org/__manual/latest-2.2.x/users-__guide/kar.html
<http://karaf.apache.org/manual/latest-2.2.x/users-guide/kar.html>
I blogged about it:
http://blog.nanthrax.net/2011/__12/do-you-know-the-apache-__karaf-maven-plugins/
<http://blog.nanthrax.net/2011/12/do-you-know-the-apache-karaf-maven-plugins/>
The create-kar goal take the featuresFile, so it
should include only this one, and you shouldn't use a
resource for that.
2. Undeploy of kar from the karaf /deploy folder
has currently no
effect, neither the feature repo, nor the
features/bundles themselves
are undeployed ? Additionally I wonder what would
happen if I copy a
newer kar of my features to the /deploy folder ?!
It's an expected behavior. Removing a kar file
doesn't remove the features installed (and the
bundles/config associated).
On Karaf 2.2.x, the kar is uncompress in the
local-repo folder, adding a .timestamp.
If you copy a new KAR, the KarDeployer will check if
the kar is newer than the previous .timestamp and so
it will try to update the features/bundles. Else,
nothing will be performed.
Regards
JB
I am grateful for any answer and look forward to
hearing from you.
Kind Regards,
Michael
--
Jean-Baptiste Onofré
[email protected] <mailto:[email protected]>
http://blog.nanthrax.net <http://blog.nanthrax.net/>
Talend - http://www.talend.com <http://www.talend.com/>
--
Jean-Baptiste Onofré
[email protected]
http://blog.nanthrax.net
Talend - http://www.talend.com