Just FYI, I deployed a new 3.0.0-SNAPSHOT this morning which fix the
issue with the karaf-maven-plugin.
Regards
JB
On 01/19/2012 01:12 PM, Michael Täschner wrote:
Hi JB,
have you read my previous response? Using the "create-kar" of
feature-maven-plugin of karaf 2.2.x as you described above, adds the
feature.xml twice to the resulting kar file. As a result two feature
repositories are registered in karaf.
Right now karaf-maven-plugin 3.0.0-SNAPSHOT seems to be broken so I
tried again with the feature-maven-plugin, but the problem persists.
Do you have an idea how to prevent this duplication ?
Thanks and Regards,
Michael
Am 13. Januar 2012 11:18 schrieb Michael Täschner
<[email protected] <mailto:[email protected]>>:
Hi JB,
yes I also got the create-kar goal of feature-maven-plugin of karaf
2.2.x working as you describe above. As a result though the
feature.xml is added twice to the resulting kar file, once in root
folder (because of being available in target/classes) and secondly
within the /repository path because it is defined as feature
description within the feature.xml. As a result on deployment the
feature url/repository is added twice to the karaf container which
was my original question.
Thanks and Regards,
Michael
2012/1/12 Jean-Baptiste Onofré <[email protected]
<mailto:[email protected]>>
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]>
<mailto:m.taeschner@__googlemail.com
<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
<http://maven.apache.org/POM/4.0.0>"
xmlns:xsi="http://www.w3.org/__2001/XMLSchema-instance
<http://www.w3.org/2001/XMLSchema-instance>"
xsi:schemaLocation="http://__maven.apache.org/POM/4.0.0
<http://maven.apache.org/POM/4.0.0>
http://maven.apache.org/xsd/__maven-4.0.0.xsd
<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]>
<mailto:[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
<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]>
<mailto:[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]>
<mailto:[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>
<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/>
<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]>
<mailto:[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] <mailto:[email protected]>
http://blog.nanthrax.net
Talend - http://www.talend.com
--
Jean-Baptiste Onofré
[email protected]
http://blog.nanthrax.net
Talend - http://www.talend.com