加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 18:33:07 所属栏目:安全 来源:网络整理
导读:我使用 scala 2.10.1与sbt将我的webapp打包为war文件. 为了有效的rsync增量,我想将war打包为.war文件,但没有zip压缩.我只需要知道如何为此配置我的构建. 更新: 所有这些插件文档都假设所有这些关于语法如何工作以及如何将任务组合成新任务的知识等等.我甚至
我使用 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 .

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

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

解决方法

如果您在目录中解压缩了war文件,则可以:

zip -r -0 project.war project/

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

[node@hip1 dev]$zip -v
Copyright (c) 1990-2008 Info-ZIP - Type 'zip "-L"' for software license.
This is Zip 3.0 (July 5th 2008),by Info-ZIP.

在战争结束后,你可以执行我认为的运行任务.

更新1

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

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

val exitcode = "zip -r -0 project.war project/"!

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

修改此操作以在目录中执行,但将.war放在目录上. path(2nd)参数应包含目录,以便在其中执行zip:

Process("zip" :: "-r" :: "-0" :: "../project.war" :: "." :: Nil,"/path/to/project/") !

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

How does the “scala.sys.process” from Scala 2.9 work?

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

更新2

对于未来的读者,请注意,压缩项目目录本身是行不通的,需要使用pushd在目录内执行war的zip,将结果战争放在目录之外,如OP中所述低于这个答案.正如Orange80所说:

pushd ./project && zip -r -0 ../project.war ./ && popd

更新3

看看这个,它可能完全符合你的需要,使用0表示没有压缩的选项:

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

一个插件,可以让你创建一个单独的可执行jar,可以使用选项(例如像“jar 0f blah.jar blah /”这样的命令中的“0”),我想你在下面的评论中提到创建没有压缩的jar文件.

对于使用我在SO上发现了这个:
SBT one-jar plugin

而且,如果它需要修改,它也是一个非常合理的插件示例,如果你把它放在家里?/ .sbt / plugins它将是全局的,并且可以在你的构建中以时尚的方式使用在SO回答上面.我希望至少有一点帮助/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读