我正在尝试将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属性的任何信息。
答案 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
}
}
}
}