关于与eclipse良好集成的Java构建工具的建议

关于与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,我们

我在一个小团队(3人)中工作,负责几个模块(目前约10个)。编译、集成和管理构建版本变得越来越单调乏味。 我正在寻找一个好的构建/集成工具来取代/完成Ant

以下是我们当前开发环境的描述: -根据第三方JAR的不同,有几个模块 -有些可能会导出Jar,有些可能会导出WAR,有些可能会导出独立的、可运行的Jar(带胖Jar) -Javadoc为他们所有人准备 -我们使用eclipse -每个模块的自定义Ant脚本。eclipse配置和Ant脚本之间有许多冗余信息。例如,对于独立Fat JAR,我们列出了所有递归依赖项,而理想情况下,它可以从eclipse配置中导入。 -源代码使用SVN进行版本控制

以下是我想要一个完美的集成工具为我做的:

  • 自动化模块的发布和版本控制。理想情况下,集成工具应该检测是否需要新版本。例如,如果我想发布一个依赖于项目B的项目a,并且如果我在本地对项目B做了一些小的更改,那么集成工具也应该首先发布一个新版本的B,并在此基础上生成a

  • 与eclipse紧密集成,以便它可以从配置中获得模块和第三方LIB之间的依赖关系。顺便说一句,我想继续使用eclipse配置构建路径,而不更新其他一些“.xml”内容。我看到Gradle可以从它的配置中生成eclipse项目文件,但是对应的版本会很棒

  • 实现本地项目的“实时”和透明开发。我的意思是,在开发主/叶项目时,我经常对核心/通用项目进行小的更改。我希望我对核心项目所做的更改可以立即用于leaf项目,而无需发布(甚至在本地)我的核心项目的JAR

  • 在外部服务器上存储模块版本的所有版本。最简单的(共享文件夹/Webdav)将是最好的。一个包含模块和交付工件列表的漂亮网页也很不错

我到处找了很多东西。从Ant4eclipse(将Eclipse配置集成到我的Ant脚本中)到Maven/Ivy/Gradle工具

我有点困惑。 以下是我迄今为止的理解: -Maven是一个伟大的工具,但它有点僵化,迫使您屈从于它的结构和概念。它基于描述而不是脚本。如果你走了这条路,你必须开发自己的插件。 -常春藤没有maven强大,它处理的东西更少,但更灵活。 -格拉德尔介于两者之间。它是通用的。它支持脚本以及“基于约定”的配置。它集成并扩展了Ant

所以在这一点上,我正在寻找来自真实用户的真实推荐。 你用什么工具?怎样?你有和我一样的需求吗? 它是让你的生活轻松还是妨碍了你

是否有一些示例用例或工作区框架,我可以用它们作为起点来了解这些工具的功能

对不起,这封信太长了。 提前谢谢你的建议

亲切问候,


拉斐尔

CI工具?对我来说,只有一个:


我曾经为Java设置过一个软件开发环境,包括以下组件:

  • EclipseIDE
  • 反复无常
  • 布奇拉
  • 马文
  • 关系
  • 哈德逊CI
还有一些apache、mysql、php、perl、python。。为了整合


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(可能)不是唯一的候选人,但我相信它会适合:

  • 您的项目没有那么奇特或复杂,您的描述中没有什么可怕的地方(可能需要对结构进行一些重构,但这不应该是一个问题)