On Sun, Aug 31, 2008 at 5:48 PM, Dan Tran <[EMAIL PROTECTED]> wrote: > Oops, I pasted the wrong declaration, it should be > > /** > * Location of the local repository. > * > * @parameter expression="${localRepository}" > * @readonly > * @required > */ > protected org.apache.maven.artifact.repository.ArtifactRepository local; > > Looks like the expression=${localRepository} is the implicit > ${settings.localRepository} > > Is there a way to pass in my own localRepository instead of using > the implicit settings.localRepository. This way, there is no need to > enhance the plugin.
Of course, we still need to remove @readonly which is a minimal change in the plugin > > If we need to enhance dependency plugin to allow override of its > "local" configuration, > how is it going to be? Perhaps, we can add an additional > configuration like localRepositoryPath( String) and create a new > DefaultArtifactRepository if it is not null to replace the declared > "local" at execution time? > > > Thanks > > -Dan > > On Sun, Aug 31, 2008 at 5:25 PM, Brett Porter <[EMAIL PROTECTED]> wrote: >> You're on the right track, but there's a few problems here. >> Firstly, I'm a bit confused as you have artifactFactory, but refer to local >> repository. This is important - if the plugin is using a factory to create a >> repository then you can replace the factory, but if it's using >> ${settings.localRepository} you'll have to override that in a different way. >> >> As for replacing an implementation, the method you've given is not quite >> correct. You actually need something like: >> >> <configuration> >> <factory implementation="com.foo.bar.MyArtifactFactory" /> >> </configuration> >> >> A good example of this is the shade plugin, which does so for it's >> transformers. >> >> But if @component is used, or @readonly - this may not work anyway. >> >> For the specific use case you are talking about, replacement components >> shouldn't be needed, it just sounds like you want to modify the local >> repository. That seems like a feature request to make of the dependency >> plugin. >> >> Cheers, >> Brett >> >> 2008/9/1 Dan Tran <[EMAIL PROTECTED]> >> >>> Currently, a typical localRepository configuration is declared like >>> this in the mojo. >>> >>> /** >>> * Used to look up Artifacts in the remote repository. >>> * >>> * @parameter >>> expression="${component.org.apache.maven.artifact.factory.ArtifactFactory}" >>> * @required >>> * @readonly >>> */ >>> protected org.apache.maven.artifact.factory.ArtifactFactory factory; >>> >>> >>> This means, I can create my own local repository plexus component >>> implementation, declare it as a dependency in my pom in the plugin's >>> dependency list, and pass it in as a execution configuration like >>> >>> <execution> >>> <configuration> >>> <local>myExecutionLocalRepository</local> >>> </configuration? >>> </execution> >>> </executions> >>> <dependencies> >>> my implementation goes here >>> </dependencies> >>> >>> Where myExecutionLocalRepository is the plexus component name, known as >>> "hint" >>> >>> Is the right approach? >>> >>> The motivation behind this is that I have a need to use dependency >>> plugin to copy and unpack some very large artifacts and I dont want >>> it to pollute my global local repository especially when using >>> snapshot artifacts. myExecutionLocalRepository is located under >>> target directory so that It can be cleanup via maven clean. >>> >>> Advice is greatly appreciated. >>> >>> Thanks >>> >>> -D >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>> For additional commands, e-mail: [EMAIL PROTECTED] >>> >>> >> >> >> -- >> Brett Porter >> Blog: http://blogs.exist.com/bporter/ >> > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]