我写了一个我在一些项目中使用的maven插件。在第一个项目中,它只有一个执行,我可以直接用
执行插件mvn com.mycompany:my-plugin:0.0.1-SNAPSHOT:do-stuff
在第二个项目中,插件有多次执行,当我尝试上面的命令时,我最终会爆炸,因为插件试图用空参数执行。
请注意,在这两种情况下,插件在作为process-resources阶段的一部分执行时工作正常。它只在我尝试执行插件目标时失败。有人可以帮我理解为什么第二个例子试图用空白参数执行吗?
第一个项目(一次执行 - 工作正常):
<plugin>
<groupId>com.mycompany</groupId>
<artifactId>my-plugin</artifactId>
<version>0.0.1-SNAPSHOT</version>
<configuration>
<sourceFiles>
<sourceFile>loadfile</sourceFile>
</sourceFiles>
<outputFile>outputFile</outputFile>
</configuration>
<executions>
<execution>
<phase>process-resources</phase>
<goals>
<goal>do-stuff</goal>
</goals>
</execution>
</executions>
</plugin>
第二个项目(多次执行 - 不会炒作):
<plugin>
<groupId>com.my-company</groupId>
<artifactId>my-plugin</artifactId>
<version>0.0.1-SNAPSHOT</version>
<executions>
<execution>
<id>default</id>
<phase>process-resources</phase>
<configuration>
<sourceFiles>
<sourceFile>file1</sourceFile>
</sourceFiles>
<outputFile>outputFile</outputFile>
</configuration>
<goals>
<goal>do-stuff</goal>
</goals>
</execution>
<execution>
<id>novice</id>
<phase>process-resources</phase>
<configuration>
<sourceFiles>
<sourceFile>file1</sourceFile>
<sourceFile>file2</sourceFile>
</sourceFiles>
<outputFile>outputFile</outputFile>
</configuration>
<goals>
<goal>do-stuff</goal>
</goals>
</execution>
</executions>
</plugin>
答案 0 :(得分:1)
在第二个示例中,您拥有的唯一配置是executions
。执行绑定之外没有configuration
块,因此直接调用插件目标自然不会接收params(因为当前configuration
块特定于绑定)。
解决方案是在命令行中设置“默认”configuration
块(如第一个示例中所示)+ execution
- 特定配置或提供configuration
参数,如果适用。
作为最后一点 - 并且不打算侮辱,每个程序员有时会错过简单的解决方案 - 因为它是你的插件,你可以改变配置规范,让你在一个中定义你需要的一切{ {1}}阻止:)。我不认为你应该这样做,因为唯一的原因似乎是configuration
的特定问题,但它肯定是桌面上的一个选项。