Android Gradle构建系统:创建Jar而不是库

Android Gradle构建系统:创建Jar而不是库,jar,gradle,android-studio,Jar,Gradle,Android Studio,目前我在eclipse中工作。我想迁移到androidstudio,但是首先我需要弄清楚:如何使用新的Android构建系统为我的项目创建一个jar 我的项目设置为库,但是项目中只有java文件。我不需要也不想将此导出为库。我想将文件导出为.jar,这样就可以轻松地将其放入另一个项目中 更新 这是我的毕业档案。我无法添加行apply plugin java,因为它与android插件不兼容。jar任务已经包含在android插件中 我以以下方式运行脚本: gradle-clean-jar 当我运

目前我在eclipse中工作。我想迁移到androidstudio,但是首先我需要弄清楚:如何使用新的Android构建系统为我的项目创建一个jar

我的项目设置为库,但是项目中只有java文件。我不需要也不想将此导出为库。我想将文件导出为.jar,这样就可以轻松地将其放入另一个项目中

更新 这是我的毕业档案。我无法添加行
apply plugin java
,因为它与android插件不兼容。jar任务已经包含在android插件中

我以以下方式运行脚本:
gradle-clean-jar

当我运行任务时,什么都没有发生。。。为什么?我错过了什么

更新2

下面是我正在使用的新gradle构建文件。请注意,由于android studio的最新更新,gradle版本发生了变化。即使使用简单的
干净构建
我也会遇到这样的错误:
项目目录'\Core2Project\build.gradle'不是目录。
此错误仅发生在构建工作室中。当我从IDE运行时就不会了。我在另一个项目中也遇到了同样的问题。事实证明,当我指定要在build studio中使用的文件名时,会出现此错误。

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android'

dependencies {
    compile files('libs/android-support-v4.jar')
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 16
    }

    sourceSets {
        main  {
            java {
                srcDir 'src/main/java'
            }
        }
    }
}


task jar(type: Jar) {
    from android.sourceSets.main.java
}

您在这里指的“jar”任务是由java插件引入的。您可以使用

apply plugin:'java'
查看gradle用户指南中关于java插件的章节,以获得有关java插件的更多信息

干杯


Rene

使用较新版本的gradle和android gradle插件,您只需将以下内容添加到您的
build.gradle

task jar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
}
然后运行
gradlecleancipilereleaseJava jar

在较旧版本的gradle插件上,您的
sourceset
元素需要位于
android
中:

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 16
    }

    sourceSets {
        main  {
            java {
                srcDir 'src/main/java'
            }
        }
    }
}
然后,您的
jar
任务将需要引用
android.sourceset

task jar(type: Jar) {
    from android.sourceSets.main.java
}

这令人惊讶,因为java库肯定添加了一个jar任务。你能提供完整的rootproject构建文件吗。“使用”jar任务是什么意思?从命令行注入?很抱歉延迟,我已经用构建脚本更新了我的问题运行“gradle clean jar”时“什么都没发生”是什么意思?任务是否已执行并标记为最新?在build/libs中没有创建jar文件吗?我在构建脚本中注意到的一件事是主java源目录的配置。这是默认设置,我认为没有必要配置它。此外,您的代码片段只是在默认目录中添加了另一个目录。java插件无法针对导入的android类正确编译。我想说您是对的,但我无法再构建我的项目。仅仅一个简单的“干净构建”就给了我一个错误。错误路径中的
build.gradle
文件就是我运行任务所指向的文件。这里没有变化<代码>项目目录“\Core2Project\build.gradle”不是目录。您使用的是最新的gradle插件版本吗?你应该在
classpath'com.android.tools.build:gradle:0.5.+'
now是的,我刚刚创建了一个新项目,并从gradle复制了我的src目录,
android
jar
位。我的构建脚本在模块的gradle文件中,而不是项目的gradle文件中。使用最新的gradle插件,我必须将Jar任务主体从part更改为:
from fileTree(dir:'build/mediates/classes/release')
最近,我还运行了
gradle clean compileReleaseJava jar
:从android.sourceset.main.java.srcDirs
task jar(type: Jar) {
    from android.sourceSets.main.java
}