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 >
