Miałem dość dobrą konfigurację gradacji, która zbudowała wszystko dobrze. Ale jeden z projektów mojej wieloprojektowej kompilacji wywodzi się od reszty z nich tak bardzo, że z chęcią przeniesie go do innego repozytorium git i skonfiguruje submoduły do obsługi.Wielokrotne rzutowanie metodą Gradle "Nie można znaleźć właściwości" źródłoSet "w projekcie" błąd
Najpierw przeniosłem projekt i jego zasoby do podfolderu Libraries/MovedProject
. Po zmianie niektórych linii w konfiguracjach graduldzeniowych działało dobrze. Ale wtedy zdecydowałem się napisać nowy build.gradle właśnie dla tego projektu i przenieść wszystkie konfiguracje tam z głównego.
I tu wszystko przestało działać. Kiedy próbuję wywołać dowolne zadanie, zawsze kończy się z Could not find property 'sourceSets' on project ':Libraries/MovedProject'
. Linia odpowiedzialna za to:
dependencies {
...
if (noEclipseTask) {
testCompile project(':Libraries/MovedLibrary').sourceSets.test.output
}
}
, której używam do prowadzenia testów, w których korzystam z zajęć z innych projektów. Jeśli usuniemy tę linię, kompilacja zakończy się niepowodzeniem tylko wtedy, gdy przejdzie do zadania kompilacjiTestJava projektów wykorzystujących obiekt MovedProject. Jeśli usunąć tę linię i wezwać gradle :Libraries/MovedLibrary:properties
widzę:
...
sourceCompatibility: 1.7
sourceSets: [source set main, source set test]
standardOutputCapture: org.gradle.logging.internal.DefaultL[email protected]
...
podczas gradle :Libraries/MovedLibrary:build
buduje poprawnie.
Obecnie mam wszystko skonfigurować w następujący sposób:
katalogach:
- /SomeMainProject1
- /SomeMainProject2
- /SomeMainProject3
- /Biblioteki
- /MovedProject
- build.gradle
- dependencies.gradle
- project.gradle
- tasks.gradle
- /MovedProject
- /Konstruktor
- dependencies.gradle
- projekt .gradle
- tasks.gradle
- build.gradle
- settings.gradle
ustawienia.Gradle
include Libraries/MovedProject, SomeMainProject1, SomeMainProject2, SomeMainProject3
sourceSets dla MovedProject są zdefiniowane w
Libraries/MovedProject/project.gradle
:sourceSets { main { java { srcDir 'src' srcDir 'resources' } resources { srcDir 'resources' } } test { java { srcDir 'test/unit' } } }
zależności, które wykorzystuje sourceSets.test.output są przechowywane w
Builder/dependancies.gradle
i ustawić dla każdego projektu, który potrzebuje do uruchomienia MovedProject testy:project(':SomeMainProject1') { dependencies { ... if (noEclipseTask) { testCompile project(':Libraries/net.jsdpu').sourceSets.test.output } } }
Jaki byłby najprostszy sposób na pozbycie się tego błędu i stopniowe tworzenie projektów z bieżącą strukturą katalogów? Chciałbym zrozumieć, dlaczego gradle nie może zobaczyć tej nieruchomości.
Wielkie dzięki! Teraz wszystko się buduje. Używana własność 'project.evaluationDependsOn()'. Domyślam się, że to rozwiązanie jest brudne, ale muszę go trzymać przez chwilę. –