On Wed, Mar 2, 2011 at 9:27 AM, David Jencks <[email protected]> wrote: > 1. Supporters of the "don't need maven dependencies" idea almost had me > convinced for a while until I realized this would really be abusing maven. > It would be OK for an ant task where there's no expectation of any structure, > but one of the basic principles that makes maven work is that the pom > describes all the outside dependencies. Generally violating this principal > causes lots of unanticipated problems when you try to reason about the broken > pom downstream.
I'm not with you here. You still have to define the versions somewhere; I see the features.xml more as an extension than an replacement. > 2. The kar packaging already does a lot of things including extending an > existing features.xml (so you can have config properties etc) and including > arbitrary resources that get unpacked into the karaf server. I think if > there's documentation in a features.xml file it should be in elements so it > can be reasoned about and possibly displayed in the console. I'm sure there > are more things we can get it to do, and specific examples would really help. But still, I have no problem if we allow both possibilities, but it should always be possible (imho) to create a kar file based on a features.xml Kind regards, Andreas > > thanks > david jencks > > On Mar 1, 2011, at 11:52 PM, Adrian Trenaman wrote: > >> Just to pitch in on this: I really like to write my own feature files for >> Karaf. Generally, I want to create one features file that pulls together >> artifacts from a whole set of projects, in a way that creates features as >> meaningful 'applications' that an ops guy can install/uninstall. While I >> appreciate that we could auto-generate the features file from a Maven POM, I >> prefer to *design* my features so that they're ergonomic. And, as has been >> mentioned earlier on this trail, hand-crafted features allow me to add >> config, documentation, etc. Any tooling we can write that helps the >> developer do this in an easy, no fuss way (and maybe spots any missing >> dependencies) should be preferred over a 'generate-from-Maven' approach, >> IMHO. >> >> Cheers, >> Ade >> >> ----- Original Message ----- >> From: Andreas Pieber [mailto:[email protected]] >> Sent: Wednesday, March 02, 2011 02:33 AM >> To: [email protected] <[email protected]> >> Subject: Re: KAR feature not doing what the docs say it should >> >> Hey David >> >> On Wed, Mar 2, 2011 at 8:09 AM, David Jencks <[email protected]> wrote: >>> I'm trying to understand why you want to maintain a features.xml by hand so >>> that the versions in it will differ from those in your maven project rather >>> than generating the features.xml from your maven project so the versions >>> will match up. >> >> I'm not sure why they should? You can easily wire them together by >> filter the features.xml and use something like ${xyz.version} in your >> features.xml. In addition you do not always want to use the same >> artifacts as you reference in your pom. E.g. if you wrap Apache >> Wicket, you typically have one package with all deps, but in the src >> you really want to reference the single packages to help maven finding >> sources and jdoc. >> >>> I agree with KARAF-459 to the extent that if we keep the archive-kar goal >>> it should use more info from the supplied features.xml. I am arguing that >>> we should not keep it. Why is it a good idea to encourage people to get >>> their dependencies out of sync? >> >> I don't think that we encourage them to do so, but using the >> features.xml it is much easier to add config files, configurations, >> required features, other repositories... All of that have to be >> configured otherwise anyhow in the maven plugin and I think this will >> make it much more complex. >> >>> If you convince me this is a good idea :-) then I think making the kar >>> packaging so it can start with a (possibly partial) features.xml, add maven >>> dependencies to it, and put all the resulting dependencies into the >>> generated kar would be a good idea. I think this would solve KARAF-459? >> >> I've tried ;) >> >> Kind regards, >> Andreas >> >>> >>> I don't know what the add-features-to-repo goal does yet so I'm not sure if >>> I think it's useful :-) >>> >>> thanks >>> david jencks >>> >>> On Mar 1, 2011, at 10:34 PM, Jean-Baptiste Onofré 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. >>>>>>>>> >>>>>>>>> >>>>>>> >>>>> >>> >>> > >
