2014-10-06 40 views
2

如何在gradle 2.1中添加源設置到Java項目?如何在gradle 2.1中添加源設置到Java項目?

我讀過Java PluginSourceSetOutput和其他一些SO線程上的文檔,我仍然在努力弄清楚它是如何工作的。

我創建了一個簡單的構建腳本來測試我的理解。基於用戶指南第23.7.2,例如23.5,看來我可以做創建sourceSet:

sourceSets { 
    generated 
} 

在第23.4節。項目佈局似乎意味着我需要這樣做,因爲我的源代碼遵循了gradle約定。包含在源代碼集中的代碼位於src/generated/java/packagename。並會自動添加到類路徑中。基於未找到的符號錯誤我從使用生成的源集中定義的代碼的代碼中獲取錯誤,我認爲這是不正確的,還有其他一些事情需要完成。我需要做什麼?

這裏是我的設置:

的build.gradle

apply plugin: 'java' 
apply plugin: 'application' 

mainClassName = "tester.Test" 

sourceSets { 
    generated 
} 

文件結構

tester/ 
├── build 
│   ├── classes 
│   │   └── main 
│   ├── dependency-cache 
│   └── tmp 
│    └── compileJava 
├── build.gradle 
└── src 
    ├── generated 
    │   └── java 
    │    └── tester 
    │     └── Boom.java 
    └── main 
     └── java 
      └── tester 
       └── Test.java 

Boom.java

package tester; 

class Boom { 
    String sound; 

    public Boom (String s){ 
     sound = s; 
    } 
} 

Test.java

package tester; 

class Test { 
    public static void main(String[] args) { 
     Boom b = new Boom("KABOOM"); 

     System.out.println("I've run"); 
     System.out.println(b.sound); 
    } 
} 

回答

1

您需要修改build.gradle下列方式:

sourceSets { 
    generated 
    main { 
     compileClasspath += generated.output // adds the sourceSet to the compileClassPath 
     runtimeClasspath += generated.output // adds the sourceSet to the runtimeClasspath 
    } 
} 

project.run.classpath += sourceSets.generated.output //add the sourceSet to project class path 

請記住,增加新的源組是不同的東西從已經編譯源的類路徑設置。

源代碼集下面的行對於run任務有效。

+0

謝謝!這適用於'gradle build',但是,當我嘗試'gradle run'時,它給了我一個'NoClassDefFoundError'。 – 2014-10-06 19:52:02

+0

嗯..確實。我也用'run'測試了它,但不幸的是沒有'clean'。會看看。 – Opal 2014-10-06 19:53:24

+0

編輯答案。現在應該工作。 – Opal 2014-10-06 20:07:53

相關問題