[
https://issues.apache.org/activemq/browse/CAMEL-423?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=41979#action_41979
]
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.
Regards,
Glen
[1] http://ant.apache.org/manual/install.html#librarydependencies
> Add jars required to run binary distribution samples without maven.
> -------------------------------------------------------------------
>
> Key: CAMEL-423
> URL: https://issues.apache.org/activemq/browse/CAMEL-423
> 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/3.2.1.ga/hibernate-annotations-3.2.1.ga.jar
>
> org/hibernate/hibernate-entitymanager/3.2.1.ga/hibernate-entitymanager-3.2.1.ga.jar
> org/hibernate/hibernate/3.2.1.ga/hibernate-3.2.1.ga.jar
> 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/1.8.0.7/hsqldb-1.8.0.7.jar
> jboss/javassist/3.3.ga/javassist-3.3.ga.jar
>
> 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 run
> 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.