With a little more consideration, I don't really want every dependency
(obviously, who'd want a junit jar in their war file if they could help it).
So here's a more conceptual question, what's the best way to allow one set of
dependencies but let the end user configure which items get line entries in
this manifest file?
Like a dependencyset in an assembly descriptor:
<dependencySet>
<outputFileNameMapping></outputFileNameMapping>
<useStrictFiltering>false</useStrictFiltering>
<outputDirectory>/someoutputplace</outputDirectory>
<unpack>true</unpack>
<unpackOptions>
<includes>
<include>someincludes</include>
</includes>
</unpackOptions>
<includes>
<include>group:artifacid:type:version</include> (where version can
be * or blank I think)
</includes>
</dependencySet>
Any thoughts?
-----Original Message-----
From: EJ Ciramella [mailto:[EMAIL PROTECTED]
Sent: Wednesday, December 12, 2007 5:10 PM
To: Maven Users List
Subject: RE: Getting a dependency list in a custom plugin
So maybe I got ahead of myself a bit, I'm having a bit of trouble with the
Dependency portion:
In my class, I have this -
/** @parameter expression="${project.dependencies}" */
private Dependency dependencies;
But when I run, I get this:
Cause: Cannot assign configuration entry 'dependencies' to 'class
org.apache.maven.model.Dependency' from '${project.dependencies}', which is of
type class java.
util.ArrayList
So my understanding is that ${project.dependencies} is really an ArrayList, but
when I try something like this:
/** @parameter expression="${project.dependencies}" */
private ArrayList dependencies;
And:
for(int x = 0; x < dependencies.size(); x++)
{
if
(artifact.getGroupId().equals(((Dependency)dependencies.get(x)).getGroupId())
&&
artifact.getArtifactId().equals(((Dependency)dependencies.get(x)).getArtifactId()))
{
getLog().info(artifact.getFile().getPath());
}
}
I get:
[INFO] null
[INFO] ------------------------------------------------------------------------
[INFO] Trace
java.lang.NullPointerException
at com.upromise.maven.helpers.ManiGen.execute(ManiGen.java:33)
at
org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:420)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:539)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:493)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:463)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:311)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:278)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:143)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:330)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:123)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:272)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
With a bit more research, the artifacts are null. This returns nothing:
Set artifacts = mavenProject.getDependencyArtifacts();
What should I be doing instead?
-----Original Message-----
From: EJ Ciramella [mailto:[EMAIL PROTECTED]
Sent: Wednesday, December 12, 2007 2:22 PM
To: Maven Users List
Subject: RE: Getting a dependency list in a custom plugin
Sorry - but this reply got me up and running in the first two seconds.
Link 3 is worth a million bucks IMHO.
-----Original Message-----
From: EJ Ciramella [mailto:[EMAIL PROTECTED]
Sent: Wednesday, December 12, 2007 2:16 PM
To: Maven Users List
Subject: RE: Getting a dependency list in a custom plugin
Thank you very much!
/digesting...
-----Original Message-----
From: Wayne Fay [mailto:[EMAIL PROTECTED]
Sent: Wednesday, December 12, 2007 1:28 PM
To: Maven Users List
Subject: Re: Getting a dependency list in a custom plugin
A few good links for you, EJ:
http://wiki.wsmoak.net/cgi-bin/wiki.pl?Maven/PluginDevelopment
http://maven.apache.org/guides/plugin/guide-java-plugin-development.html
http://docs.codehaus.org/display/MAVENUSER/Mojo+Developer+Cookbook
Wayne
On 12/12/07, Jeff MAURY <[EMAIL PROTECTED]> wrote:
> You must declare a parameter in your Mojo of class Project and use the
> expression ${project}
>
> Jeff
>
>
>
> On 12/12/07, EJ Ciramella <[EMAIL PROTECTED]> wrote:
> >
> > Yeah, I'm having much better results (they're blank, but in a format
> > that's recognizable) using:
> >
> > <dependency>
> > <groupId>org.apache.maven</groupId>
> > <artifactId>maven-project</artifactId>
> > <version>2.0.4</version>
> > </dependency>
> >
> > But what's weird is I'm seeing this:
> >
> > <snip>
> > MavenProject proj = new MavenProject();
> > getLog().info("artifact ID here "+proj.getArtifactId());
> > </snip>
> >
> >
> > Yeilds:
> >
> > artifact ID here empty-project
> >
> >
> > I'm guessing I need to do something that gets an instance of the current
> > project. How does one do this from their AbstractMojo based plugin?
> >
> > -----Original Message-----
> > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Jeff
> > MAURY
> > Sent: Wednesday, December 12, 2007 11:27 AM
> > To: Maven Users List
> > Subject: Re: Getting a dependency list in a custom plugin
> >
> > For Maven2, the groupId is org.apache.maven and the version is 2.0.x.
> >
> > Regards
> > Jeff
> >
> >
> >
> > On 12/12/07, EJ Ciramella <[EMAIL PROTECTED]> wrote:
> > >
> > > Additionally, I've added:
> > >
> > > <plugins>
> > > <plugin>
> > > <dependencies>
> > > <dependency>
> > > <groupId>maven</groupId>
> > > <artifactId>maven-model</artifactId>
> > > <version>3.0.1</version>
> > > </dependency>
> > > </dependencies>
> > > ....
> > >
> > >
> > > To my pom, but I still am getting
> > >
> > > [INFO] Trace
> > > java.lang.NoClassDefFoundError: org/apache/maven/project/Model
> > >
> > > /scratcheshead
> > >
> > > -----Original Message-----
> > > From: EJ Ciramella [mailto:[EMAIL PROTECTED]
> > > Sent: Wednesday, December 12, 2007 10:43 AM
> > > To: Maven Users List
> > > Subject: RE: Getting a dependency list in a custom plugin
> > >
> > > So, what dependency should I be using to get access to the maven project
> > > class? I get the feeling I'm using the wrong one.
> > >
> > > I've opted to use:
> > >
> > > import org.apache.maven.project.Project;
> > >
> > > From:
> > > <dependency>
> > > <groupId>maven</groupId>
> > > <artifactId>maven</artifactId>
> > > <version>1.1-beta-3</version>
> > > </dependency>
> > >
> > > I feel like this is the maven1 version...
> > >
> > >
> > > -----Original Message-----
> > > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Jeff
> > > MAURY
> > > Sent: Wednesday, December 12, 2007 3:21 AM
> > > To: Maven Users List
> > > Subject: Re: Getting a dependency list in a custom plugin
> > >
> > > On 12/12/07, EJ Ciramella <[EMAIL PROTECTED]> wrote:
> > > >
> > > > Hello all - I have what seems like a simple question that's got me
> > > > stumped at the moment.
> > > >
> > > > Is there a way to iterate over the dependencies in a particular
> > project
> > > > inside a custom plugin?
> > > >
> > > > I keep wanting to do something like:
> > > >
> > > > ArrayList deps = (ArrayList) proj.getDependencies();
> > > > for(int x = 0; x < deps.size(); x++)
> > > > {
> > > > getLog().info("--> "+deps.get(x));
> > > > }
> > > >
> > > > Just for testing purposes, but at runtime, I keep getting this
> > > > stacktrace:
> > > >
> > > > java.lang.NoClassDefFoundError: org/apache/maven/project/Model
> > > > at org.apache.maven.project.Project.<init>(Project.java:120)
> > > > at com.upromise.maven.helpers.ManiGen.execute(ManiGen.java:20)
> > > > at
> > > > org.apache.maven.plugin.DefaultPluginManager.executeMojo
> > (DefaultPluginMa
> > > > nager.java:420)
> > > > at
> > > > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals
> > (Default
> > > > LifecycleExecutor.java:539)
> > > > at
> > > >
> > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoa
> > > > l(DefaultLifecycleExecutor.java:493)
> > > > at
> > > > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal
> > (DefaultL
> > > > ifecycleExecutor.java:463)
> > > >
> > > > I get the feeling I'm not using the right Project class.
> > >
> > >
> > > I think you're missing a dependency in your plugin POM so that the
> > > classpath
> > > affected to your plugin is not complete.
> > >
> > > Jeff
> > >
> > >
> > > Any suggestions would be really helpful.
> > > >
> > >
> > >
> > >
> > > --
> > > La mélancolie c'est communiste
> > > Tout le monde y a droit de temps en temps
> > > La mélancolie n'est pas capitaliste
> > > C'est même gratuit pour les perdants
> > > La mélancolie c'est pacifiste
> > > On ne lui rentre jamais dedans
> > > La mélancolie oh tu sais ça existe
> > > Elle se prend même avec des gants
> > > La mélancolie c'est pour les syndicalistes
> > > Il faut juste sa carte de permanent
> > >
> > > Miossec (2006)
> > >
> > > http://www.jeffmaury.com
> > > http://riadiscuss.jeffmaury.com
> > >
> > > ---------------------------------------------------------------------
> > > 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]
> > >
> > >
> >
> >
> > --
> > La mélancolie c'est communiste
> > Tout le monde y a droit de temps en temps
> > La mélancolie n'est pas capitaliste
> > C'est même gratuit pour les perdants
> > La mélancolie c'est pacifiste
> > On ne lui rentre jamais dedans
> > La mélancolie oh tu sais ça existe
> > Elle se prend même avec des gants
> > La mélancolie c'est pour les syndicalistes
> > Il faut juste sa carte de permanent
> >
> > Miossec (2006)
> >
> > http://www.jeffmaury.com
> > http://riadiscuss.jeffmaury.com
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
>
> --
> La mélancolie c'est communiste
> Tout le monde y a droit de temps en temps
> La mélancolie n'est pas capitaliste
> C'est même gratuit pour les perdants
> La mélancolie c'est pacifiste
> On ne lui rentre jamais dedans
> La mélancolie oh tu sais ça existe
> Elle se prend même avec des gants
> La mélancolie c'est pour les syndicalistes
> Il faut juste sa carte de permanent
>
> Miossec (2006)
>
> http://www.jeffmaury.com
> http://riadiscuss.jeffmaury.com
>
---------------------------------------------------------------------
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]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]