2012-12-14 15 views
8

W gradle, jaki jest cel używania pliku buildSrc jako najwyższego poziomu, w przeciwieństwie do typowego układu projektu Java (src/main/java)?Jaki jest cel folderu grads buildSrc?

Jeśli mam układ

src 
    main 
     java 

lub

buildSrc 
    src 
     main 
      java 

jaka byłaby różnica (lub powód ten sposób)? Czy jest bardziej przydatny w projektach wielomodułowych? Nawet dla wielu projekcie modułu, nie mógłby zrobić coś podobnego

proj1 
    src 


proj2 
    src 

a potem po prostu mają górną build.gradle poziomu (na tym samym poziomie co proj1 i proj2), która wyznacza wspólne ustawienia całej projektów?

Odpowiedz

22

buildSrc jest oddzielnym build którego celem jest budowanie żadnych zadań, wtyczki lub inne zajęcia, które są przeznaczone do stosowania w tworzyć skrypty głównej konstrukcji, ale nie muszą być współużytkowane przez buduje (*) Nie byłoby możliwe zbudowanie takich klas jako części głównej kompilacji, ponieważ muszą istnieć przed skompilowaniem/oceną skryptów kompilacji głównej kompilacji, a Gradle kompiluje/ocenia wszystkie skrypty kompilacji zanim zrobi to dowolna praca (konfiguracja vs. faza wykonania).

W porównaniu do umieszczania całego kodu kompilacji w skryptach budujących, buildSrc daje sposób na budowanie kodu kompilacji bardziej jak zwykłego kodu, jako klasy, które możesz przetestować, zaimportować do swojego IDE itd. Jest to jeden ze sposobów na utrzymanie skryptów kompilacji proste i DRY nawet dla bardziej skomplikowanych buildów.

jest częściej spotykany w kompilacjach z wieloma projektami, ponieważ większe wersje są bardziej skłonne do realizacji własnych niestandardowych zadań i wtyczek.

Z biegiem czasu, buildSrc stanie się bardziej ogólną możliwością wykonywania wielu zależnych kompilacji w jednym wywołaniu Gradle.

(*) Udostępnianie klas w różnych wersjach jest możliwe, ale bardziej zaangażowane. W szczególności musisz opublikować klasy w repozytorium, a sporządzanie kompilacji musi jawnie je importować, podobnie jak przy współdzieleniu bibliotek produkcyjnych między kompilacjami.

+0

Dzięki za szczegółowe wyjaśnienie! –