Java项目构建

时间:2011-08-08 22:24:45

标签: java build intellij-idea gradle

我在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制作相同的内容?


我可能错过了一些东西,如果有人有经验,请帮帮我:)。

谢谢。

3 个答案:

答案 0 :(得分:3)

据我所知,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作为要打开的项目。我首先运行了项目的完整版本(Build - > Make Project),并遇到了spock.util.concurrent.BlockingVariables的问题。我不得不告诉IntelliJ不要为该类生成存根。我的Groovy不是很强大,所以我不能告诉你为什么修复这个问题或者这样做的含义是什么。之后,我能够成功运行spock-spring / src / test / groovy / org / spockframework / spring / InjectionExamples.groovy。然后我在该文件的第38行(service instanceof IService1)放置一个断点,然后我就可以调试它并在该行中断。

值得注意的是,Gradle构建不包含该项目中的所有模块。默认的Maven构建总共包含10个模块,而Gradle构建只有6个。 Gradle构建不包括spock-maven,spock-example,spock-grails-support或spock-grails。如果我不得不猜测,他们可能会分阶段过渡到Gradle,但他们还没有完全相同。

答案 1 :(得分:0)

我不清楚为什么要尝试使用Gradle,它是否提供了您需要的功能?你觉得有些功能引人注目吗?我没有使用它的经验,但如果你只是想构建一个Java项目,我将使用Eclipse IDE保证Ant。 Ant是我尝试的第一个构建程序,我不需要任何其他东西。根据我的理解,Maven也非常好,并且很好地与Eclipse集成。

答案 2 :(得分:0)

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

Maven是有前途的构建之一,它实际上不仅仅是构建。它是持续集成构建系统的关键推动因素,即hudson + maven + continuum + ...

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

它采用了“标准”的包装实践,而且非常简洁明了。

总的来说,我最近看到了Maven开始的更多项目,项目本身也是Apache的一部分并且非常活跃。

Maven无法与Maven vs Ant中的ant进行比较,Maven不仅仅是构建脚本,而是Ant。使用Maven通过插件可以实现许多功能(例如Maven Cargo插件,可以简化部署到应用程序服务器)。