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]>: > 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 <[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"> >> <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]> >> >>> 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]> >>> >>>> 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é >>>> [email protected] >>>> http://blog.nanthrax.net >>>> Talend - http://www.talend.com >>>> >>> >>> >>> >> >> >
