2016-07-15 140 views
0

我有一个bash脚本,我希望maven在编译阶段后运行,因为脚本应该部署捆绑包。这里是我想在我发布模块利用插件:exec-maven-plugin无法执行.sh脚本:权限被拒绝

<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命令?

+1

该脚本必须具有执行权限。 exec-maven-plugin并不相关...你需要在linux'chmod + x deploy.sh'上设置执行属性,你还需要将它添加到你的版本控制(git,subversion)... – khmarbaise

+0

我想要所有事情都要用简单的'mvn install'命令完成,因为用户应该处理'chmod'等。有没有办法告诉maven来处理这个问题? –

+1

正如我所说的,您需要正确设置权限并将其正确地放入您的版本控制中......我不知道您的用户应该是什么意思? – khmarbaise

回答

2

您需要为脚本设置适当的权限,并将权限也放入版本控制git(.gitattributes)或Subversion(svn:executable属性)中。

+0

谢谢。是[这](http://stackoverflow.com/a/10783833/6533075)正确的方式来做它的Git? –