当前位置: 首页 > 面试题库 >

exec-maven-plugin说无法运行指定程序,即使它位于PATH上

宁欣怿
2023-03-14
问题内容

tl; dr = exec-maven-plugin 不能
.cmd文件识别.bat为可执行脚本,而只能识别文件。重命名grunt.cmd --> grunt.batbower.cmd --> bower.bat等作为解决方法。

npm install -g grunt-cli我的系统上完成操作后,grunt肯定可以PATH

maven install但是,当我运行时,这似乎没有注册。

    [ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2.1:exec 
    (build-spa-bower) on project foobar: Command execution failed. 
    Cannot run program "grunt" (in directory "C:\workspace\foobar\src\main\spa"): 
    CreateProcess error=2, The system cannot find the file specified -> [Help 1]
    org.apache.maven.lifecycle.LifecycleExecutionException: 
    Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2.1:exec 
    (build-spa-bower) on project foobar: Command execution failed.

可以肯定的是,在同一终端中,我已经执行了

cd C:\workspace\foobar\src\main\spa
grunt build

…与我上面发出maven命令的终端相同,而grunt执行得很好。

是否exec-maven-plugin使用PATH环境变量,还是需要告知该可执行文件以其他方式存在?

编辑:

该文档建议PATH应找到可执行文件,因此更令我难过。


问题答案:

除了bguiz的答案(这将是最佳解决方案)之外,我还使用Maven配置文件创建了一种解决方法,绕过了这个问题。

这是一个临时解决方案,直到修复了maven-exec-plugin的错误为止。

请在此处更新错误报告:http :
//jira.codehaus.org/browse/MEXEC-118

编辑: 该错误已解决,您可以指向1.4-SNAPSHOT对其进行修复。

<project>
(...)
    <profiles>
        <profile>
            <id>grunt-exec-windows</id>
            <activation>
                <os>
                    <family>Windows</family>
                </os>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>exec-maven-plugin</artifactId>
                        <version>${exec-maven-plugin.version}</version>
                        <executions>
                            <execution>
                                <id>grunt-default</id>
                                <phase>generate-resources</phase>
                                <configuration>
                                    <executable>cmd</executable>
                                    <arguments>
                                        <argument>/C</argument>
                                        <argument>grunt</argument>
                                    </arguments>
                                </configuration>
                                <goals>
                                    <goal>exec</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>


 类似资料:
  • 我这里有一个多模块maven项目。 父项目共有3个模块,with-paranamer,with-paranamer。 下面是项目的结构。 我想使用exec-maven-plugin在withon-paranamer模块中执行类。因此,我在这里的parent pom.xml中的pluginManagement下添加了exec-maven-plugin。 在unit-paranamer模块中,我添加了

  • 我有一个Spring Boot2项目,这是一个ReST API,我正在使用Spring ReST。 我正在使用2个插件来生成一个SDK其他项目导入调用我的API。第一个插件是以生成swagger-codegen-spec文件,第二个插件是,以生成实际的SDK文件作为另一个mvn项目。 最后,我实现了组件测试自动化,这些组件测试使用SDK对正在运行的API运行测试。 我的目标是实际构建SDK作为原始

  • > 我的pom.xml 我添加了一些依赖项和插件,任何人都可以帮助我?? http://maven.apache.org/xsd/maven-4.0.0.xsd“>4.0.0

  • 如果没有,有人知道如何通过NetBeans使用-e或-x开关运行Maven吗?我假设它是通过右键点击POM,然后运行目标,然后在textfield中输入一些东西。

  • 目前,我正在使用Smoks(1.5版本)。在最后一步中,我更改了项目中的包的名称,并引发了以下错误: 无法在项目javaBindings上执行目标org.codehaus.mojo:exec-maven-plugin:1.2.1:exec(default-cli):命令执行失败。进程退出,出现错误:1(退出值:1)->[帮助1]

  • 问题内容: 我正在詹金斯盒子上运行用maven构建的jUnit4测试。在构建测试阶段之前,我需要运行特定的主方法Java程序。目的是在测试运行之前还原测试数据库。 如果我运行该exec分配的确切阶段,则我的类将按预期执行;但是当我运行整个构建时,我的类不会执行: 具体来说,它运行: 但不能与以下内容一起运行: -或- pom.xml: 我的pom.xml文件包括: 生命周期默认值: 我还没有对ma