【发布时间】: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