如何配置build.sbt以便xsbt-web-plugin创建war文件而不压缩?

jps*_*ain 5 scala sbt xsbt-web-plugin

我使用scala 2.10.1与sbt将我的webapp打包为war文件.为了有效的rsync增量,我想将war打包为.war文件,但没有zip压缩.我只需要知道如何为此配置我的构建.

更新:
所有这些插件文档都假设所有这些关于语法如何工作以及如何将任务组合到新任务等方面的知识.我甚至不知道如何创建一个新的任务来执行包然后命令.到目前为止,没有一个答案具体说过,"这就是你做的......"

为了清楚起见,这就是我所要求的:

我需要一个执行此操作的任务"packnozip":

1)运行"包"

2)运行shell命令:

$ mkdir ./Whatever 
$ pushd ./Whatever 
$ jar xvf ../Whatever.war 
$ popd 
$ mv ./Whatever.war ./Whatever.war.orig 
$ jar cvM0f ./Whatever.war -C ./Whatever . 
Run Code Online (Sandbox Code Playgroud)

所以我要说的是我想在sbt控制台中输入"packnozip"并让它做#1然后#2.

现在我只是手动做#2,如果它可以自动化,这似乎很傻.另外看一个30MB的文件被rsync b/c完全重新发布它并不是很难看,当一个34MB的无压缩文件仅增加13%的数据时,并且只需要几分之一秒来发送有效差异的b/c,更不用说了"-z"无论如何都会压缩转移.

hoo*_*nto 2

如果您将 war 文件解压到某个目录中,您可以:

\n\n
zip -r -0 project.war project/\n
Run Code Online (Sandbox Code Playgroud)\n\n

那应该是零压缩。如果您没有看到这些选项,这是我的设置:

\n\n
[node@hip1 dev]$ zip -v\nCopyright (c) 1990-2008 Info-ZIP - Type \'zip "-L"\' for software license.\nThis is Zip 3.0 (July 5th 2008), by Info-ZIP.\n
Run Code Online (Sandbox Code Playgroud)\n\n

我相信,在战争打包之后,您可以将其作为运行任务执行。

\n\n

更新1

\n\n

我相信这是满足您需求的最佳方式:

\n\n

http://www.scala-sbt.org/release/docs/Detailed-Topics/Process

\n\n
val exitcode = "zip -r -0 project.war project/"!\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是,如果您需要从特定目录工作(请参阅下面的更新 2):

\n\n

将此修改为在目录中执行,但将 .war 放置在目录上方。路径(第二个)参数应包含目录,以便在其中执行 zip:

\n\n
Process("zip" :: "-r" :: "-0" :: "../project.war" :: "." :: Nil, "/path/to/project/") !\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是关于 ProcessBuilder 的另一个问题也可能有帮助:

\n\n

Scala 2.9 中的 \xe2\x80\x9cscala.sys.process\xe2\x80\x9d 如何工作?

\n\n

(注意:您不需要导入 scala.sys.process._)

\n\n

更新2

\n\n

对于未来的读者,请注意,压缩项目目录本身是行不通的,需要使用pushd在目录内执行war的zip,将生成的war放在目录之外,正如OP在评论中提到的那样在这个答案下面。正如 Orange80 提到的:

\n\n
pushd ./project && zip -r -0 ../project.war ./ && popd\n
Run Code Online (Sandbox Code Playgroud)\n\n

更新3

\n\n

看看这个,它可能完全满足您的需要,使用 0 表示不压缩的选项:

\n\n

https://github.com/sbt/sbt-onejar

\n\n

一个允许您创建单个可执行 jar 的插件,可以使用选项(例如“0”,如“jar 0f blah.jar blah/”之类的命令中的),我认为正如您在下面的评论中提到的那样创建未压缩的 jar 文件。

\n\n

对于使用,我在 SO:\n SBT one-jar 插件上找到了这个

\n\n

而且,如果需要修改它,它也是一个非常合理的插件示例,如果您将其放在您的 home ~/.sbt/plugins 中,它将是全局的,并且可以在您的构建中使用上面的答案中提到了时尚。我希望这至少有一点帮助/

\n