Wpadłem na kilka powiązanych z SBT przypadków, które mnie zaskoczyły. Czy istnieje sposób, aby powiedzieć SBT, aby pomijał podprojekt w całości dla pewnych wersji scala podczas kompilacji krzyżowej?Jak przejść do kompilacji SBT dla danego podprojektu?
Oto dwa przykłady, w których byłoby to przydatne.
1) Kompilacja z trzema projektami A, B i C. Zarówno A, jak i B są projektami scala i mają "scalaVersions ++ = Seq (" 2.11.2 "," 2.10.4 ") w swoich ustawieniach . Projekt C jest artefaktem czysto Java i tym samym wykluczyłem biblioteki Scala z jego zależności. Chciałbym, żeby A i B były zależne od C, ale najlepiej chciałbym zbudować C tylko raz. Jeśli użyję domyślnego zachowania i zrobię "+ publish" z projektu agregatora root, otrzymam dwie kopie wyprodukowanego C-1.0.0.jar, a SBT spróbuje je opublikować dwa razy, co oczywiście nie jest możliwe dla repozytorium maven.
2) Kompilacja z wieloma projektami scala, ale jeden projekt powinien opierać się tylko na jednej wersji Scala. Próbowałem zdefiniować "scalaVersions" w ustawieniach dla tego projektu, aby przechowywać tylko jedną wersję, w której inne projekty mają dwa, ale znowu "+ publikuj" z głównego agregatora wydaje się ignorować to i nadal kompiluje je dwukrotnie, po raz drugi awaria, ponieważ zależności nie są dostępne dla tej wersji Scala. Ten projekt jest węzłem liścia na wykresie zależności, więc dobrze jest robić logicznie.
W przypadku nr 2, zastanawiałem się nad ustawieniem katalogów źródłowych dla "złej" wersji scala na/dev/null lub coś podobnego, ale to nadal uruchamia kompilację i tworzy pusty artefakt. Wiem, że prawdopodobnie mógł wejść i znaleźć wszystkie z odpowiednimi kluczami i zrobić coś podobnego
publishArtifact := if(scalaBinaryVersion.value == "2.10") false else publishArtifact.value
a następnie dopaść wszystkie inne pokrewne Ustawienia/zadań (kompilować, skompilować w test, test w teście, packageBin, itd.), ale wydaje się to dość hack-owskie. Czy gdzieś jest ustawienie "pomiń"?
Wygląda to bardzo użytecznie, ale szczerze mówiąc, nie mogę dodać "tak wiele testów" i takich do mojej kompilacji: -/ –
I zupełnie brakowało mi "rozsądnej" alternatywy w wersji 0.1.4. Przepraszam, proszę pana! Działa to jak urok! –
@ Tomer, jakie testy i "rozsądna alternatywa" masz na myśli? – matanster