2015-02-05 14 views
5

Mam klasy Java, który chcę wywołać z mojego Gradle skryptu produkcji:Jak dodać źródło java na gradle buildscript classpath?

buildscript { 
    dependencies { 
     // This is the part I can't figure out... 
     classpath files("src/main/java/com/example") 
    } 
} 

import com.example.MyClass 

task runner(dependsOn: 'classes') << { 
     def text = com.example.MyClass.doIt() 
     println text 
} 

Sposób doIt() prostu zwraca ciąg znaków.

układ projektu wygląda następująco:

. 
├── build.gradle 
└── src 
    └── main 
     └── java 
      └── com 
       └── example 
        └── MyClass.java 

Rozumiem, że muszę mieć klasę dodany do uzależnienia kompilacji skryptu, inaczej import nie jest ważna, ale nie rozumiem, w jaki sposób mogę dodać źródło projektu jako zależność od skryptu kompilacji. Próbowałem następujących czynności:

classpath project 
classpath rootProject 
classpath project(":gradle-test") 
classpath files("src/main/java/com/example") 

nie mogę obejść

> startup failed: 
    build file '/Users/jameselsey/development/james-projects/gradle-test/build.gradle': 8: unable to resolve class com.example.MyClass 
    @ line 8, column 1. 
    import com.example.MyClass 
    ^

    1 error 

Jak dodać MyClass z zależnością kompilacji skryptu?

Odpowiedz

6

Można to osiągnąć na dwa sposoby.

  1. Jeśli twój kod Java jest mały, możesz go po prostu zamienić w groovy i dołączyć go do skryptu gradle.

  2. Jeśli kod jest dość duży i wymaga wiele klas korzystna opcja byłoby użyć niejawny [buildSrc] Można tworzyć klas pod buildSrc/src/main/java i te zajęcia będą się zebrane i umieszczone w Ścieżka klasy buildscript i będzie dostępna do użycia podczas skryptu gradle.

Źródła projektu (klasa, klasy testowe, zasoby) nie są dostępne podczas tworzenia skryptu. Jako że wprowadziłoby to cykliczną zależność, ponieważ potrzebujesz kompilacji do kompilacji źródła, ale kompilacja potrzebuje klasy do wykonania.

Gradle Dokumentacja: http://gradle.org/docs/current/userguide/organizing_build_logic.html#sec:build_sources

Przykład: https://zeroturnaround.com/rebellabs/using-buildsrc-for-custom-logic-in-gradle-builds/

+0

ja się głosowanie odpowiedź i dostarczenie odniesienie do odsyłacz do example.https: //zeroturnaround.com/rebellabs/using-buildsrc- for-custom-logic-in-gradle-builds / –

Powiązane problemy