我有一个bash脚本,我希望maven在编译阶段之后运行,因为脚本应该部署bundle。这是我试图在我的发布模块中使用的插件:
<plugin>
<artifactId>exec-maven-plugin</artifactId>
<groupId>org.codehaus.mojo</groupId>
<executions>
<execution>
<id>deploy-bundles</id>
<phase>install</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>${basedir}/deploy.sh</executable>
</configuration>
</execution>
</executions>
</plugin>
我的deploy.sh
位于正确的路径中,以便进行验证。现在当我mvn install
时,我收到以下错误:
[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.5.0:exec (deploy-bundles) on project module.release: Command execution failed. Cannot run program "/bla/bla/module.release/deploy.sh" (in directory "/bla/bla/module.release"): error=13, Permission denied -> [Help 1]
首先,我认为这是关于我写的bash脚本。所以我把它改成了这样一个简单的bash脚本:
#!/bin/bash
STR="Hello World!"
echo $STR
然而,我得到了同样的错误。所以这不是代码。我应该给予maven特权吗?应该使用sudo
命令吗?
答案 0 :(得分:3)
您需要为脚本设置适当的权限,并将权限也放入版本控制git(.gitattributes)或Subversion(svn:executable property)。
答案 1 :(得分:1)
获取存储在VCS中的文件权限可能很棘手,并不是每个VCS都擅长于此。
相反,您可以将脚本作为参数执行/bin/bash
(并从脚本中删除#!...
行)。
您的配置如下所示:
<configuration>
<executable>/bin/bash</executable>
<arguments><argument>${basedir}/deploy.sh</argument></arguments>
</configuration>