Maven Exec插件不在Windows上使用系统路径?

时间:2010-10-28 20:52:25

标签: java windows maven-2 maven

这怎么能在Windows中不起作用?

   <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.2</version>
    <executions>
     <execution>
      <id>deploy-dev-ssh</id>
      <phase>install</phase>
      <goals>
       <goal>exec</goal>
      </goals>
     </execution>
    </executions>
    <configuration>
     <executable>echo</executable>
     <arguments>
      <argument>hello</argument>
     </arguments>
    </configuration>
   </plugin>

我在运行时得到这个:

[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2:exec (do-this) on project <my_project_name>: Command execution failed. Cannot run program "echo" (in directory "<my_local_path>"): CreateProcess error=2, The system cannot find the file specified -> [Help 1]

如何回应不在PATH上?

2 个答案:

答案 0 :(得分:9)

这里的问题是echo是cmd.exe程序的命令,它不是Unix中的独立进程\应用程序。为了做你想做的事情,你需要使用'echo','/ C'调用cmd作为可执行文件(告诉cmd你传递了一个命令 - 在你的Windows上看到'cmd /?'命令行。)和'hello'作为参数。

像这样:

            <configuration>
                <executable>cmd</executable>
                <arguments>
                    <argument>/C</argument>
                    <argument>echo</argument>
                    <argument>hello</argument>
                </arguments>
            </configuration>

答案 1 :(得分:3)

您还可以在正在运行的目录中创建 echo.bat 文件,并将内容设置为:

@echo %*

此技术对于同时支持Windows和Linux构建环境特别方便。也许&#34;回声&#34;这不是一个很好的例子,但是你可能遇到在Windows和Linux上都存在相同命令的情况。