1

我写了一个我在一些项目中使用的 maven 插件。在第一个项目中,它只有一个执行,我可以直接执行插件

mvn com.mycompany:my-plugin:0.0.1-SNAPSHOT:do-stuff

在第二个项目中,插件有多次执行,当我尝试上面的命令时,我最终崩溃了,因为插件尝试使用空参数执行。

请注意,在这两种情况下,插件在作为流程资源阶段的一部分执行时都可以正常工作。只有当我尝试只执行插件目标时它才会失败。有人可以帮我理解为什么第二个示例尝试使用空白参数执行吗?

第一个项目(一次执行 - 工作正常):

        <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>
4

1 回答 1

1

在第二个示例中,您拥有的唯一配置是在executions. 执行绑定之外没有configuration块,因此直接调用插件目标自然不会收到任何参数(因为当前configuration块特定于绑定)。

一个解决方案是拥有一个“默认”configuration块(如您的第一个示例)+ - 特定配置,或者如果适用,则从命令行execution提供参数。configuration

最后一点 - 无意侮辱,每个程序员有时都会错过简单的解决方案 - 因为它是你的插件,你可以更改配置规范,让你在一个configuration块中定义你需要的一切:)。鉴于唯一的原因似乎是您m2e对 .

于 2013-07-17T18:12:02.343 回答