Android Gradle Build System:创建Jar Not Library

时间:2013-06-20 15:54:46

标签: 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
}

我正在运行脚本: gradle clean jar

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

更新2

下面是我正在使用的新gradle构建文件。请注意由于android studio的最新更新而导致的gradle版本更改。即使使用简单的clean build,我也会收到此错误:Project directory '<my_workspace_path>\Core2Project\build.gradle' is not a directory. 此错误仅发生在构建工作室中。不是我从IDE运行时。我也遇到了另一个项目的同样问题。事实证明,当我指定要在构建工作室中使用的文件名时,我会收到此错误。

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
}

2 个答案:

答案 0 :(得分:17)

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

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

并运行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'
            }
        }
    }
}

然后,您的jar任务需要引用android.sourceSets

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

答案 1 :(得分:-2)

这里的'jar'任务是由java插件引入的。您可以使用

应用gradle java插件
apply plugin:'java'

http://www.gradle.org/docs/current/userguide/tutorial_java_projects.html#N103C6的gradle用户指南中查看有关java插件的章节,以获取有关java插件的更多信息。

欢呼声,