Tôi đang cố gắng gọi maven-dependency-plugin programatically. tôi đang sử dụng phiên bản maven 3. vấn đề là khi tôi gọi nó thông qua pluginManager.executeMojo (phiên làm việc, thực hiện), tôi nhận được thông báo lỗi sau:Làm thế nào để lập trình gọi một plugin phụ thuộc 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 --
Theo tôi biết, các thông số cần thiết chỉ dành cho mục đích giải nén của maven Plugin phụ thuộc là artifactItems . Tôi thiết lập cấu hình plugin bằng cách sử dụng phương thức PluginExecution.setConfiguration(). Có vẻ như cấu hình plugin này không được đặt chính xác. Bạn có biết tại sao ngoại lệ này bị ném không?
Dưới đây là cấu hình mà tôi đang sử dụng:
<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>
Cảm ơn
Một chỉnh từ bên cạnh tôi. Phiên bản Maven đã sử dụng không phải là Maven 3.0 nhưng Maven 3.0-beta-1. Tôi thấy rằng BuildPluginManager.loadPlugin()
trong phiên bản 3.0-beta-1 có hai arg và phương thức tương tự trong phiên bản 3.0 có ba. Tôi tự hỏi, có ai cố gắng gọi một plugin maven một cách lập trình với maven 3.0 hoặc maven 3.0-beta-1. Tôi vẫn đang cố gắng gọi nó với maven 3.0-beta-1, nhưng nó vẫn trả về cùng một ngoại lệ như được dán ở trên.
Tôi nghĩ rằng BuildPluginManager.executeMojo() dành cho các trường hợp sử dụng như vậy. Tôi cũng tìm thấy liên kết sau, giải thích cách gọi trình cắm maven theo cách lập trình: http://code.google.com/p/mojo-executor/ – moisko
Dường như việc triển khai được sử dụng là dành cho maven 2, nhưng Don Brown đang sử dụng cùng một ý tưởng như được giải thích ở trên – moisko
http://stackoverflow.com/questions/526733/maven-plugin-executing- một plugin khác - đó là liên kết để đăng bài mà tôi đang nói đến. – moisko