Thanks to everyone. Now I know there is no way through maven2 api to call another plugin. Am I right?
According to Jason, it's a bad idea to call one plugin directly in another. But I still think it's maybe very convenience to do things like that so I can use functions of other plugin directly and have parameters passed to other plugin totally under my control. On 6/7/07, David Jackman <[EMAIL PROTECTED]> wrote:
Here's another situation where I want to have a plugin call another plugin. Can you tell me the "right" way to accomplish this? In our group we have a release procedure that involves a few more steps beyond running the release:prepare mojo. In fact, some of the parameters into the release:prepare mojo are based on internal standards, so they could be computed automatically. I want to create a single plugin that embodies this entire release process that also calls the release:prepare mojo with the correct parameters as part of that process. This would be another situation where one plugin invokes another plugin. Obviously there is coupling there. What is a better way to achieve this without that coupling (is it even possible)? Would I create a lifecycle within my mojo that puts the necessary data on the bus and invokes the release:prepare mojo as part of that lifecycle (thinking in Maven 2.1terms)? ..David.. -----Original Message----- From: Kenney Westerhof [mailto:[EMAIL PROTECTED] Sent: Wednesday, June 06, 2007 5:48 PM To: Maven Users List Subject: Re: calling plugin in another plugin? Nunn, Gerald wrote: > Jason, > >> It's a bad practice, and leads to coupling between plugins which is >> bad. We've seen the aftermath of this happening in Maven 1.x. > > Since I'm doing this already I'm curious how this could be done better and accomplish my goal, I'm a relative newbie to Mojos so I'm wondering if I am missing a better approach. > > In my case, I needed a plugin that can handle a WebLogic shared library. A shared library is a WAR or EAR that contains many different assets including JARs and in order to be able to use these in Maven I've created a plugin that temporarily unpacks the shared library and installs each JAR individually under a library group name. It also creates a parent POM for the library that can be used to drag in all the dependencies defined by the library. > > In order to do this, my plugin needs to install each file individually. Rather then rewrite the install plugin, I simply use my invoker class to invoke the install plugin for each file I have unpacked passing in the necessary parameters to make this work. > > How could I accomplish the same goal using the approach you outlined? This is a one-time setup, and really not part of the build. You should have had those jars in the ears/wars in a repository already. Either create a shellscript for it, or a pom, declaring a dependency on the war/ear (i assume that one _is_ in a repository? if not - it shouldn't be part of the maven build lifecycle). You use the maven-dependency-plugin to unpack the war/ear (for instance in generate-resources), say to ${project.build.directory}/foo/ and specify a series of executions of the install plugin (for instance in process-resources), each one configured with the location a jar in ${project.build.directory}/foo/. Anyway, this is not recommended practice, but I can see why your plugin is useful. The eclipse plugin has a similar mojo, that scans an eclipse installation directory for plugins and installs each plugin as a maven2 artifact in the local directory. It doesn't use the install mojo, afaik, but the maven api's. I'm assuming your plugin is similar, in that it can unpack/install wars/ears found in a bea weblogic installation directory? -- Kenney > > Thanks, > > Gerald --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]