Two ways to solve this:

- have the user specify which dependency to use via configuration:
<plugin>
  ...
<configuration>
  <jdbcDriver>com.mysql:mysql-driver</jdbcDriver>
</configuration>
</plugin>
...
<dependency>
  <groupId>com.mysql</groupId>
  <artifactId>mysql-driver</artifactId>
  <version>5.0.0</version>
</dependency>

- add the dependency to the plugin declaration and just use the
current classloader (probably the best)
<plugin>
 ...
<dependency>
  <groupId>com.mysql</groupId>
  <artifactId>mysql-driver</artifactId>
  <version>5.0.0</version>
</dependency>
</plugin>

Cheers,
Brett

On 11/21/05, Stephen Cowx <[EMAIL PROTECTED]> wrote:
> Hi
>
> I would like to take this one step further, I need to obtain the details
> for a single dependency declared in a pom and use it in my plugin:
>
> My plugin, which runs SQL scripts, needs to reference the JDBC driver of
> the plugin users choice.
>
> I need to be able to put the jar file containing this users chosen
> driver onto the classpath that my plugin is using at runtime.
> - I don't want to break the isolation that my plugin has from the other
> dependencies in the users pom, I just need the jdbc driver.
> - I don't want to have to specify the jdbc driver as a dependency for my
> own plugin because I want lots of people to be able to use this with
> lots of different drivers.
>
> The only way I can think of to do this is to follow the steps outlined
> in this thread for obtaining a list of artifacts for the pom using the
> plugin, iterate through the list until I find the one the user has
> specified to be their jdbc driver (through a property of some kind) and
> then add that to the classpath being used by my plugin.
>
> Although possible, this is a little unwieldy and I can;t help feeling
> there must be an easy way to do this.
>
> So...
>
> Is there an existing way to do this, something like my example below
> (note <dependency> property)
>
> <build>
>     <plugins>
>       <plugin>
>         <groupId>my.group.id</groupId>
>         <artifactId>plugin-sqlrunner</artifactId>
>         <version>1.0.0-dev</version>
>         <executions>
>           <execution>
>             <phase>test</phase>
>             <configuration>
>                   <user>${db-username}</user>
>                <pass>${db-password}</pass>
>                <url>${db-url}</url>
>                <driver>oracle.jdbc.OracleDriver</driver>
>                <onerror>continue</onerror>
>                <dependency>
>                    <groupId>ojdbc</groupId>
>                    <artifactId>ojdbc</artifactId>
>                    <version>14</version>
>                <dependency>
>                <files>
>                  <file>${basedir}/src/main/oracle/BillImage.sql</file>
>                  <file>${basedir}/src/main/oracle/RunTimeControls.sql</file>
>                  <file>${basedir}/src/main/oracle/audit.sql</file>
>                  <file>${basedir}/src/main/oracle/CreateSequences.sql</file>
>                </files>
>             </configuration>
>             <goals>
>               <goal>runsql</goal>
>             </goals>
>           </execution>
>         </executions>
>       </plugin>
>     </plugins>
>
>
> regards
>
> Stephen
>
> Wim Deblauwe wrote:
>
> >ok, thanks! That was it.
> >
> >2005/11/21, Allison, Bob <[EMAIL PROTECTED]>:
> >
> >
> >>The tag "@requiresDependencyResolution" has to be on the class, not the
> >>parameter.
> >>
> >>-----Original Message-----
> >>From: Wim Deblauwe [mailto:[EMAIL PROTECTED]
> >>Sent: Monday, November 21, 2005 06:41
> >>To: Maven Users List
> >>Subject: Re: [m2] Copy the dependencies of a project in a custom plugin
> >>
> >>
> >>The collection of artifacts is empty. When I was using dependencies, it
> >>was
> >>not empty. What am I doing wrong? This is my code:
> >>
> >>/**
> >>* @goal process-resources
> >>* @description Copy the dependencies for the InstallShield Merge Module
> >>*/
> >>public class MsmProcessResourcesMojo extends AbstractMojo
> >>{
> >>/**
> >>* @parameter expression="${project.artifacts}"
> >>* @requiresDependencyResolution
> >>*/
> >>private Collection artifacts;
> >>
> >>/**
> >>* @parameter expression="${project.build.directory}/resources"
> >>*/
> >>private File targetDirectory;
> >>
> >>public MsmProcessResourcesMojo()
> >>{
> >>}
> >>
> >>public void execute() throws MojoExecutionException,
> >>MojoFailureException
> >>{
> >>try
> >>{
> >>getLog().info( "Process Resources for InstallShield Merge Module..." );
> >>Iterator iterator = artifacts.iterator();
> >>while (iterator.hasNext())
> >>{
> >>Artifact artifact = (Artifact)iterator.next();
> >>FileUtils.copyFileToDirectory( artifact.getFile(), new File(
> >>targetDirectory, artifact.getType() + "s" ) );
> >>}
> >>}
> >>catch (IOException e)
> >>{
> >>throw new MojoExecutionException( "Error copying artifacts", e );
> >>}
> >>}
> >>}
> >>
> >>thank you,
> >>
> >>Wim
> >>
> >>2005/11/21, Brett Porter <[EMAIL PROTECTED]>:
> >>
> >>
> >>>maven-artifact and maven-project (though you may not need the project
> >>>dependency if you are just using the expression below as it is
> >>>runtime, and Mavne provides it).
> >>>
> >>>- Brett
> >>>
> >>>On 11/21/05, Wim Deblauwe <[EMAIL PROTECTED]> wrote:
> >>>
> >>>
> >>>>What dependency do I need for the Artifact and Project classes in my
> >>>>
> >>>>
> >>>Mojo?
> >>>
> >>>
> >>>>2005/11/21, Brett Porter <[EMAIL PROTECTED]>:
> >>>>
> >>>>
> >>>>>On 11/21/05, Wim Deblauwe <[EMAIL PROTECTED]> wrote:
> >>>>>
> >>>>>
> >>>>>>Hi,
> >>>>>>
> >>>>>>I'm writing a custom plugin and I need to copy the project's
> >>>>>>
> >>>>>>
> >>>>>dependencies
> >>>>>
> >>>>>
> >>>>>>from the local repository to a certain directory. How can I do
> >>>>>>
> >>>>>>
> >>this
> >>
> >>
> >>>>>best?
> >>>>>
> >>>>>You should use ${project.artifacts} instead which includes all the
> >>>>>transitive artifacts, and for which you can call
> >>>>>
> >>>>>
> >>artifact.getFile().
> >>
> >>
> >>>>>Make sure you include @requiresDependencyResolution
> >>>>>
> >>>>>
> >>>>>
> >>>>>>question 2:
> >>>>>>When my plugin works, it will produce a different artifact
> >>>>>>
> >>>>>>
> >>(.msm),
> >>
> >>
> >>>how
> >>>
> >>>
> >>>>>>should I handle the 'instal' and 'deploy' of that artifact? Do I
> >>>>>>
> >>>>>>
> >>>need to
> >>>
> >>>
> >>>>>>write my own custom mojo for that or can I re-use the plugins
> >>>>>>
> >>>>>>
> >>>already
> >>>
> >>>
> >>>>>>written for .jar files?
> >>>>>>
> >>>>>>
> >>>>>You can reuse the mojos, but you will still need to define the
> >>>>>customisations, which will require a plugin. There are examples in
> >>>>>
> >>>>>
> >>the
> >>
> >>
> >>>>>"introduction to the build lifecycle".
> >>>>>
> >>>>>Cheers,
> >>>>>Brett
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>---------------------------------------------------------------------
> >>
> >>
> >>>>>To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>>>>For additional commands, e-mail: [EMAIL PROTECTED]
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>
> >>>>
> >>>---------------------------------------------------------------------
> >>>To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>>For additional commands, e-mail: [EMAIL PROTECTED]
> >>>
> >>>
> >>>
> >>>
> >>---------------------------------------------------------------------
> >>To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>For additional commands, e-mail: [EMAIL PROTECTED]
> >>
> >>
> >>
> >>
> >
> >
> >
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to