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

Rap*_*vet 6 java eclipse maven-2 ivy gradle

我在一个小团队(3人)的几个模块(目前大约10个)工作.构建版本的编译,集成和管理变得越来越乏味.我正在寻找一个好的构建/集成工具来替换/完成Ant.

以下是我们当前开发环境的描述: - 几个模块取决于每个第三方JAR - 一些可能导出JARS,一些导出WARS,一些导出独立,可运行JARS(使用Fat-Jar) - 所有这些Javadoc - 我们使用eclipse - 每个模块的自定义Ant脚本.eclipse配置和Ant脚本之间的许多冗余信息.例如,对于独立的Fat-JAR,我们列出了所有的递归依赖关系,而理想情况下,它可以清楚地从eclipse配置中导入. - 源代码使用SVN进行版本控制

以下是我想要的完美集成工具:

  • 自动化模块的发布和版本控制.理想情况下,集成工具应检测是否需要新版本.例如,如果我想要发布依赖于项目B的项目A,并且如果我在本地对项目B进行了小的更改,那么集成工具应该首先发布新版本的B并根据它.

  • 与eclipse强烈集成,以便它可以从其配置中获取模块和第三方库之间的依赖关系.顺便说一下,我想继续用eclipse配置构建路径而不更新其他一些".xml"的东西.我看到Gradle可以从其配置生成eclipse项目文件,但对应的将是很好的.

  • 在本地项目上启用"实时"和透明的开发.我的意思是我经常在开发主要/"叶子"项目时对核心/公共项目进行小的更改.我希望我对核心项目的更改立即可用于项目,而无需发布(甚至本地)我的核心项目的JAR.

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

我环顾四周寻找很多东西.从Ant4eclipse(将Eclipse配置集成到我的Ant脚本中)到Maven/Ivy/Gradle工具.

我有点困惑.这是我到目前为止所理解的: - Maven是一个伟大的/大工具,但有点僵硬,迫使你屈服于它的结构和概念.它基于描述而不是脚本.如果你走出这条道路,你必须开发自己的插件. - 常春藤不如maven强大,它处理的东西少,但更灵活. - Gradle介于两者之间.这是通用的.它支持脚本以及"基于约定"的配置.它集成了Ant并扩展了它.

所以在这一点上,我正在寻找真实用户的实际推荐.你用什么工具?怎么样 ?你有和我一样的需求吗?它是否会缓解您的生活或妨碍您的生活?

是否有一些用例或工作区框架的示例,我可以将其作为起点来查看这些工具的功能?

对不起这封邮件的长度.并提前感谢您的建议.

亲切的问候,

拉斐尔

Pas*_*ent 2

自动化模块的发布和版本控制 (...)

版本控制和存储库的概念是 Maven 内置的,它们可以适合这里。

Maven 支持SNAPSHOT 依赖关系。使用快照时,Maven 将在您运行构建时定期尝试从存储库下载最新的可用快照。SNAPSHOT 通常在项目正在积极开发时使用。

Maven 2 还支持版本范围(我并不真正推荐它们,但那是另一个故事),例如允许将 A 配置为依赖于[4.0,)B 的版本(任何大于或等于 4.0 的版本)。如果您构建并发布了 B 的新版本,A 就会使用它。

与 eclipse 紧密集成

m2eclipse插件提供与 Eclipse 的双向同步。

实现本地项目的“实时”和透明开发。

m2eclipse插件支持“工作空间解析”:如果项目A依赖于项目B并且项目B在工作空间中,则可以将A配置为依赖于B源而不是B.jar(如果我不这样做,这是默认模式错误的)。因此,B 源的更改将直接可见,无需构建 B.jar。

将我的模块的所有版本存储在外部服务器上。

正如前面提到的,这实际上是 Maven 的一个中心概念(你甚至没有选择),并且支持通过 file:// 或 dav:// 进行部署。


总而言之,Maven(可能)不是唯一的候选者,但我确信它适合:

  • 您的项目并不那么奇特或复杂,您的描述中没有什么令人恐惧的(可能需要对结构进行一些重构,但这不应该是一个大问题)。
  • Maven 还带来了基于最佳实践的工作流程。
  • m2eclipse 提供与 IDE 的强大集成。

但 Maven 有一些学习曲线。