camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Glen Mazza (JIRA)" <>
Subject [jira] Commented: (CAMEL-423) Add jars required to run binary distribution samples without maven.
Date Thu, 03 Apr 2008 03:35:32 GMT


Glen Mazza commented on CAMEL-423:

Are you sure this is really necessary?  You might get 90% of what you're looking for simply
by including Ant build files with commented-out declarations instructing the user precisely
which versions of which products they would need to download, something like:

<property name="cxf.libs" value="{place location of CXF 2.0.4/lib here}"/>

Such a design would be nicely self-documenting, letting Ant users know which versions are
being used and which JARs are precisely needed for each sample (and later, their own work)
without them needing to learn Maven.  The version information in the build.xml files can be
easily updated along with updates to the POM's.

My main concerns about including these JARs:

1.)  Anyone not wishing to manually download all those JARs can use Maven anyway.  If the
concern is (1) that some people don't want to manually download JARs, but (2) do not know
how to use Maven, I don't think that has much validity because the skills needed to work with
Maven is much less than the skills needed to work intelligently with Camel, ActiveMQ and CXF.
 (i.e., saying "I know how to develop web services and work with message queues but can't
work with Maven" is kind of like saying "I know calculus but can't understand algebra."  You
don't need to worry about such people, because they almost don't exist.)

2.)  Camel can branch in endless directions (for example, future support for Glassfish Metro
and Jersey and...), and can easily become overburdened with maintaining 75 or more JARs. 
Camel is not like ActiveMQ or CXF, each of which have a more or less finite number of needed
libs.  Rather, because of all the ways it can grow, Camel is similar to Apache Ant, so what
Ant does might be instructive for Camel here:  they include a core set of JARs, but then precisely
list the optional JARs[1] you must manually download if you want to run extended tasks.

3.)  It will be confusing and perplexing to the Ant user, because they will not know which
of the 50 or so JARs are needed and which aren't when using Camel, also, which libs are needed
when running particular functions (CXF or ActiveMQ, for example) with Camel.  They'll start
including all 50 JARs when running *any* process with Camel, not knowing the subset they need.
 Even if I personally were *not* to use Maven but just use Ant instead, I would still rather
just have explicit declarations of which versions of which products I need to download in
the Ant build files.  Creating a bulky download of 50-75 JARs will not tell me which JARs
I need for my production work.



> Add jars required to run binary distribution samples without maven.
> -------------------------------------------------------------------
>                 Key: CAMEL-423
>                 URL:
>             Project: Apache Camel
>          Issue Type: Sub-task
>          Components: examples
>            Reporter: Peter Jones
> There are a number of jars not included in the binary distribution which are
> required to compile and run the samples.  To run these samples without maven,
> the following jars need to be added.
> The cxf, jms-file, and spring samples have dependencies on activemq:
>     org/apache/activemq/activemq-core/4.1.1/activemq-core-4.1.1.jar
>     backport-util-concurrent/backport-util-concurrent/2.1/backport-util-concurrent-2.1.jar
> The bam, and etl samples have dependencies on hibernate jars to compile/run:
>     javax/persistence/persistence-api/1.0/persistence-api-1.0.jar
>     org/apache/geronimo/specs/geronimo-jta_1.0.1B_spec/1.0/geronimo-jta_1.0.1B_spec-1.0.jar
>     org/hibernate/hibernate-annotations/
>     org/hibernate/hibernate-entitymanager/
>     org/hibernate/hibernate/
>     antlr/antlr/2.7.6/antlr-2.7.6.jar
>     asm/asm/1.5.3/asm-1.5.3.jar
>     cglib/cglib/2.1_3/cglib-2.1_3.jar
>     dom4j/dom4j/1.6.1/dom4j-1.6.1.jar
>     hsqldb/hsqldb/
>     jboss/javassist/
>     jboss/jboss-archive-browsing/5.0.0alpha-200607201-119/jboss-archive-browsing-5.0.0alpha-200607201-119.jar
> The etl example also has a dependency on:
>     de/odysseus/juel/juel/2.1.0/juel-2.1.0.jar
> The samples use log4j for runtime logging:
>     log4j/log4j/1.2.12/log4j-1.2.12.jar
> The docs, jms-file, and spring samples include a test class which requires junit
> to compile (could ignore these test classes rather than include junit):
>     junit/junit/3.8.1/junit-3.8.1.jar
> Finally, the cxf sample depends on another 32 jars to generate code from its wsdl and
> the sample:
>     org/apache/cxf/cxf-api/2.0.2-incubator/cxf-api-2.0.2-incubator.jar
>     org/apache/cxf/cxf-rt-core/2.0.2-incubator/cxf-rt-core-2.0.2-incubator.jar
>     org/apache/cxf/cxf-common-utilities/2.0.2-incubator/cxf-common-utilities-2.0.2-incubator.jar
>     org/apache/cxf/cxf-rt-bindings-soap/2.0.2-incubator/cxf-rt-bindings-soap-2.0.2-incubator.jar
>     org/apache/cxf/cxf-rt-databinding-jaxb/2.0.2-incubator/cxf-rt-databinding-jaxb-2.0.2-incubator.jar
>     org/apache/cxf/cxf-rt-frontend-jaxws/2.0.2-incubator/cxf-rt-frontend-jaxws-2.0.2-incubator.jar
>     org/apache/cxf/cxf-rt-frontend-simple/2.0.2-incubator/cxf-rt-frontend-simple-2.0.2-incubator.jar
>     org/apache/cxf/cxf-rt-transports-http-jetty/2.0.2-incubator/cxf-rt-transports-http-jetty-2.0.2-incubator.jar
>     org/apache/cxf/cxf-rt-transports-http/2.0.2-incubator/cxf-rt-transports-http-2.0.2-incubator.jar
>     org/apache/cxf/cxf-rt-transports-jms/2.0.2-incubator/cxf-rt-transports-jms-2.0.2-incubator.jar
>     org/apache/cxf/cxf-tools-common/2.0.2-incubator/cxf-tools-common-2.0.2-incubator.jar
>     org/apache/cxf/cxf-tools-wsdlto-core/2.0.2-incubator/cxf-tools-wsdlto-core-2.0.2-incubator.jar
>     org/apache/cxf/cxf-tools-wsdlto-frontend-jaxws/2.0.2-incubator/cxf-tools-wsdlto-frontend-jaxws-2.0.2-incubator.jar
>     org/apache/cxf/cxf-tools-wsdlto-databinding-jaxb/2.0.2-incubator/cxf-tools-wsdlto-databinding-jaxb-2.0.2-incubator.jar
>     org/apache/geronimo/specs/geronimo-annotation_1.0_spec/1.1.1/geronimo-annotation_1.0_spec-1.1.1.jar
>     org/apache/geronimo/specs/geronimo-servlet_2.5_spec/1.1-M1/geronimo-servlet_2.5_spec-1.1-M1.jar
>     org/apache/geronimo/specs/geronimo-ws-metadata_2.0_spec/1.1.1/geronimo-ws-metadata_2.0_spec-1.1.1.jar
>     javax/xml/ws/jaxws-api/2.0/jaxws-api-2.0.jar
>     javax/xml/soap/saaj-api/1.3/saaj-api-1.3.jar
>     velocity/velocity/1.4/velocity-1.4.jar
>     velocity/velocity-dep/1.4/velocity-dep-1.4.jar
>     commons-lang/commons-lang/2.3/commons-lang-2.3.jar
>     wsdl4j/wsdl4j/1.6.1/wsdl4j-1.6.1.jar
>     xml-resolver/xml-resolver/1.2/xml-resolver-1.2.jar
>     org/apache/ws/commons/schema/XmlSchema/1.2/XmlSchema-1.2.jar
>     org/apache/neethi/neethi/2.0.2/neethi-2.0.2.jar
>     org/mortbay/jetty/jetty-util/6.0.1/jetty-util-6.0.1.jar
>     org/mortbay/jetty/jetty/6.0.1/jetty-6.0.1.jar
>     org/codehaus/woodstox/wstx-asl/3.2.1/wstx-asl-3.2.1.jar
>     javax/xml/jaxb-api/2.0/jaxb-api-2.0.jar
>     com/sun/xml/bind/jaxb-impl/2.0.5/jaxb-impl-2.0.5.jar
>     com/sun/xml/bind/jaxb-xjc/2.0/jaxb-xjc-2.0.jar
> Note the last 3 jars... the version of cxf used by the demo in the latest
> distribution (cxf 2.0.2) works with jaxb 2.0.5... a different version of jaxb than
> the one currently in the camel distribution.
> With these 49 jars, the samples could all be compiled and run without relying on
> maven to download dependencies in the binary distribution.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message