I can see the value if you have a legacy feature and you want to create a kar for it, but it may be better to deprecate such a goal and use the kar packaging instead which will also generate the feature descriptor based on maven informations. Leveraging maven is better as: * you don't have to do some fancy stuff we tried to do when generating the features file from the maven dependencies anymore (i.e. mapping non bundles to bundles) * you know you have all the dependencies in your local repo * you can leverage dependendencies information from maven (transitive, optional, provided, etc...) * you have a single point of configuration for the dependencies / versions The only drawback is that you need a maven project for each feature, but that's a consequence of being able to describe the maven dependencies properly.
On Wed, Mar 2, 2011 at 07:34, Jean-Baptiste Onofré <[email protected]> wrote: > I'm not sure to follow you. > > The kar goal is exactly as the add-features-to-repo goal: you start from a > features descriptor (that you wrote by hand) and the goal package the > descriptor and the bundles/dependencies into a repo (kar or local). > > Regards > JB > > On 03/02/2011 07:34 AM, David Jencks wrote: >> >> OK, but you are in a maven environment. You've now disconnected the >> versions in the features.xml which you are presumably maintaining by hand >> from those in your maven poms. I consider that a non-starter. >> >> My point is that you want to construct the features.xml from maven >> dependencies in the first place. At the same time you can construct the >> kar, including (some of) the dependencies. >> >> happy to be convinced otherwise... >> thanks >> david jencks >> >> On Mar 1, 2011, at 10:05 PM, Jean-Baptiste Onofré wrote: >> >>> The main advantage is that it starts from the features descriptor. So you >>> simply define the features what you want to embed in the Kar and the plugin >>> is responsible to download and embed all bundle dependencies. >>> >>> For instance, in place of having: >>> >>> <dependencies> >>> <dependency .../> >>> <dependency .../> >>> <dependency .../> >>> <dependency .../> >>> <dependency .../> >>> <dependency .../> >>> <dependency .../> >>> <dependency .../> >>> <dependency .../> >>> <dependency .../> >>> </dependendies> >>> >>> you simple have in the plugin >>> <configuration> >>> <features>myfeature</features> >>> </configuration> >>> >>> So the POM is light, the version is defined in the features descriptor >>> and it manages transitive dependencies to others features. >>> >>> Regards >>> JB >>> >>> On 03/02/2011 07:00 AM, David Jencks wrote: >>>> >>>> I might understand what the archive-kar goal does now, from the jira >>>> issue. >>>> >>>> I would like to suggest that we eliminate this goal and just use the kar >>>> packaging which generates both the features.xml and the kar from the maven >>>> dependencies. >>>> >>>> When would the archive-kar goal be useful compared to the kar packaging? >>>> >>>> thanks >>>> david jencks >>>> >>>> On Mar 1, 2011, at 9:47 PM, Jean-Baptiste Onofré wrote: >>>> >>>>> Hi guys, >>>>> >>>>> The purpose of the kar goal is to take a features descriptor and >>>>> package the features descriptor and the related bundle into a kar archive >>>>> (that's it's a goal of the features maven plugin). >>>>> The kar deployer create a repo for these bundles. >>>>> I raised KARAF-459 about that. At least, the kar goals should take an >>>>> argument to define if the bundle are embedded in the kar or not. >>>>> But, if the kar doesn't embed the bundle, what's the advantage of using >>>>> a kar more than directly drop the features descriptor into the deploy >>>>> directory :) >>>>> >>>>> Regards >>>>> JB >>>>> >>>>> On 03/01/2011 11:40 PM, David Jencks wrote: >>>>>> >>>>>> I couldn't quite understand what the docs expected. What I think is >>>>>> usable is the (undocumented) kar packaging which ought to look something >>>>>> like this: >>>>>> >>>>>> <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>hibernate-osgi</groupId> >>>>>> <artifactId>hibernate-osgi</artifactId> >>>>>> <version>0.0.1-SNAPSHOT</version> >>>>>> <packaging>kar</packaging> >>>>>> <name>hibernate-osgi</name> >>>>>> >>>>>> <dependencies> >>>>>> <!-- put in the bundles you want in the features.xml and kar as >>>>>> dependencies --> >>>>>> </dependencies> >>>>>> >>>>>> <build> >>>>>> <plugins> >>>>>> <plugin> >>>>>> <groupId>org.apache.karaf.tooling</groupId> >>>>>> <artifactId>features-maven-plugin</artifactId> >>>>>> <version>2.99.99-SNAPSHOT</version> >>>>>> <extensions>true</extensions> >>>>>> </plugin> >>>>>> </plugins> >>>>>> </build> >>>>>> >>>>>> </project> >>>>>> >>>>>> This should generate a features.xml file inside the kar and include >>>>>> the bundles you mentioned as entries in the feature.xml and copied into >>>>>> the >>>>>> kar. >>>>>> >>>>>> thanks >>>>>> david jencks >>>>>> >>>>>> On Mar 1, 2011, at 2:15 PM, karafman wrote: >>>>>> >>>>>>> To test the KAR feature, I compiled the trunk and executed the >>>>>>> following >>>>>>> pom.xml file: >>>>>>> <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>hibernate-osgi</groupId> >>>>>>> <artifactId>hibernate-osgi</artifactId> >>>>>>> <version>0.0.1-SNAPSHOT</version> >>>>>>> <packaging>pom</packaging> >>>>>>> <name>hibernate-osgi</name> >>>>>>> >>>>>>> <build> >>>>>>> <plugins> >>>>>>> <plugin> >>>>>>> <groupId>org.apache.karaf.tooling</groupId> >>>>>>> <artifactId>features-maven-plugin</artifactId> >>>>>>> <version>2.99.99-SNAPSHOT</version> >>>>>>> <executions> >>>>>>> <execution> >>>>>>> <id>archive-kar</id> >>>>>>> <goals> >>>>>>> >>>>>>> <goal>archive-kar</goal> >>>>>>> </goals> >>>>>>> <configuration> >>>>>>> >>>>>>> <featuresFile>src/main/resources/features.xml</featuresFile> >>>>>>> </configuration> >>>>>>> </execution> >>>>>>> </executions> >>>>>>> </plugin> >>>>>>> </plugins> >>>>>>> </build> >>>>>>> >>>>>>> </project> >>>>>>> >>>>>>> Using this features.xml file: >>>>>>> >>>>>>> <?xml version="1.0" encoding="UTF-8"?> >>>>>>> <features> >>>>>>> <feature name="hibernate" version="3.3.2.GA"> >>>>>>> >>>>>>> >>>>>>> <bundle>mvn:javax.xml.stream/com.springsource.javax.xml.stream/1.0.1</bundle> >>>>>>> >>>>>>> <bundle>mvn:org.dom4j/com.springsource.org.dom4j/1.6.1</bundle> >>>>>>> >>>>>>> >>>>>>> <bundle>mvn:org.jboss.javassist/com.springsource.javassist/3.9.0.GA</bundle> >>>>>>> >>>>>>> >>>>>>> <bundle>mvn:javax.persistence/com.springsource.javax.persistence/1.0.0</bundle> >>>>>>> >>>>>>> <bundle>mvn:org.antlr/com.springsource.antlr/2.7.7</bundle> >>>>>>> >>>>>>> >>>>>>> <bundle>mvn:net.sourceforge.cglib/com.springsource.net.sf.cglib/2.2.0</bundle> >>>>>>> >>>>>>> >>>>>>> <bundle>mvn:org.apache.commons/com.springsource.org.apache.commons.collections/3.2.1</bundle> >>>>>>> >>>>>>> >>>>>>> <bundle>mvn:org.apache.commons/com.springsource.org.apache.commons.logging/1.1.1</bundle> >>>>>>> >>>>>>> >>>>>>> <bundle>mvn:org.objectweb.asm/com.springsource.org.objectweb.asm/1.5.3</bundle> >>>>>>> >>>>>>> >>>>>>> <bundle>mvn:org.objectweb.asm/com.springsource.org.objectweb.asm.attrs/1.5.3</bundle> >>>>>>> >>>>>>> <bundle>mvn:org.hibernate/com.springsource.org.hibernate/3.3.2.GA</bundle> >>>>>>> >>>>>>> >>>>>>> <bundle>mvn:org.hibernate/com.springsource.org.hibernate.annotations/3.3.1.ga</bundle> >>>>>>> >>>>>>> >>>>>>> <bundle>mvn:org.hibernate/com.springsource.org.hibernate.annotations.common/3.3.0.ga</bundle> >>>>>>> >>>>>>> >>>>>>> <bundle>mvn:org.hibernate/com.springsource.org.hibernate.ejb/3.3.2.GA</bundle> >>>>>>> </feature> >>>>>>> </features> >>>>>>> >>>>>>> The .kar file created didn't contain any of the bundles, just the >>>>>>> features.xml file. The expected behavior is to (according to >>>>>>> http://karaf.apache.org/manual/2.2.1-SNAPSHOT/users-guide/kar.html): >>>>>>> The kar-archive goal: >>>>>>> 1. Reads all features specified in the features descriptor. >>>>>>> 2. For each feature, it resolves the bundles defined in the feature. >>>>>>> 3. All bundles are packaged into the kar archive. >>>>>>> >>>>>>> So, it appears the KAR feature is not doing what is stated in the >>>>>>> docs. I >>>>>>> suggest we either change the documentation, or the archive-kar goal. >>>>>>> >>>>>>> ----- >>>>>>> Karafman >>>>>>> Slayer of the JEE >>>>>>> Pounder of the Perl Programmer >>>>>>> >>>>>>> -- >>>>>>> View this message in context: >>>>>>> http://karaf.922171.n3.nabble.com/KAR-feature-not-doing-what-the-docs-say-it-should-tp2606973p2606973.html >>>>>>> Sent from the Karaf - Dev mailing list archive at Nabble.com. >>>>>> >>>>>> >>>> >> > -- Cheers, Guillaume Nodet ------------------------ Blog: http://gnodet.blogspot.com/ ------------------------ Open Source SOA http://fusesource.com
