我想从maven的pom.xml执行一个cygwin脚本

时间:2015-09-30 08:41:38

标签: shell maven cygwin

我需要在cygwin下执行shell脚本,因为我在Windows下。 shell被执行但是命令没有'识别...... 见下文:

<build>
<plugins>
        <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.7</version>
        <executions>
           <execution>
                    <id>openOCD</id>
                    <phase>validate</phase>
                    <configuration combine.self="override">
                        <tasks>
                            <exec
                            executable="C:/cygwin/bin/sh.exe"
                            failonerror="true">
                            <arg line="${project.basedir}/make.sh" />
                            </exec>
                        </tasks>
                    </configuration>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
        </executions>
        </plugin>
    </plugins>
</build>

目前的make.sh似乎并不复杂:

 #!/bin/sh 

export PATH=C:\cygwin\bin:$PATH
export BLA=C:\blabla
cd $BLA
mkdir testMaven

maven,通过Eclipse获取有关Run As ... Maven Install:

命令的信息
 [INFO] Executing tasks

 main:
 [exec] C:bla
 [exec]       C:\Users\truc\TestSWMavensousKepler\pouet\bla/make.sh: line 6: mkdir: command not found
 [INFO] ------------------------------------------------------------------------
 [INFO] BUILD FAILURE
你知道吗? 谢谢:))

2 个答案:

答案 0 :(得分:0)

C:\cygwin\bin\bash make.sh将运行您的linux命令,您可以使用它来运行您的shell脚本文件。此外,任务标记(<task>)现已弃用,您应该使用目标(<target>)。理想情况下,代码应该工作。您可以在build.xml中添加可以在<target></target>之间添加的任何内容(使用ANT)。

<target>
    <exec executable="C:\cygwin\bin\bash">
    <arg value="${project.basedir}/make.sh"/>
</target>

确保C:\cygwin\bin\bash make.sh正常工作。

答案 1 :(得分:0)

我知道它已经很晚了(发布后1年),但我遇到了同样的问题,并决定发布一篇关于如何修复它的快速文章。

简而言之: 1.如有必要,为您的开发环境创建配置文件 2.使用cmd作为可执行文件并提供/ C和脚本作为参数。

如果您需要,请参阅文章:https://medium.com/@jimmysthoughts/happily-coexisting-building-with-exec-maven-plugin-on-both-os-x-and-cygwin-d9fb0c4a02cc