当前位置: 首页 > 知识库问答 >
问题:

Maven插件在单独执行插件时,多次执行不会注入变量

王锐
2023-03-14

我写了一个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>

共有1个答案

华凯捷
2023-03-14

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

一个解决方案是有一个默认的配置块(如在第一个示例中)特定于执行的配置,或者从命令行提供配置参数(如果适用)。

作为最后一点——并非有意冒犯,每个程序员有时都会错过简单的解决方案——因为它是你的插件,你可以只更改配置规范,让你在一个配置块:)中定义你需要的一切。我认为你不必这么做,因为唯一的原因似乎是你对m2e的具体问题,但这肯定是摆在桌面上的一个选项。

 类似资料:
  • 我正在尝试使用shade插件创建一个可执行JAR的简单示例。我逐行浏览了这里的示例,在我的机器上似乎根本没有执行shade插件。 我的阴影POM代码是: 运行“mvn包”后,创建的JAR不包含任何项目依赖项。从调试跟踪来看,似乎从未调用过shade插件。要让shade发挥其魔力,是否还需要一些额外的步骤? 编辑:示例的完整代码位于https://github.com/hutch31/maven-s

  • 问题内容: 从jmeter-maven-plugin执行JMeter时可以使用JMeter 插件吗? 更新 我尝试按照Ardesco的有用答案将依赖项添加到插件定义中,但是却得到了无数的。它 看起来 像Maven是不是把执行的JMeter时的传递依赖的类路径。有任何想法吗? 问题答案: 尽管此答案被接受,但仅适用于2.X之前的版本。但是对于高于2.X的版本,请参见此答案。 使用2.6.0版或更高版

  • 我正在使用版本3.0.0和版本6.18中的Maven Checkstyle插件。 这是我的初始配置: 运行将使构建失败,因为存在check style错误。这是意料之中的。 然而,当我使用构建成功,没有任何错误(仍然显示问题)。 我的期望是,当我使用配置。我做错了什么? 更新(2018年5月4日):我为此提出了一个错误。

  • 我是maven的新手,学习如何以及何时在插件中执行阶段/目标 假设我的pom中有以下代码片段 现在,如果我执行mvn安装,安装之前的modello的所有阶段(以及每个阶段对应的所有目标)都将执行。正当 但是,如果进行以下修改以引入特定目标,则只会执行一个目标,即java目标(因为它位于安装阶段之前的生成源代码阶段)。对吗?

  • 在我当前的项目设置中,maven shade插件的执行非常不稳定。这个插件看起来像是在我构建父模块之后执行的,但是在那个实例中执行之后,它在独立构建子模块时无法执行。 我的父母是 还有孩子pom 以及在具有上述pom的子模块上运行“安装”目标时的构建输出 如您所见,尽管在< code >中定义了执行,maven shade插件并没有执行

  • 我正在使用org.codehaus.mojo exec-maven-plugin通过我的pom.xml项目执行一个可执行的。jar文件。目前这不起作用,我不确定为什么。当我指定CommandLineArgs时会发生错误。 我的插件如下所示: