处理共享IntelliJ项目的.IML文件中的重要(但无意义)常量更改

时间:2017-03-29 12:58:21

标签: java git intellij-idea gradle

我有一个使用Gradle构建的相对简单的3模块IntelliJ项目。我是Gradle和IntelliJ的新手,正在努力让我的两台个人机器之间能够理解工具/流程。

项目存储在Git中,但每次我在我的一台机器上打开IntelliJ(在推动另一台机器的更改后),我的模块文件总是会被更改:

modified:   .idea/modules/core/core.iml
modified:   .idea/modules/service/service.iml
modified:   .idea/modules/web/web.iml

更改始终只是我的图书馆条目的重新排序:

-    <orderEntry type="library" scope="TEST" name="Gradle: io.netty:netty-resolver:4.1.6.Final" level="project" />
-    <orderEntry type="library" scope="TEST" name="Gradle: io.projectreactor:reactor-core:2.0.8.RELEASE" level="project" />
-    <orderEntry type="library" scope="TEST" name="Gradle: org.yaml:snakeyaml:1.15" level="project" />
-    <orderEntry type="library" scope="TEST" name="Gradle: org.jodd:jodd-core:3.7.1" level="project" />
-    <orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-all:1.1" level="project" />
-    <orderEntry type="library" scope="TEST" name="Gradle: org.objenesis:objenesis:1.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Gradle: cglib:cglib-nodep:2.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Gradle: org.reactivestreams:reactive-streams:1.0.0" level="project" />
     <orderEntry type="library" scope="TEST" name="Gradle: com.fasterxml.jackson.core:jackson-annotations:2.7.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Gradle: org.reactivestreams:reactive-streams:1.0.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Gradle: cglib:cglib-nodep:2.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Gradle: org.objenesis:objenesis:1.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-all:1.1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Gradle: org.jodd:jodd-core:3.7.1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Gradle: org.yaml:snakeyaml:1.15" level="project" />

这些变化很重要:

$ git diff --stat
 java/.idea/modules/core/core.iml       | 204 ++++++++++----------
 java/.idea/modules/service/service.iml | 276 +++++++++++++--------------
 java/.idea/modules/web/web.iml         | 338 ++++++++++++++++-----------------

每次我从一台机器换到另一台机器时都会发生这种情况。

有没有办法来说服IntelliJ保持这些条目的顺序相同?对于我提交的每一个提交都会非常烦人地将这3个文件包含在内,以及我正在做的其他任何更改。

我显然不能.gitignore这三个文件,因为它们包含关于我的模块配置的所有其他信息 - 分享它是完全有意义的。

请注意,我在构建文件中没有使用apply plugin 'idea',我只是让IDEA完全管理模块。这是我的错吗?

1 个答案:

答案 0 :(得分:2)

  

我显然不能.gitignore这三个文件,因为它们包含所有文件   关于我的模块的配置的其他信息 - 有些东西   分享是完全有意义的。

实际上,你可以。打开项目并将其与Gradle同步时,将从Gradle生成这些文件。

请参阅FAQ about sharing project files和以下评论。

相关错误:

  • IDEA-165941 Gradle:.iml中的orderEntry在build.gradle上有和没有更改的情况下按不同的方式排序
  • IDEA-157363 Android:对iml文件中的orderEntry标记进行任意重新排序,无需在gradle配置中进行相关更改