Gradle Eclipse插件在生成的.classpath文件中不包括exported =“true”

时间:2016-03-15 15:47:42

标签: java eclipse gradle

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

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

版本2.3

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

版本2.12(缺少exports =“true”)

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

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

有谁知道如何解决这个问题?

更新

所以我发现我认为在2.5 release notes

中导致此问题的更改
  

IDE类路径生成中的更改...项目中的所有依赖项   被标记为exported = false。

..但我仍然无法找到有关如何控制classpathentries获取exported = true属性的任何信息。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

我最后通过添加以下 whenMerged 代码来解决此问题。

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

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

    }
  }
}