关于与eclipse良好集成的Java构建工具的建议
我在一个小团队(3人)中工作,负责几个模块(目前约10个)。编译、集成和管理构建版本变得越来越单调乏味。 我正在寻找一个好的构建/集成工具来取代/完成Ant 以下是我们当前开发环境的描述: -根据第三方JAR的不同,有几个模块 -有些可能会导出Jar,有些可能会导出WAR,有些可能会导出独立的、可运行的Jar(带胖Jar) -Javadoc为他们所有人准备 -我们使用eclipse -每个模块的自定义Ant脚本。eclipse配置和Ant脚本之间有许多冗余信息。例如,对于独立Fat JAR,我们列出了所有递归依赖项,而理想情况下,它可以从eclipse配置中导入。 -源代码使用SVN进行版本控制 以下是我想要一个完美的集成工具为我做的:关于与eclipse良好集成的Java构建工具的建议,java,eclipse,maven-2,ivy,gradle,Java,Eclipse,Maven 2,Ivy,Gradle,我在一个小团队(3人)中工作,负责几个模块(目前约10个)。编译、集成和管理构建版本变得越来越单调乏味。 我正在寻找一个好的构建/集成工具来取代/完成Ant 以下是我们当前开发环境的描述: -根据第三方JAR的不同,有几个模块 -有些可能会导出Jar,有些可能会导出WAR,有些可能会导出独立的、可运行的Jar(带胖Jar) -Javadoc为他们所有人准备 -我们使用eclipse -每个模块的自定义Ant脚本。eclipse配置和Ant脚本之间有许多冗余信息。例如,对于独立Fat JAR,我们
- 自动化模块的发布和版本控制。理想情况下,集成工具应该检测是否需要新版本。例如,如果我想发布一个依赖于项目B的项目a,并且如果我在本地对项目B做了一些小的更改,那么集成工具也应该首先发布一个新版本的B,并在此基础上生成a
- 与eclipse紧密集成,以便它可以从配置中获得模块和第三方LIB之间的依赖关系。顺便说一句,我想继续使用eclipse配置构建路径,而不更新其他一些“.xml”内容。我看到Gradle可以从它的配置中生成eclipse项目文件,但是对应的版本会很棒
- 实现本地项目的“实时”和透明开发。我的意思是,在开发主/叶项目时,我经常对核心/通用项目进行小的更改。我希望我对核心项目所做的更改可以立即用于leaf项目,而无需发布(甚至在本地)我的核心项目的JAR
- 在外部服务器上存储模块版本的所有版本。最简单的(共享文件夹/Webdav)将是最好的。一个包含模块和交付工件列表的漂亮网页也很不错
拉斐尔CI工具?对我来说,只有一个:
我曾经为Java设置过一个软件开发环境,包括以下组件:
- EclipseIDE
- 反复无常
- 布奇拉
- 马文
- 关系
- 哈德逊CI
hudson没有与eclipse集成,这是故意的,因为我想在一个单独的服务器上构建。对于所有其他工具,我有一个完美的交叉集成(比如:eclipse上的mylyn与bugzilla对话,使用maven eclipse的m2eclipse,hudson的许多插件,…)您的一些主题是部署和发布管理的一部分 您可以查看以下产品:
(免费的)看看蚂蚁常春藤 自动化模块的发布和版本控制(…) 版本控制和存储库的概念是Maven内置的,可以在这里使用 Maven支持。使用快照时,Maven会在运行构建时定期尝试从存储库下载最新的可用快照。快照通常在项目处于活动开发状态时使用 Maven 2还支持(我并不真正推荐它们,但这是另一种情况),例如允许将A配置为依赖B的版本
[4.0,)
(任何大于或等于4.0的版本)。如果您构建并发布B的新版本,A将使用它
与eclipse紧密集成
该插件提供了与Eclipse的双向同步
实现本地项目的“实时”和透明开发
m2eclipse插件支持“工作区解析”:如果项目A依赖于项目B,并且项目B在工作区中,您可以将A配置为依赖于B源而不依赖于B.jar(如果我没有错的话,这是默认模式)。因此,对B源的更改将直接可见,而无需构建B.jar
在外部服务器上存储模块版本的所有版本
如前所述,这实际上是Maven的一个核心概念(您甚至没有选择权),通过file://或dav://部署都受支持
总而言之,Maven(可能)不是唯一的候选人,但我相信它会适合:
- 您的项目没有那么奇特或复杂,您的描述中没有什么可怕的地方(可能需要对结构进行一些重构,但这不应该是一个问题)