2013-03-18 13 views
27

W mojej pracy wykorzystujemy Mavena. Mam zamiar wypróbować gradle po raz pierwszy. Używamy wspólnej czcionki macierzystej dla wszystkich projektów, która ma ustawienie dla często używanych wtyczek i kilku zależności komonom. Czy istnieje podobna opcja dostępna w gradle?gradle parent pom like feature

Moje drugie pytanie dotyczy zarządzania wydaniami. Używamy wtyczki do wydania maven, która działa całkiem nieźle. Czy jest coś podobnego dostępnego w Gradle?

+0

To co mam zrobić: http://stackoverflow.com/a/21139778/859225 Nadzieja to pomaga. – Zlatko

Odpowiedz

23

Aby udostępniać elementy w wielu projektach tej samej kompilacji, należy użyć allprojects { ... }, itd. Ponadto dodatkowe właściwości (ext.foo = ...) zadeklarowane w projekcie nadrzędnym są widoczne w podprojektach. Typowym idiomem jest posiadanie czegoś takiego jak ext.libs = [junit: "junit:junit:4.11", spring: "org.springframework:spring-core:3.1.0.RELEASE", ...] w skrypcie budowania najwyższego poziomu. Podprojekty mogą wtedy selektywnie zawierać zależności za pomocą ich krótkiej nazwy. Powinieneś być w stanie znaleźć więcej informacji na ten temat w Gradle Forums.

Aby udostępnić logika całej buduje, można napisać plugin Script (foo.gradle), umieścić go na serwerze WWW i dołączyć go buduje z apply from: "http://..." lub napisać binarne wtyczki (klasa wykonawczych org.gradle.api.Plugin), publikować jako Jar do repozytorium i dołącz go do kompilacji w sekcji apply plugin: ... i buildscript {}. Aby uzyskać szczegółowe informacje, zobacz Gradle User Guide i wiele próbek w pełnym rozkładzie Gradle.

Aktualnym ograniczeniem wtyczek skryptowych (ale nie binarnych) jest to, że nie są one buforowane. W związku z tym kompilacja zakończy się powodzeniem tylko wtedy, gdy może połączyć się z serwerem obsługującym wtyczkę.

Jeśli chodzi o drugie pytanie (które powinno być oddzielnym pytaniem), dostępnych jest kilka wtyczek wydawcy innych firm, na przykład https://github.com/townsfolk/gradle-release.

+0

:-) Nie wiem, czy istnieje jakakolwiek inna metoda. Pomyślałem, że byłoby to tak proste, jak napisanie czegoś takiego jak "extend my_parent_gradle_config_coordinates". Dzięki za pomoc. – Murali

+0

> Dzielenie się rzeczami w ramach wielu projektów tej samej wersji ... ale 1) nadrzędna poms może (powiedziałbym, że powinna) również być używana do definiowania funkcji "całej organizacji" i 2) Powiedziałbym, że lepiej organizuje zależności stosowanie kompozytów (testowanie kompozytowe, kompozyt-sprężyna itp.). –

+0

do wykorzystania w przyszłości, skrypty pobrane z 'apply from' [są teraz buforowane] (https://github.com/gradle/gradle/pull/1900) –

0

do achive swój cel można zastosować pojęcie „MULTIPROJECT kompilacji” wyjaśniono w przewodniku Gradel here

Zasadniczo można utworzyć projektu parasolowego, które określają zbiór wspólnych konfiguracjach, tworząc plik gradle.build i plik gradle.settings. Plik kompilacji zawiera właściwości, zależności i wtyczki wspólne dla wszystkich projektów. Parametr settings.gradle określa, jakie podprojekty dziedziczą te konfiguracje.

Co więcej, aby mieć pojęcie ekosystemu wtyczki gradle, można sprawdzić źródło: this.

+1

Nie bardzo zależy na kompilacjach z wieloma projektami. Jak wspomniano wcześniej, szukam jakiegoś dziedzictwa. na przykład większość projektów jboss/apache maven dziedziczy popularną pom. Następnie powszechny pom może ulec poprawie w miarę upływu czasu, a nowe wersje mogą zostać zwolnione. Można w nim umieścić pewne wytyczne lub reguły. – Murali

8

Wtyczka io.spring.dependency-management pozwala używać Maven bom kontrolować zależności Twojego budować za:

buildscript { 
    repositories { 
    mavenCentral() 
    } 
    dependencies { 
    classpath "io.spring.gradle:dependency-management-plugin:0.5.3.RELEASE" 
    } 
} 

apply plugin: "io.spring.dependency-management" 

Następnie można go używać do importowania bom Maven :

dependencyManagement { 
    imports { 
    mavenBom 'io.spring.platform:platform-bom:1.1.1.RELEASE' 
    } 
} 

Teraz można importować zależności bez podania numeru wersji:

dependencies { 
    compile 'org.springframework:spring-core' 
} 
+0

Alternatywą dla 'io.spring.gradle: dependency-management-plugin' jest https://github.com/nebula-plugins/nebula-dependency-recommender-plugin' com.netflix.nebula: mbula-dependency-recommender'. Również '' org.springframework.boot: spring-boot-gradle-plugin'' począwszy od wersji 1.3 używa '' io.spring.gradle: dependency-management-plugin'' do zarządzania zależnością. – gavenkoa

1

można przekonwertować zawartość pom nadrzędna w celu Gradle startowych plik bardzo łatwo. Skrypt startowy Gradle zapewnia taką samą funkcjonalność, co Maven super/parent pom. Podstawową różnicą jest to, że można zadzwonić Skrypt startowy

czasie wykonywania Aż z nich daje nam elastyczność, aby zmienić startowy
skryptu na biegu czasu, ale z pewnością nie śledzi zmiany.

Musisz użyć repozytorium, zarządzania dystrybucją, profilowania i innych sprawdzeń, takich jak findbugs, checkstyle itp. W skrypcie init.

Szczegóły są ogromne, tutaj znajdziesz pełne informacje tutaj. http://www.scmtechblog.net/2015/12/how-to-migrate-parent-pom-from-maven-to.html

Wyjaśniłem o wtyczce gradle release, która jest podobna do wtyczki dodatku maven.

Powiązane problemy