【问题标题】:Java project buildingJava项目建设
【发布时间】:2011-10-22 19:02:14
【问题描述】:

我在Java有一些与项目建设有关的问题。

当我试图找到一些使用 Gradle 作为其构建系统的项目的好例子时,我正在搜索 Google Code

有一些,我尝试检查这个项目并检查了相关的build.gradle 文件:http://code.google.com/p/spock/source/browse/trunk/spock-example/build.gradle?r=1316


现在,我可以使用命令行轻松构建这个项目,并且所有依赖项都可以很好地自动解决。但是,自动构建也会生成一个IntelliJ IDEA 项目。

所以,问题

我确信网络上有很多基于Gradle 的项目。这些像Gradle 这样的构建系统是如何与IDE 集成的?

例如,为IntelliJ IDEA 生成的项目无法使用IDE 的内部工具进行编译,也无法调试(!)

我唯一能做的就是扩展测试用例运行它们打包最终的jar这样好吗?我不太习惯 Java 构建系统,但我认为它们应该与 IDE 轻松集成。

Ant/Maven 做同样的事情怎么样?


我可能遗漏了一些东西,如果有人有经验,请帮助我:)

谢谢。

【问题讨论】:

  • 您正在查看旧版本的 spock-example。 Spock 代码库已移至 GitHub。尝试更新版本的 spock-example(例如来自 code.google.com/p/spock/downloads/…)。从 IDEA 编译、运行和调试测试应该可以正常工作。

标签: java build intellij-idea gradle


【解决方案1】:

据我所知,Gradle 的 IntelliJ 支持已接近完成。我已经成功地使用它为一个相当复杂的项目生成了一个 IntelliJ 项目配置。我没有太多机会使用它,因为我只是在考虑从 Gradle 过渡到 Maven,但我没有注意到您似乎在描述的任何问题。也许您正在使用的构建使用的是旧版本的 Gradle,它还没有良好的 IDE 支持?你能举一些具体的例子来说明一些事情没有按照你的预期工作吗?

编辑:专门针对您的问题,我这样做了,它在 Windows 7 上与 Gradle 1.0-milestone-4、IntelliJ 10.5 和 JDK 1.6.0_26 一起使用:

git svn clone -r HEAD http://spock.googlecode.com/svn/trunk spock
cd spock
gradle idea

然后,在 IntelliJ 中,文件 -> 打开项目...,导航到并选择 .../spock/spock.ipr 作为要打开的项目。我首先运行了项目的完整构建(构建 -> 制作项目),然后遇到了 spock.util.concurrent.BlockingVariables 的问题。我不得不告诉 IntelliJ 不要为该类生成存根。我的 Groovy 不是很强大,所以我不能告诉你为什么它解决了问题或者这样做的含义是什么。之后,我能够成功运行 spock-spring/src/test/groovy/org/spockframework/spring/InjectionExamples.groovy。然后我在该文件的第 38 行 (service instanceof IService1) 设置了一个断点,我能够对其进行调试并在该行中断。

值得注意的是,Gradle 构建并未包含该项目中的所有模块。默认的 Maven 构建总共包括十个模块,而 Gradle 构建只有六个。 Gradle 构建不包括 spock-maven、spock-example、spock-grails-support 或 spock-grails。如果我不得不猜测,他们可能正在分阶段过渡到 Gradle,而且还没有完全实现。

【讨论】:

  • 我可能缺乏一些知识:) 假设我使用Gradle 创建了一个带有适当模块的IntelliJ IDEA 项目。例如,我应该怎么做才能调试我的库的单元测试?
  • @Yippie:在我的回答中添加了一些细节
【解决方案2】:

我不太清楚您为什么尝试使用 Gradle,它是否提供了一些您需要的功能?一些你觉得引人注目的功能?我没有这方面的经验,但如果您只是想构建一个 Java 项目,我将使用 Eclipse IDE 为 Ant 担保。 Ant 是我尝试的第一个构建程序,我不需要其他任何东西。据我了解,Maven也是相当不错的,和Eclipse的集成也很好。

【讨论】:

  • 好吧,我可以使用包装盒中的IDE 功能构建一个简单的项目。然而,虽然只是“寻找有趣的东西”,但我找到了Gradle,现在我愿意习惯了。
  • @rjacks:Gradle 结合了 Ant 和 Maven 的经验教训,并尝试创建下一代构建工具。你真的应该看看它。
【解决方案3】:

我强烈建议您查看Maven。 Maven 不绑定到任何特定的 IDE,虽然我可以想象它的插件可以在你的 IDE 中找到,它有对Eclipse 的插件支持。

Maven 是有前途的构建之一,它所做的不仅仅是构建。它是持续集成构建系统的关键推动者,即 hudson + maven + continuum + ...

它具有依赖管理,因此您可以指定您希望使用的外部库,并且在编译和构建期间它透明地下载并链接到您的构建。

它具有正在采用的“标准”包装实践,并且非常理智和简单。

总的来说,我最近看到了更多使用 Maven 启动的项目,并且该项目本身是 Apache 的一部分并且非常活跃。

Maven 不能与 Maven vs Ant 中的 ant 相提并论,与 Ant 相比,Maven 不仅仅是一个构建脚本。使用 Maven 通过插件可以实现很多事情(例如 Maven Cargo 插件,它简化了对应用服务器的部署)。

【讨论】:

  • Gradle 具有您列出的大部分功能,因为它遵循 Maven 约定优于配置的方法。我尚未检查的一件事是它与 CI 服务器集成的难易程度。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-22
  • 2021-08-26
  • 2014-05-22
  • 1970-01-01
  • 2010-12-22
  • 1970-01-01
  • 2014-05-07
相关资源
最近更新 更多