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.
>>>>>>>>>
>>>>>>>>>
>>>>>>>
>>>>>
>>>
>>>
>
>

Reply via email to