为什么Gradle-> Refresh从.classpath中删除我的protobuf源文件夹?

时间:2017-08-15 21:28:09

标签: eclipse gradle

我有一个Eclipse / Gradle项目,如下所示。 .proto描述符的一个目录和生成的.java文件的一个目录,以包含在其他项目中。

    src/main/java
    src/main/proto

我想将我的src/main/proto目录添加为Eclipse源文件夹,以便于编辑。

很自然地,我将<classpathentry kind="src" path="src/main/proto"/>添加到我的.classpath文件中。添加源文件夹,一切都很好,直到我运行Gradle->Refresh,这会不友好地删除源文件夹。我的猜测是Gradle在.java文件夹中找不到任何proto文件,因此会从.classpath中删除整个文件夹。有什么方法可以阻止这种情况吗?

我也尝试过:

<classpathentry kind="src" path="src/main/proto">
  <attributes>
    <attribute name="FROM_GRADLE_MODEL" value="true"/>
  </attributes>
</classpathentry>

来自this question但没有成功。

1 个答案:

答案 0 :(得分:5)

所以问题是,如果你进行刷新,gradle会从头开始重新生成.classpath文件。所以你没有在gradle级别定义的任何内容都会丢失!

如何在Gradle中定义src文件夹? 尝试将以下块放入build.gradle:

sourceSets {
    main {
        java {
            srcDirs 'src/main/proto'
        }
    }
}

只要文件夹包含至少一个文件,就应该将'src / main / proto'添加到eclipse类路径中!