2013-05-24 13 views
20

Próbuję użyć zadania gradle jako rodzaju "skryptu powłoki agnostycznego systemu operacyjnego". Nie mam problemów z pisaniem logiki pliku kompilacji, ale chciałbym móc go uruchomić z dowolnego folderu.Gradle: pobierz folder, z którego został wykonany "gradle"

Moja pierwsza próba była umieścić folder z mojego pliku build.gradle na ścieżce, a następnie spróbuj wykonać:

gradle myMask 

z folderu, który nie zawiera build.gradle - ale to nie robi nie działa.

Moja następna próba była:

gradle -b /folder/containing/build.gradle myTask 

Ale to działa tylko do pewnego stopnia. W moim zadaniu chciałbym znaleźć wszystkie pliki w BIEŻĄCYM KATALOGU. prąd - nie znaczy taki, który zawiera build.gradle ale jeden z wewnątrz której jestem wykonujące "Gradle ....."

Próbowałem:

file(".") 

i

file("$projectDir") 

i kilka innych, ale wszystkie wskazują na folder zawierający skrypt budujący, a nie ten z , który go wykonuję.

Jakieś pomysły, jak mogę to zrobić?

+1

gdzie dodałeś System.getProperty ("user.dir") ??? – Ahmed

Odpowiedz

42

a zwycięzcą jest:

System.getProperty("user.dir") 
11

plik („”) zawsze zwraca bieżący folder projektu co nie jest koniecznie, a nie w katalogu roboczym. Aby odwołać się do działającego katalogu, można użyć:

new File(".").absolutePath 

nadzieję, że pomoże!

René

+1

Nie, to nie działa. to spowoduje powrót do folderu, w którym znajduje się plik build.gradle. I tego właśnie NIE chcę. –

+1

Czy przetestowałeś ten fragment? Jestem pewien, że zwróci bieżący katalog workingDir, ponieważ jest to domyślne zachowanie java dla nowego pliku ("."). –

+1

W rzeczywistości tego właśnie szukałem, mimo że może nie odpowiadać na zadane pytanie. Dzięki! – milosmns