【问题标题】:exec-maven-plugin cannot execute .sh script: permission deniedexec-maven-plugin 无法执行 .sh 脚本:权限被拒绝
【发布时间】:2016-11-18 12:22:22
【问题描述】:

我有一个 bash 脚本,我希望 maven 在编译阶段之后运行它,因为该脚本应该部署包。这是我试图在我的发布模块中使用的插件:

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

【问题讨论】:

  • 脚本必须有权限才能执行。 exec-maven-plugin 与此无关...您需要在 linux chmod +x deploy.sh 上设置执行属性还需要将其添加到您的版本控制(git,subversion)...
  • 我希望一切都可以通过简单的mvn install 命令完成,因为用户应该处理chmod 等。有没有办法告诉 maven 来处理这个?
  • 正如我所说,您需要正确设置权限并将其正确放入您的版本控制中...我不知道您所说的user should be.. 是什么意思?
  • 对不起,我看错了你的信息,现在我明白了,它确实有效,谢谢。如果你写这个作为答案,我会接受。

标签: bash maven exec-maven-plugin


【解决方案1】:

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

【讨论】:

  • 谢谢。 this 是 Git 的正确方法吗?
  • 这个link帮我更改了linux权限:&gt; git update-index --chmod=+x script.sh
【解决方案2】:

获取存储在 VCS 中的文件权限可能很棘手,并不是每个 VCS 都擅长此操作。

相反,您可以使用脚本作为参数执行 /bin/bash(并从脚本中删除 #!... 行)。

您的配置可能如下所示:

<configuration>
    <executable>/bin/bash</executable>
    <arguments><argument>${basedir}/deploy.sh</argument></arguments>
</configuration>

(而且,在一般情况下,/bin/sh 更便携,bash 可以在许多不同的地方。)

【讨论】:

  • 为我工作!不得不简单地从 /bin/bash 更改为 bash,但它确实有效。谢谢!
猜你喜欢
  • 2018-03-25
  • 2019-11-22
  • 2016-05-22
  • 2014-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多