我在通过 gradle 自动将依赖项添加到 eclipse android 项目时遇到问题。我对gradle只有一点经验。到目前为止,我已经用 gradle 构建了两个 java 项目。一个罐子和一个可执行罐子。这没有问题。我已经使用 eclipse 插件生成了 eclipse 项目并将依赖项添加到构建路径中。我在 gradle 脚本中添加了新的依赖项,使用 gradle eclipse 启动了 gradle,更新了我的项目,并且依赖项存在于构建路径中,我可以使用它们。这是该脚本的重要部分。
apply plugin: 'java'
apply plugin: 'eclipse'
repositories {
mavenCentral()
}
dependencies {
compile 'commons-io:commons-io:2.4'
}
所以,现在我结合android插件尝试了它。这是我的洞 gradle 脚本。
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4'
}
}
apply plugin: 'android'
apply plugin: 'eclipse'
repositories {
mavenCentral()
}
dependencies {
compile 'org.apache.commons:commons-lang3:3.1'
}
android {
compileSdkVersion 17
buildToolsVersion "17"
defaultConfig {
minSdkVersion 14
targetSdkVersion 17
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
instrumentTest.setRoot('tests')
}
}
如果我使用 gradle eclipse 什么都不会发生。然后我发现java插件将依赖项添加到构建路径中。所以我加了
apply plugin: 'java'
到它并得到java插件与android插件不兼容的错误。然后我找到了一个解决方案,可以将 jar 自动复制到项目的 lib 文件夹中。
def libDir = file('libs')
task copyLibs(type: Copy) {
doFirst {
libDir.mkdirs()
}
from configurations.runtime
into libDir
}
但是这个任务也需要配置运行时的 java 插件。我需要 android 插件来创建 apk 文件,所以它不是删除 android 插件的解决方案。有人知道是否可以将依赖项添加到与 android 插件兼容的 ecipse 项目中的构建路径或 lib 文件夹中?
编辑:我的一个想法是将 java-plugin 放到 eclipse-plugin 中,这样只有在应用 eclipse 插件时才会应用它。像这样的东西:
apply plugin: 'eclipse'
eclipse{
apply plugin: 'java'
}
但是我仍然收到java和android插件不兼容的错误。也许我理解 gradle 错误,但通常只有在我启动 eclipse 插件而不是 android 插件时才应该应用 java 插件。恐怕我对gradle的理解和经验还不够好,无法通过这种方式解决或理解为什么不可能。