Am 02.03.2011 17:55, schrieb karafman:
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.

+1, it doesn't need a bank for such an environment. :)

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.

Reply via email to