21

目前我正在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
}
4

2 回答 2

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
}
于 2013-07-18T20:20:25.473 回答
-2

你所说的'jar'任务是由java插件引入的。您可以使用 gradle java 插件

apply plugin:'java'

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

干杯,

勒内

于 2013-06-21T05:17:01.477 回答