Struktura mojego projektu Gradle jest następujący:Gradle: coraz ścieżkę katalogu głównego projektu, gdy wychodząc z plikiem zwyczaj budowania
Project
├── app
└── build.gradle
├── foo
└── bar.txt
·
·
·
└── build.gradle
Normalnie, aby uzyskać bezwzględną ścieżkę do folderu foo
mogę po prostu zrobić new File('foo').getAbsolutePath()
w pliku root build.gradle
.
Ale to niestety nie działa po uruchomieniu Gradle skrypt spoza katalogu projektu, na przykład robiąc coś takiego:
$ trunk/gradlew -b trunk/build.gradle tasks
z poprzednim polecenia Gradle poszukuje katalogu w foo
rodzic Projektu, ponieważ zacząłem od tego skryptu.
Czy istnieje sposób uzyskania absolutnej ścieżki projektu, w której znajduje się build.gradle, nawet jeśli skrypt zostanie uruchomiony z innego katalogu? Czy istnieje inny sposób uzyskania odniesienia do katalogu w tym samym folderze, w którym znajduje się skrypt?
Próbowałem również z getClass().protectionDomain.codeSource.location.path
, ale zwraca ścieżkę do katalogu pamięci podręcznej gradle.
Hej dzięki! To działa jak urok! A ja po prostu sobie sprawę, że Mogę uzyskać ścieżkę do bieżącego katalogu projektu poprzez 'rootProject.projectDir', ale w moim przypadku twoje rozwiązanie jest łatwiejsze i czystsze –
Z Netbeans co najmniej' File ('foo') 'NIE jest zawsze miejscem gradle. build file lives Myślałem, że mam błąd, dopóki nie odkryłem, że moje foo jest w Netbeans 'userDir' – will
@ będziesz mieć wszystko małe," 'file'"? – Vampire