向IntelliJ Project添加Gradle支持的最佳方法


168

我到处环顾了很多,还没有找到将现有IntelliJ项目转换为Gradle的最佳解决方案。我在团队环境中工作,我们目前共享.ipr文件,因为我们要跟踪一些构建配置。最终,我们将摆脱那些偏爱Gradle的人,但是在Gradle转换完成之前,我无法搞砸。

另外,我们的Java源文件位于src目录的根目录中,而不是标准的src / main / java。

有什么方法可以将Gradle添加到项目中,而又不会使我删除并重新创建IntelliJ项目,又不会在其他人进行Git拉动时搞砸其他人呢?


2
要回答源目录的问题-您需要使用sourceSets覆盖默认源目录。看看我们如何在MongoDB Java驱动程序中做到这一点:github.com/mongodb/mongo-java-driver/blob/…–
Trisha

Answers:


207

加:

build.gradle 

在您的根项目文件夹中,并使用例如插件:

apply plugin: 'idea'
//and standard one
apply plugin: 'java'

并从命令行中触发此错误:

gradle cleanIdea 

在那之后:

gradle idea

之后一切都应该正常


7
尝试此解决方案时,是否有人遇到错误“模块'xx'没有受gradle支持?如果是的话,如何解决
Marquis Blount

谢谢,这让我发疯,并且我无法弄清楚如何在将IntelliJ添加到build.gradle之后使IntelliJ刷新项目依赖项。
阿马拉

gradle idea(取决于ideaProject,ideaModule,ideaWorkspace)对我不起作用,因为ideaModule不断失败。相反,任务gradle ideaProject运行良好,并且该项目现在已启用Gradle。
paranza

好的,这种方法存在问题。您将收到“无法将依赖项应用于groovy.lang.closure”错误。请改用以下解决方案:stackoverflow.com/a/17168175/2517730
2016年

1
这有点过时了,因为Idea Gradle插件仍然使用基于文件的
Xerus

74

无需删除任何.iml文件。请遵循以下步骤:

  • 关闭项目
  • File -> Open... 然后选择您新创建的 build.gradle
  • IntelliJ将询问您是否要:
    • Open Existing Project
    • Delete Existing Project and Import
  • 选择第二个选项,您就完成了

我该如何解决新项目必须位于另一个文件夹中的问题?
barracuda317

这是否会从您的项目结构中添加JAR?将库作为依赖项,并按照项目结构|中的定义创建EAR(使用插件)。神器?
NOTiFY

@NOTiFY我怀疑是的。这等效于从头签出项目。
米哈尔·科尔达斯

@Michal Kordas我手动添加了所有依赖项,没有花费我期望的时间,现在添加了WAR,JAR和EAR的创建。JetBrains上有对此
NOTiFY

46

换句话说,更简单。

添加您的

build.gradle

文件到项目的根目录。关闭项目。手动删除* .iml文件。然后选择“导入项目...”,导航到您的项目目录,选择build.gradle文件,然后单击确定。


21

在IntelliJ 2017.2.4中,我刚刚关闭了项目并重新打开它,然后出现一个对话框询问我是否要链接到build.gradle,从而打开了Gradle项目的导入对话框。

无需删除任何文件或将想法插件添加到build.gradle


2
可以很好地确认这一点。只需在项目根目录中运行gradle init,然后在下次打开项目时会看到对话框。
Alex H.

16

就像将来的参考一样,如果您已经有一个Maven项目,那么您要做的就是在gradle init将要生成的项目build.gradle和其他依赖项的项目目录中执行a,然后gradle build在同一目录中执行a 。


2
有趣的是:创建新的Gradle构建 -注意:gradle init可以生成各种不同类型的项目,甚至知道如何将简单pom.xml文件转换为Gradle。
Guy Coder

7

我正在使用IntelliJ的版本12。

我通过创建一个全新的项目并“从版本控制中签出”解决了类似的问题,以后合并这两个项目相当容易。


1
  1. build.gradle在项目的根目录中添加。

  2. 然后就File->Invalidate Caches / Restart

这是Java项目的基本build.gradle:

plugins {
    id 'java'
}

sourceCompatibility = '1.8'
targetCompatibility = '1.8'
version = '1.2.1'
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.