作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 gradle 来管理多项目 J2EE 构建——最终目标是生成一系列可以部署到目标服务器、解压缩和运行的服务器包/工件。
换句话说,每个工件都包含它运行所需的一切——减去 JDK。
项目结构看起来有点像这样:
Root project 'proto' - This is the master-build project
+--- Project ':applications' - Default build settings for applications
| +--- Project ':applications:foo' - Foo API
| +--- Project ':applications:bar' - Bar API
| \--- Project ':applications:baz' - Baz API
+--- Project ':common' - Common code shared by multiple projects
| \--- Project ':common:subcomponents' - Settings shared by subcomponents
| +--- Project ':common:subcomponents:configuration' - Configuration
| \--- Project ':common:subcomponents:initializer' - Initializers
+--- Project ':servers' - Default tasks for building server artifacts
| +--- Project ':servers:foobar' - Assembles and runs the foobar server
| +--- Project ':servers:foobaz' - Assembles and runs the foobaz server
| \--- Project ':servers:barbaz' - Assembles and runs the barbaz server
\--- Project ':webapps' - These are the defaults for webapps
+--- Project ':webapps:foo' - The webapp for foo
+--- Project ':webapps:bar' - The webapp for bar
\--- Project ':webapps:baz' - The webapp for baz
最佳答案
我认为在单独的脚本中分离捆绑逻辑总是值得的,因为它还简化了在另一个项目中的使用。另请注意,您不一定需要编写插件来完成此任务——您可以从 buildSrc
directory 中的脚本开始。在主项目中。
我猜 :servers
的子项目存储一些要注入(inject)可分发的配置,因此您的结构对我来说很有意义。然后脚本将定义一个新任务,该任务将按约定检索所有文件(:servers
项目的通用目录结构,从 :webapps
子项目中获取 WAR,与我们正在执行的项目同名...) .
至于你的最后一个问题,我认为这取决于目标操作系统——例如如果它是 Debian 可能会生成一个仅包含应用程序 WAR 和配置并依赖于容器包(来自官方 repo 或由您构建)的包对我来说会更自然。
关于plugins - Gradle - 什么时候插件比脚本更可取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6147258/
我们构建了一个基于 Netty/NIO 的服务,我正在考虑将该服务部署到我们的生产环境中。我们部署服务的标准方式是作为 WAR,部署在 Tomcat 中。 当我在这里提出相同的方法时,我得到了“不应该
我是一名优秀的程序员,十分优秀!