Java Gradle Eclipse插件不包括导出=";“真的”;在生成的.classpath文件中

Java Gradle Eclipse插件不包括导出=";“真的”;在生成的.classpath文件中,java,eclipse,gradle,Java,Eclipse,Gradle,我正在尝试将我的Gradle版本从2.3更新到2.12。当我运行“eclipse”任务来生成eclipse文件时,我在使用新版本(2.12)时遇到了一个问题 在.classpath文件中生成的classpathentry节点不再包含exported=“true”属性,这是在eclipse中创建工作运行目标所必需的 使用2.3版 <classpathentry sourcepath="/../some-lib-sources.jar" kind="lib" path="/../some-l

我正在尝试将我的Gradle版本从2.3更新到2.12。当我运行“eclipse”任务来生成eclipse文件时,我在使用新版本(2.12)时遇到了一个问题

在.classpath文件中生成的classpathentry节点不再包含exported=“true”属性,这是在eclipse中创建工作运行目标所必需的

使用2.3版

<classpathentry 
sourcepath="/../some-lib-sources.jar" kind="lib" path="/../some-lib.jar"
exported="true"/>

使用版本2.12(缺少exported=“true”)


我在Gradle文档中找不到任何关于这个问题的有用信息。我希望这只是一个简单的配置更改

有人知道如何解决这个问题吗

更新:

因此,我发现了我认为导致这个问题的变化

IDE类路径生成中的更改。。。项目中的所有依赖项 标记为导出=假


。。但是我仍然找不到任何关于如何控制哪些classpathentries获得exported=true属性的信息。

在我看来,允许构建和依赖关系管理工具管理IDE特定文件是一个根本错误。见我的解释


相反,安装并使用它将基于Gradle的项目导入Eclipse。让Eclipse插件来做Eclipse的事情,让构建工具来做构建。

在我看来,允许构建和依赖管理工具来管理IDE特定的文件是一个根本性的错误。见我的解释


相反,安装并使用它将基于Gradle的项目导入Eclipse。让Eclipse插件来完成Eclipse的工作,构建工具来完成构建。

我在合并时添加了以下代码,从而解决了这个问题

eclipse {
  classpath {
    defaultOutputDir = file('classes')

      file {                
        whenMerged { classpath ->
          classpath.entries.findAll { entry -> entry.kind == 'lib' }*.exported = true                    
      }

    }
  }
}

我最终通过在合并时添加以下代码解决了这个问题

eclipse {
  classpath {
    defaultOutputDir = file('classes')

      file {                
        whenMerged { classpath ->
          classpath.entries.findAll { entry -> entry.kind == 'lib' }*.exported = true                    
      }

    }
  }
}

谢谢我肯定会看一看这个,但现在我们只需要让它再次工作。Buildship似乎修改了Eclipse.classpath文件。当然,当我们执行Gradle->Refresh时,它会重新生成这些文件。在看Gradle文档的时候,我从来都不知道Buildship到底是什么!谢谢我肯定会看一看这个,但现在我们只需要让它再次工作。Buildship似乎修改了Eclipse.classpath文件。当然,当我们执行Gradle->Refresh时,它会重新生成这些文件。在看Gradle文档的时候,我从来都不知道Buildship到底是什么!