Sto provando a richiamare maven-dependency-plugin in modo programmatico. sto usando la versione 3 di Maven. il problema è che quando invoco attraverso pluginManager.executeMojo (sessione, esecuzione), viene visualizzato il seguente messaggio di errore:Come richiamare in modo programmatico un plugin di dipendenza di maven
[ERROR] **The parameters 'project', 'local', 'remoteRepos',
'reactorProjects' for goal
org.apache.maven.plugins:maven-dependency-plugin:2.1:unpack are
missing or invalid**
**org.apache.maven.plugin.PluginParameterException: The parameters 'project',
'local', 'remoteRepos', 'reactorProjects' for goal
org.apache.maven.plugins:maven-dependency-plugin:2.1:unpack are missing or
invalid**
at org.apache.maven.plugin.internal.DefaultMavenPluginManager
.populatePluginFields(DefaultMavenPluginManager.java:518)
at org.apache.maven.plugin.internal.DefaultMavenPluginManager
.getConfiguredMojo(DefaultMavenPluginManager.java:471)
at org.apache.maven.plugin.DefaultBuildPluginManager
.executeMojo(DefaultBuildPluginManager.java:99)
at com.sap.ldi.qi.osgi.OSGiManifesrMfHandlerMojo
.invokeMavenDependencyPlugin(OSGiManifesrMfHandlerMojo.java:139)
at com.sap.ldi.qi.osgi.OSGiManifesrMfHandlerMojo
.execute(OSGiManifesrMfHandlerMojo.java:100)
at org.apache.maven.plugin.DefaultBuildPluginManager
.executeMojo(DefaultBuildPluginManager.java:110)
at org.apache.maven.lifecycle.internal.MojoExecutor
.execute(MojoExecutor.java:144)
at org.apache.maven.lifecycle.internal.MojoExecutor
.execute(MojoExecutor.java:87)
at org.apache.maven.lifecycle.internal.MojoExecutor
.execute(MojoExecutor.java:79)
-- many lines stripped from stack trace --
[INFO] ----------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ----------------------------------------------------------------------
[INFO] Total time: 17.938s
[INFO] Finished at: Mon Nov 22 10:27:42 EET 2010
[INFO] Final Memory: 12M/23M
[INFO] ----------------------------------------------------------------------
[ERROR] Failed to execute goal
com.sap.ldi.qi:osgi-manifest-handler-plugin:0.0.1-SNAPSHOT:handle
(osgi-manifest-handler plugin) on project com.sap.ldi.demo.calc
.cmd.tests: The parameters 'project', 'local', 'remoteRepos',
'reactorProjects' for goal
org.apache.maven.plugins:maven-dependency-plugin:2.1:unpack are missing
or invalid -> [Help 1]
-- stripped rest --
Per quanto ne so, l'unico parametro richiesto per il gol di decompressione di Maven plug-dipendenza è artifactItems . Ho impostato la configurazione del plugin usando il metodo PluginExecution.setConfiguration(). Sembra che questa configurazione del plugin non sia impostata correttamente. Hai idea del motivo per cui viene lanciata questa eccezione?
Ecco la configurazione che sto usando:
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.sap.ldi.demo.calc</groupId>
<artifactId>com.sap.ldi.demo.calc.cmd</artifactId>
<version>0.1.2-SNAPSHOT</version>
<type>jar</type>
<overWrite>true</overWrite>
<outputDirectory>target/demo-calc-stuff</outputDirectory>
<includes>**/*.*</includes>
</artifactItem>
</artifactItems>
</configuration>
Grazie
Una correzione da parte mia. La versione di Maven usata non è Maven 3.0 ma Maven 3.0-beta-1. Vedo che nella versione 3.0-beta-1 lo BuildPluginManager.loadPlugin()
ha due arg, e lo stesso metodo nella versione 3.0 ne ha tre. Mi chiedo, qualcuno ha provato a invocare un plugin Maven in modo programmatico con Maven 3.0 o Maven 3.0-beta-1. Sto ancora cercando di invocarlo con maven 3.0-beta-1, ma restituisce comunque la stessa eccezione di quella incollata sopra.
Ho pensato che BuildPluginManager.executeMojo() è destinato a tali casi d'uso. Ho anche trovato il seguente link, che spiega come richiamare i plugin Maven in modo programmatico: http://code.google.com/p/mojo-executor/ – moisko
Sembra che l'implementazione utilizzata sia per maven 2, ma Don Brown sta usando la stessa idea come spiegato sopra – moisko
http://stackoverflow.com/questions/526733/maven-plugin-executing- another-plugin - questo è il link per post di cui sto parlando. – moisko