Guillaume Nodet wrote: > > It's more than that. If you end up being offline or with no internet > access for example (and we have customers that need to build offline > for example), not having all dependencies as maven dependencies is > really a problem, as you can't rely on any tooling anymore to grab all > the dependencies. > > On Wed, Mar 2, 2011 at 11:30, Andreas Pieber wrote: >> Well, but does it really matter if maven fails with: "artifact not >> found" or if the karaf-maven-plugin fails with "artifact not found"? >> >> Kind regards, >> Andreas >> >> On Wed, Mar 2, 2011 at 11:25 AM, Guillaume Nodet wrote: >>> On Wed, Mar 2, 2011 at 09:33, Andreas Pieber wrote: >>>> On Wed, Mar 2, 2011 at 9:27 AM, David Jencks 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] >>>>>> 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 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: >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> you simple have in the plugin >>>>>>>>>> >>>>>>>>>> myfeature >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> 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: >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>> 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"> >>>>>>>>>>>>> >>>>>>>>>>>>> 4.0.0 >>>>>>>>>>>>> >>>>>>>>>>>>> hibernate-osgi >>>>>>>>>>>>> hibernate-osgi >>>>>>>>>>>>> 0.0.1-SNAPSHOT >>>>>>>>>>>>> kar >>>>>>>>>>>>> hibernate-osgi >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> org.apache.karaf.tooling >>>>>>>>>>>>> features-maven-plugin >>>>>>>>>>>>> 2.99.99-SNAPSHOT >>>>>>>>>>>>> true >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> 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: >>>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>>>> 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"> >>>>>>>>>>>>>> >>>>>>>>>>>>>> 4.0.0 >>>>>>>>>>>>>> >>>>>>>>>>>>>> hibernate-osgi >>>>>>>>>>>>>> hibernate-osgi >>>>>>>>>>>>>> 0.0.1-SNAPSHOT >>>>>>>>>>>>>> pom >>>>>>>>>>>>>> hibernate-osgi >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> org.apache.karaf.tooling >>>>>>>>>>>>>> features-maven-plugin >>>>>>>>>>>>>> 2.99.99-SNAPSHOT >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> archive-kar >>>>>>>>>>>>>> >>>>>>>>>>>>>> archive-kar >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> src/main/resources/features.xml >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Using this features.xml file: >>>>>>>>>>>>>> >>>>>>>>>>>>>> <?xml version="1.0" encoding="UTF-8"?> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> mvn:javax.xml.stream/com.springsource.javax.xml.stream/1.0.1 >>>>>>>>>>>>>> >>>>>>>>>>>>>> mvn:org.dom4j/com.springsource.org.dom4j/1.6.1 >>>>>>>>>>>>>> >>>>>>>>>>>>>> mvn:org.jboss.javassist/com.springsource.javassist/3.9.0.GA >>>>>>>>>>>>>> >>>>>>>>>>>>>> mvn:javax.persistence/com.springsource.javax.persistence/1.0.0 >>>>>>>>>>>>>> mvn:org.antlr/com.springsource.antlr/2.7.7 >>>>>>>>>>>>>> >>>>>>>>>>>>>> mvn:net.sourceforge.cglib/com.springsource.net.sf.cglib/2.2.0 >>>>>>>>>>>>>> >>>>>>>>>>>>>> mvn:org.apache.commons/com.springsource.org.apache.commons.collections/3.2.1 >>>>>>>>>>>>>> >>>>>>>>>>>>>> mvn:org.apache.commons/com.springsource.org.apache.commons.logging/1.1.1 >>>>>>>>>>>>>> >>>>>>>>>>>>>> mvn:org.objectweb.asm/com.springsource.org.objectweb.asm/1.5.3 >>>>>>>>>>>>>> >>>>>>>>>>>>>> mvn:org.objectweb.asm/com.springsource.org.objectweb.asm.attrs/1.5.3 >>>>>>>>>>>>>> >>>>>>>>>>>>>> mvn:org.hibernate/com.springsource.org.hibernate/3.3.2.GA >>>>>>>>>>>>>> >>>>>>>>>>>>>> mvn:org.hibernate/com.springsource.org.hibernate.annotations/3.3.1.ga >>>>>>>>>>>>>> >>>>>>>>>>>>>> mvn:org.hibernate/com.springsource.org.hibernate.annotations.common/3.3.0.ga >>>>>>>>>>>>>> >>>>>>>>>>>>>> mvn:org.hibernate/com.springsource.org.hibernate.ejb/3.3.2.GA >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> 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 >>> >> > > > > -- > Cheers, > Guillaume Nodet > ------------------------ > Blog: http://gnodet.blogspot.com/ > ------------------------ > Open Source SOA > http://fusesource.com >
+1 to Guillaume's point I can think of at least three common use-cases where an instance of Karaf would not be able to use a remote maven repo. 1) A highly secure environment, for example a bank's intranet. While the initial development will be done with access to a maven-repository, the intranet may not have any connection to the internet for security reasons. So, being able to distribute the initial application and then subsequent versions of the application via a KAR would allow the banks to keep thier stuff up to date. If you look at the Apache ACE project, they address this sort of use-case. 2) An installation in an underdeveloped area with poor internet access. Think of something like a government intranet in a 3rd world country. Its foreseeable that while they would have access to a maven repository, the download times would be so great that it wouldn't be viable to use them. In this case, again, being able to distribute a KAR on a flash-drive, via ACE or the like would allow them to keep thier applications up-to-date. 3) An embedded system. Currently there is an effort to create an embedded karaf. I can't imagine all embedded instances of Karaf would be connected to the internet. If the KAR feature were available in the embedded instance, this would be a good way of sending updates to the software. Admittedly, this is a pretty questionable use-case, but one that is foreseeable. ----- 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-tp2606973p2614716.html Sent from the Karaf - Dev mailing list archive at Nabble.com.
