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]