我如何决定在 .gitignore 中添加 .idea/jarRepositories.xml

qtm*_*fld 9 android gitignore maven android-studio auto-import

我发现了一个陌生的文件.idea/jarRepositories.xml,当我更新的Android工作室3.5.34.0.1Mac上。内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="RemoteRepositoriesConfiguration">
    <remote-repository>
      <option name="id" value="central" />
      <option name="name" value="Maven Central repository" />
      <option name="url" value="https://repo1.maven.org/maven2" />
    </remote-repository>
    <remote-repository>
      <option name="id" value="jboss.community" />
      <option name="name" value="JBoss Community repository" />
      <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
    </remote-repository>
    <remote-repository>
      <option name="id" value="BintrayJCenter" />
      <option name="name" value="BintrayJCenter" />
      <option name="url" value="https://jcenter.bintray.com/" />
    </remote-repository>
    <remote-repository>
      <option name="id" value="Google" />
      <option name="name" value="Google" />
      <option name="url" value="https://dl.google.com/dl/android/maven2/" />
    </remote-repository>
  </component>
</project>
Run Code Online (Sandbox Code Playgroud)

上面已经有问题了,VonC回答说可以加到.gitignore.

我想知道我是否应该添加它.gitignore而不应该将它提交给 git。我如何决定将其添加到.gitignore

JetBrains.gitignore

流行的仓库gitignoregithub上Android.gitignore,但它没有.idea/jarRepositories.xml在写这个问题的时间。

另一方面,Global/JetBrains.gitignore有以下评论。

# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn.  Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,它已经.idea/jarRepositories.xml被注释掉了。它还具有以下注释:

具有自动导入功能的 Gradle 和 Maven

当使用带有自动导入功能的 Gradle 或 Maven 时,您应该排除模块文件,因为它们将被重新创建,并可能导致流失。如果使用自动导入,请取消注释。

在 Android Studio 中4.0.x,是否可以在没有自动导入的情况下使用 Gradle?

远程 Jar 存储库

在上面Global/JetBrains.gitignore,这行# .idea/jarRepositories.xml是由 davidkron 的pull request添加的,他评论如下:

自 IntelliJ 2019.3 以来,此文件自动出现在我们的 git 更改中。似乎这些只是有关 Maven/Gradle 中定义的远程存储库的缓存信息。

进行此更改的原因:

在 Maven/Gradle 构建中,不应提交自动生成的文件。

支持这些规则更改的文档链接:

我还没有找到关于这个文件的文档或文章,但我的假设基于以下步骤:

  • 在 IntelliJ 中,可以在“设置”菜单中管理“远程 Jar 存储库”
  • 我删除了列表中的每个条目 -> 文件消失了
  • 我再次重新导入了 Maven/Gradle 项目
  • 该文件再次出现,并显示与以前相同的条目

正如他的评论,Android Studio4.0.1Remote Jar Repositories设置,你可以在下面的屏幕截图中看到。

在此处输入图片说明

我查看了 Android Studio 的发行说明4.0.0,发现了一段如下:

IntelliJ IDEA 2019.3.3

核心 Android Studio IDE 已通过 IntelliJ IDEA 到 2019.3.3 版本的改进进行了更新。

要详细了解与版本 2019.3.3 累积包含的其他 IntelliJ 版本的改进,请参阅以下页面:

  • IntelliJ IDEA 2019.3
  • IntelliJ IDEA 2019.3.3

我不知道,但不知道如果我要补充.idea/jarRepositories.xml.gitignore,应该不会犯这与git。我如何决定添加或不添加它?如果有人能澄清标准,我真的很感激。

更新:

在 Android Studio 的源代码中4.0.0,我找到了定义文件名的源文件jarRepositories.xml

JpsRemoteRepositoriesConfigurationSerializer.java

<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="RemoteRepositoriesConfiguration">
    <remote-repository>
      <option name="id" value="central" />
      <option name="name" value="Maven Central repository" />
      <option name="url" value="https://repo1.maven.org/maven2" />
    </remote-repository>
    <remote-repository>
      <option name="id" value="jboss.community" />
      <option name="name" value="JBoss Community repository" />
      <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
    </remote-repository>
    <remote-repository>
      <option name="id" value="BintrayJCenter" />
      <option name="name" value="BintrayJCenter" />
      <option name="url" value="https://jcenter.bintray.com/" />
    </remote-repository>
    <remote-repository>
      <option name="id" value="Google" />
      <option name="name" value="Google" />
      <option name="url" value="https://dl.google.com/dl/android/maven2/" />
    </remote-repository>
  </component>
</project>
Run Code Online (Sandbox Code Playgroud)

远程存储库配置.java

# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn.  Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
Run Code Online (Sandbox Code Playgroud)

我还在 JetBrain 的 IntelliJ IDEA 社区版的存储库中找到了它们的起源。

Jps根据一份文件,代表JetBrains Project System

External Build 过程中的项目模型由 JPS(JetBrains Project System)提供。

JPS 之前的存储库将自己描述为:

基于 Gant 的构建框架 + dsl,具有声明式项目结构定义和自动 IntelliJ IDEA 项目构建

qtm*_*fld 10

该文件.idea/jarRepositories.xml应添加到.gitignore. 它是自动生成的,并且只有关于远程 jar 存储库的冗余信息。

我们的 Android 项目在项目级别定义了这些存储库,build.gradle例如:

allprojects {
    repositories {
        google()
        jcenter()
    }
}
Run Code Online (Sandbox Code Playgroud)

第二个参考在其网页顶部写了以下介绍:

添加构建依赖项

Android Studio 中的 Gradle 构建系统可以轻松地将外部二进制文件或其他库模块作为依赖项包含到您的构建中。... 此页面描述了如何在您的 Android 项目中使用依赖项,...但请记住,您的 Android 项目必须仅使用此页面上定义的依赖项配置。[强调]

此外,Android Studio中的Add Library Dependencies对话框4.0.1有如下指令:

第1步。

使用下面的表格查找要添加的库。此表单使用项目构建文件中指定的存储库(Google、JCenter、Android Repository、Google Repository)

您可以通过以下步骤找到它:

  1. 在 Android Studio 的菜单中选择File > Project Structure...。
  2. Project Structure对话框的左侧菜单中选择Dependencies
  3. 模块列中选择应用程序
  4. 在“声明的依赖项”列中选择+
  5. 在弹出菜单中选择1 Library Dependency


Von*_*onC 6

我如何决定添加或不添加它?

决定是否应该忽略文件的一个明确的一般标准是:

您能否在没有该文件的情况下克隆存储库并仍然拥有一个有效的项目(您可以编译和执行的项目)

例如,如果该文件自动重新生成,或使用自定义本地路径重新创建(这对于不同 PC 上的不同开发人员没有意义),则可以忽略该文件。

所以尝试一下,特别是考虑到您可以“为 IntelliJ IDEA 项目禁用或启用 Gradle/Maven 自动导入”。