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]>: > 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]> > >> 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:m.taeschner@**googlemail.com<[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]**>> >>> >>> >>> 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]**>> >>>> >>>> >>>> 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> >>>>> >>>>> <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]> >>>>> 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 >> > >
