I should also say, that the workaround is to list each and every transitive
dependency in the dependency declaration with scope 'provided', such that
they are NOT on the normal runtime classpath but ARE correctly copied into
the target directory defined within the maven-dependency-plugin
configuration as shown above.
The only issue with this workaround is that it is extremely messy, bloats
my POM and is difficult to maintain as I have now introduced around 50 or
so additional dependencies which all have versions, etc.
Thanks again for any hints.

On Fri, Feb 23, 2018 at 9:55 AM, lewis john mcgibbney <lewi...@apache.org>

> Hello users@,
> I am looking to dynamically load JAR's during a program execution based
> upon a users input and therefore using the maven-dependency-plugin to do
> this.
> Specifically, the plugin configuration looks as follows
>       <plugin>
>         <groupId>org.apache.maven.plugins</groupId>
>         <artifactId>maven-dependency-plugin</artifactId>
>         <executions>
>           <execution>
>             <id>copy</id>
>             <phase>prepare-package</phase>
>             <goals>
>               <goal>copy</goal>
>             </goals>
>             <configuration>
>               <artifactItems>
>                 <artifactItem>
>                   <groupId>org.apache.any23.plugins</groupId>
>                   <artifactId>apache-any23-openie</artifactId>
>                   <version>${project.version}</version>
>                   <outputDirectory>${output.directory}</outputDirectory>
>                 </artifactItem>
> ...
> This works fine, however I have an issue with regards to these specific
> JARs being present on the classpath during the build and runtime depending
> on the </scope> I assign to them within the dependency definition.
> If I mark the scope as 'runtime', the dependencies are added to the normal
> classpath which I do not want, as the purpose here is dynamic classloading
> via user input.
> On the other hand, if I define the dependency scope as 'provided' then no
> transitive dependencies are acquired hence I encounter
> java.lang.NoClassDefFoundError as although the primary dependency is
> present, it's own dependencies are not.
> Does anyone have a way to get around this. Ideally I am looking for a
> solution to define a specific location I was dependencies (and the
> transitive dependencies) to reside such that I can load them dynamically at
> runtime.
> Thank you kindly in advance,
> Lewis
> --
> http://home.apache.org/~lewismc/
> http://people.apache.org/keys/committer/lewismc


Reply via email to