这里有Gradle 2.4和Eclipse Mars.这是我的项目目录结构:
myapp/ <-- root project
myapp-client/
src/main/groovy/*
build.gradle <-- just declares some client-specific deps
myapp-shared/
src/main/groovy/*
build.gradle <-- shared-specific deps
myapp-server/
src/main/groovy/*
build.gradle <-- server-specific deps and how to package server JAR
build.gradle
settings.gradle
Run Code Online (Sandbox Code Playgroud)
在哪里myapp/build.gradle:
allprojects {
apply plugin: 'groovy'
apply plugin: 'eclipse'
apply plugin: 'maven'
apply plugin: 'codenarc'
sourceCompatibility = '1.8'
targetCompatibility = '1.8'
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
repositories {
// ...etc.
}
dependencies {
// ...etc.
}
task wrapper(type: Wrapper) {
gradleVersion = '2.4'
}
}
Run Code Online (Sandbox Code Playgroud)
在哪里myapp/settings.gradle:
include ':myapp-shared'
include ':myapp-client'
include ':myapp-server'
Run Code Online (Sandbox Code Playgroud)
当我这样做时,./gradlew eclipse我收到消息,表明命令成功.然后我打开Eclipse导入myapp为一系列单独的子项目.
在之前包含子项目的项目中,我会去Import >> Existing Projects into Workspace,在那里我会看到这个对话框:
然后Browse,我将单击并选择项目根(在此特定情况下myapp).然后Eclipse会自动检测3个子项目,并将它们填充为上面UI中Projects组件内的检查列表.然后我会点击" 完成 ",Eclipse会将3个子项目加载到我的工作区,每个子项目都显示为一个单独的项目(应该如此).
相反,当我单击myapp作为根项目时,Eclipse只是将其作为单个项目填充,几乎就像它没有检测到我有子项目一样:
当我单击" 完成"时,它将单个项目导入我的工作区,该项目具有3个子项目中每个子项目的源文件夹.虽然这只是一个烦恼,但真正的问题是类路径似乎完全被抬高了.例如,我可以添加一个类myapp-shared,然后将其包含在内部定义的类中myapp-client,Eclipse不会强制我将import语句添加到客户端类中!这就像整个项目共享相同的包/命名空间.
任何Gradle大师都能发现我的Gradle设置中的缺陷可能是导致这种情况的原因吗?
这很讨厌,但我想通了.在此处发布解决方案以防其他任何人遇到此问题.
allprojects闭包,你需要allprojects和subprojects闭包.不知道什么是"安全"放入任何一个闭包,但我通过简单地声明我的repositories内部allprojects然后把其他所有内部工作subprojects.gradle eclipse的根项目(之前我在加入subprojects关闭)等等摇篮中产生的典型器物(如.projects,.classpath,.settings/*)在父/根项目目录.所以...gradle clean很好.可能不需要.gradle eclipse一次.| 归档时间: |
|
| 查看次数: |
4703 次 |
| 最近记录: |