【发布时间】:2015-10-19 10:35:57
【问题描述】:
我正在使用 sbt 0.13.8 和 xsbt-web-plugin 2.0.3
我有一个多模块 sbt 项目。打包时,其中一个模块应采用 war 文件的形式。 jar 文件中的所有其他内容。
当我添加 xsbt-web 插件时,打包会为所有模块生成 jars 和 wars。如何告诉 xsbt-web 插件仅将自身应用于应打包为战争的模块?
我已经找到了一种解决方案,即为每个非战争模块改变 packagedArtifacts 列表:
packagedArtifacts <<= packagedArtifacts map { as => as.filter(_._1.`type` != "war") }
但是,这是一个非本地更改,我必须将其应用于我(或团队成员)可能创建的每个新的非战争模块。
我不认为这是 StackOverflow 问题 How to “package” some modules to jars and others to wars in multi-module build with single task? 的重复,因为我没有使用程序集。
请注意,当前正在生成的 jar 模块的 jar 和 war 模块的 war 运行良好。我只是想避免有人试图部署一场本来应该是罐子的战争。
【问题讨论】:
-
您使用的是哪个版本的 xsbt-web-plugin?
-
我使用的是 xsbt-web-plugin 2.0.3。
-
你是在每个模块上使用
enablePlugins(),还是只在webapp上使用? -
@James 现在我根本不用它。我只需要打包战争的功能,而不需要在 sbt 中运行嵌入式 Web 服务器。以前,我只在 war 项目中尝试过,而且只在根项目中尝试过——在任何一种情况下,它似乎都没有任何区别。如果没有 enablePlugins(JettyPlugin) 我仍然会得到战争文件。只有当我不使用 addSbtPlugin 时,包的行为才会停止生成 war 文件。
-
啊哈,你说得对;这是一个错误。所有项目都会触发用于构建 .war 文件的
AutoPlugin,而不仅仅是enablePlugin()的项目。我将在 2.0.4 中修复此问题,您将能够通过enablePlugin(WarPlugin)仅使用*.war文件支持。等待更新。
标签: sbt xsbt-web-plugin