我在Java jars部署中相当noob。我有以下场景: 我在eclipse中有大约6个项目,它们有各种类型(通用接口的核心项目,包含osgi包的项目,带有测试的项目,带有用于Web部署的servlet的项目)。
我越来越难以快速部署任何内容,今天我面临着OSGi捆绑部署,我希望快速可靠地打包我的捆绑包并将其部署到容器中。直到今天,我只是通过eclipse导出jar然后编辑清单来愚蠢地做它。
我认为最好的方法(没有太多的工作)将使用一个大的Ant构建文件,其目标将解决我最迫切需要的东西(现在创建OSGi包)然后从eclipse逐步移动更多的构建逻辑到构建文件(我知道有一种简单的方法可以通过eclipse运行ant目标,甚至用自定义构建文件替换eclipse的autoprojectbuild逻辑)。
所以这是我的计划:
1)创建1个主构建文件,其中包含src目录中的所有内容(包含所有项目)
2)创建用OSGi包构建项目的任务。使用带有手工制作清单的manifest.txt为我的包和复制粘贴(通过ant任务)所有jar,在这个包中需要并使用Bundle-ClassPath来声明我的内部包依赖
3)创建JUnit测试运行器作为自定义目标
4)创建其他目标以构建各种项目
5)最终在发布之前,创建大目标“dist”来打包整个软件所以我的两个问题是:
我的这个计划是好的(在开发时间和合理的复杂性方面)?
使用1个大型构建文件有什么缺点吗?我阅读了Ant in Action一书中的部分内容,但看起来多个构建文件只会导致更复杂的问题(在项目之间声明依赖关系并不容易.OTH有一个大文件我可以使用target depends属性。)
答案 0 :(得分:2)
进行脚本化构建/部署几乎总是一个很好的步骤。它只是为自动化开辟了更多的可能性,不仅仅是部署,还包括测试构建,持续集成等。我个人不会试图在eclipse(你的IDE)和构建工具之间进行集成。如果它可以轻松地点击eclipse中的某些内容,那很不错,但是从命令行运行脚本可能很有必要。如果您发现ant不是您项目的正确工具,或者甚至您可能希望有一天转移到其他IDE,那么将这两个问题(开发经验,来自构建生命周期)分开也将开辟更多选项。
答案 1 :(得分:1)
听起来像Maven而不是Ant的好人选。所有你正在谈论的事情都由Maven原型所涵盖。这是一个艰难的学习曲线,但确实值得努力。