war文件中的可执行文件

时间:2010-07-06 17:04:10

标签: java java-ee web-applications war

我们希望发布一些帮助脚本(shell脚本)作为应用程序之战的一部分。不幸的是,我们的构建系统(maven)似乎丢弃了所有文件的权限,并且脚本最终没有设置可执行位。

甚至可以这样做吗? .war格式是否支持可执行文件?如果是:如何告诉maven保留权限/在过程中的某个地方修复它们?

4 个答案:

答案 0 :(得分:4)

问题更可能是底层zip格式不支持这些位。

如果使用脚本名称显式执行/ bin / sh,则不需要设置执行位。

另请注意,您的程序(知道脚本的位置)可以在启动之前调用“chmod + x script.sh”。

答案 1 :(得分:1)

AFAIK,无法在war / jar中设置文件权限(但是,当使用Maven Assembly Plugin创建项目的二进制分发存档时,这是可能的,但这是另一个故事)。

所以,我要么:

  • 交付(作为二进制分发)并在webapp~或〜
  • 之外运行这些脚本
  • 从类路径中读取文件,将它们写入java.io.tmpdir目录,设置执行位,然后从那里执行~~~
  • 使用@Thorbjørn解决方案(没试过,但我想它会起作用);我只是想知道你执行这些脚本的位置。

答案 2 :(得分:1)

您还可以直接从Java代码中检查并设置可执行标志。见http://docs.oracle.com/javase/6/docs/api/java/io/File.html#setExecutable%28boolean,%20boolean%29

答案 3 :(得分:0)

在WAR之外提供可执行文件。从WAR中调用它们。