忍受我,我正在从Ant迁移到Maven2:我想我已经击中了Ant中容易的那些小东西,但在Maven却不是这样......
如何处理本地部署与创建存档/捆绑之间的差异,以便分发到另一台计算机?
我们假设我的项目输出是一个EAR加上一些额外的配置文件。正在积极处理项目的开发人员需要经常部署并重新部署到他的本地应用服务器(比如JBoss),而正在构建的集成工程师对于QA / production,只需要创建最终的归档程序集(tar / gz)。
在Ant中,我们有两个目标:“dev-deploy”和“bundle”。两者都做了完整的构建,但在最后一步有所不同:“dev-deploy”将EAR和配置文件复制到相应的本地文件夹,而“bundle”只是将EAR和&在tar.gz程序集中配置文件。
你在Maven中如何做到这一点?
我已经看到程序集插件可以创建档案(tar,gz等)或展开的目录(来自同一个程序集描述符)。我可以调用程序集:程序集或程序集:目录,但对于后者,如何将最终输出复制到本地JBoss部署文件夹?从related post来看,文件的临时复制似乎并不是Maven的真正意义所在,所以最好的副本可能是最合适的吗?
最后,由于程序集的类型可能会有所不同,具体取决于谁调用它,将程序集绑定到构建生命周期似乎并不明智,不是这样吗?但这意味着开发人员总是需要调用'mvn package',然后是'mvn assembly:directory'来重建和测试更改。相反,集成工程师将始终需要运行'mvn package',然后运行'mvn assembly:assembly'来创建可分发的归档。我希望为每个解决方案提供单命令解决方案,还是应该编写脚本?
答案 0 :(得分:4)
在Ant中,我们有两个目标:“dev-deploy”和“bundle”。两者都做了完整的构建,但在最后一步有所不同:“dev-deploy”将EAR和配置文件复制到相应的本地文件夹,而“bundle”只是将EAR和&在tar.gz程序集中配置文件。
不确定各自的本地文件夹对于“dev-deploy”的意思,但这听起来像mvn pacakge
正在做的事情,“捆绑”确实听起来像个maven {{3} }。
我已经看到程序集插件可以创建档案(tar,gz等)或展开的目录(来自同一个程序集描述符)。我可以调用程序集:assembly或assembly:目录,但对于后者,如何将最终输出复制到本地JBoss部署文件夹?从一篇相关文章看来,文件的临时复制并不是Maven的真正意义所在,所以最好的副本可能是最合适的吗?
我想我们在这里谈论集成工程师的任务。由于你没有解释“bundle”究竟包含什么,目标应用程序服务器是什么(我的理解是你正在使用JBoss进行QA /生产,但是,这是一个猜测),如果这个包必须是自动部署,很难想象所有解决方案和/或替代方案。但实际上,要复制/移动/解压缩/无论组件如何,maven antrun插件都是候选者。
最后,由于程序集的类型可能会有所不同,具体取决于谁调用它,将程序集绑定到构建生命周期似乎并不明智,不是这样吗?但这意味着开发人员总是需要调用'mvn package'后跟'mvn assembly:directory'来重建和测试更改。相反,集成工程师将始终需要运行'mvn package',然后运行'mvn assembly:assembly'来创建可分发的归档。我希望为每个解决方案提供单命令解决方案,还是应该编写脚本?
我的理解是集成工程师正在构建捆绑包。为什么开发人员需要捆绑包?这令人困惑......无论如何,我真的不需要细节来思考答案。您实际上可以将maven程序集插件声明为特定的assembly,一个用于开发,一个用于集成,并将build profiles或single
mojos绑定到每个配置文件中项目的构建生命周期。这将允许只使用一个命令并避免任何脚本(实际上,不要这样)。