karaf-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jean-Baptiste Onofré ...@nanthrax.net>
Subject Re: Duplicate feature repository entry using archive-kar to build deployable applications
Date Thu, 12 Jan 2012 20:31:31 GMT
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
> <m.taeschner@googlemail.com <mailto:m.taeschner@googlemail.com>>:
>
>     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 <david_jencks@yahoo.com
>     <mailto:david_jencks@yahoo.com>>
>
>         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 <david_jencks@yahoo.com
>>         <mailto:david_jencks@yahoo.com>>
>>
>>             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é <jb@nanthrax.net
>>>             <mailto:jb@nanthrax.net>>
>>>
>>>                 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é
>>>                 jbonofre@apache.org <mailto:jbonofre@apache.org>
>>>                 http://blog.nanthrax.net <http://blog.nanthrax.net/>
>>>                 Talend - http://www.talend.com <http://www.talend.com/>
>>>
>>>
>>
>>
>
>
>

-- 
Jean-Baptiste Onofré
jbonofre@apache.org
http://blog.nanthrax.net
Talend - http://www.talend.com

Mime
View raw message