2016-06-22 68 views
1

我在寫一個gradle任務,它應該執行一個java應用程序,但是我無法獲得我的Android項目的類路徑。在gradle中獲取Android項目的類路徑

我gradle這個任務:

task helloWorld(type: JavaExec) { 
    classpath = buildscript.configurations.classpath; 
    main = "com.test.HelloWorld"; 
} 

這是行不通的。

如何獲取類路徑(包括所有類和依賴項)?

+0

[使用Android插件獲取Gradle項目的類路徑](http://stackoverflow.com/questions/28222747/get-classpath-for-gradle-project-using-android-plugin) – sschuberth

回答

1

我發現了一個解決方案的源文件夾和庫。 但我仍然想念android.jar。 沒有針對此問題的另一個問題是:Finding android.jar for a own written Java task (in gradle)

class JavaTask extends JavaExec {  
    @Override 
    void exec() { 
     List<String> classpaths = new ArrayList<>(Arrays.asList(getClasspath().getAsPath().split(";"))); 

     project.android.libraryVariants.all { variant -> 
      classpaths.add(variant.javaCompile.destinationDir.getPath()); 
     } 

     org.gradle.api.artifacts.Configuration config = project.configurations.getByName("compile"); 
     for (String path : config.getAsPath().split(";")) { 
      classpaths.add(path); 
     } 

     setClasspath(project.files(classpaths.toArray(new String[classpaths.size()]))); 
     super.exec(); 
    } 
}