karaf-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Täschner <m.taesch...@googlemail.com>
Subject Re: Duplicate feature repository entry using archive-kar to build deployable applications
Date Thu, 19 Jan 2012 12:12:56 GMT
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 <
m.taeschner@googlemail.com>:

> 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é <jb@nanthrax.net>
>
>> 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<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<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 <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<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>
>>>>>
>>>>>                <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é
>>>>>                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