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]