On Wed, Mar 2, 2011 at 09:33, Andreas Pieber <[email protected]> wrote: > 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.
Yes, I agree, having all dependencies in maven ensure that your build can be reproducible. I had problems with features that use dependencies not available in any maven repository for example. That make thing difficult to diagnose and work around. > >> 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. >>>>>>>>>> >>>>>>>>>> >>>>>>>> >>>>>> >>>> >>>> >> >> > -- Cheers, Guillaume Nodet ------------------------ Blog: http://gnodet.blogspot.com/ ------------------------ Open Source SOA http://fusesource.com
