Android Gradle Build System:创建Jar Not Library

Sab*_*ado 21 jar gradle android-studio

目前我在eclipse工作.我想迁移到Android Studio但是我需要先解决这个问题:如何使用新的android构建系统为我的项目创建一个jar?

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

更新 这是我的gradle文件.我无法添加该行,apply plugin java因为它与android插件不兼容.jar任务已经包含在android插件中.

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.4'
    }
}
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 sourceSets.main.java
}
Run Code Online (Sandbox Code Playgroud)

我正在运行脚本: gradle clean jar

当我执行任务时,没有任何反应......为什么?我错过了什么?

更新2

下面是我正在使用的新gradle构建文件.请注意由于android studio的最新更新而导致的gradle版本更改.即使很简单,clean build我也会收到此错误:Project directory '<my_workspace_path>\Core2Project\build.gradle' is not a directory. 此错误仅发生在构建工作室中.不是我从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
}
Run Code Online (Sandbox Code Playgroud)

vin*_*3m1 17

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

task jar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
}
Run Code Online (Sandbox Code Playgroud)

并运行 gradle clean compileReleaseJava jar

在旧版本的gradle插件中,您的sourceSets元素需要在内部android:

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 16
    }

    sourceSets {
        main  {
            java {
                srcDir 'src/main/java'
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,您的jar任务需要参考android.sourceSets:

task jar(type: Jar) {
    from android.sourceSets.main.java
}
Run Code Online (Sandbox Code Playgroud)