classpath problem with camel:dot and provided dependencies
----------------------------------------------------------

                 Key: CAMEL-3533
                 URL: https://issues.apache.org/jira/browse/CAMEL-3533
             Project: Camel
          Issue Type: Improvement
          Components: tooling
    Affects Versions: 2.5.0
         Environment: Running on linux, jdk 1.6. Looks irrelevant.
            Reporter: Pablo Gra\~na
         Attachments: depends_on_test_classpath.txt

camel:dot in is failing with a class not found exception when the application 
context instantiates a class in a jar with provided scope.

If in your maven project you have:

     <dependency>
       <groupId>javax.servlet</groupId>
       <artifactId>servlet-api</artifactId>
       <version>2.5</version>
       <scope>provided</scope>
     </dependency>

and in your application context there is, for example, a subclass of 
ServletContextListener, mvn camel:dot fails with:

...
Caused by: java.lang.ClassNotFoundException:
javax.servlet.ServletContextListener
       at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
       at java.security.AccessController.doPrivileged(Native Method)
       at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
       at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
       at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
       ... 92 more

If you change it to:

     <dependency>
       <groupId>javax.servlet</groupId>
       <artifactId>servlet-api</artifactId>
       <version>2.5</version>
       <scope>compile</scope>
     </dependency>

then camel-maven-plugin correctly generates the output. The fact is
that the servlet-api jar must not be included in the final war.

I don't know the correct way to fix this. One option would be to add the 
includePluginDependencies option in the plugin and add the provided jars as 
runtime dependencies of the plugin.

The other, very easy to implement, option would be to change the 
requiresDependencyResolution from runtime to test.

The third option would be to make the requiresDependencyResolution configurable.

Attached is a patch for the 2nd option (lazy me).


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

Reply via email to