Piszę wtyczkę Jenkins i używam build.getWorkspace()
, aby uzyskać ścieżkę do bieżącego obszaru roboczego. Problem polega na tym, że zwraca obiekt FilePath.Jak przekonwertować plik FilePath do pliku?
Jak mogę to przekonwertować na obiekt File?
Piszę wtyczkę Jenkins i używam build.getWorkspace()
, aby uzyskać ścieżkę do bieżącego obszaru roboczego. Problem polega na tym, że zwraca obiekt FilePath.Jak przekonwertować plik FilePath do pliku?
Jak mogę to przekonwertować na obiekt File?
Chociaż nie próbowałem tego, zgodnie z javadoc można uzyskać URI, z którego można następnie utworzyć plik: File myFile = new File(build.getWorkspace().toURI())
Tak. Wydaje się działać. Dzięki. – daniels
Jeśli potrzebujesz ścieżki jako łańcucha, użyj zamiast niej 'build.workspace.getRemote()'. – sschuberth
Proszę używać akt funkcję i zadzwonić własną FileCallable realizację jeśli twoja wtyczka powinna działać dla kapitana i niewolników. Aby uzyskać więcej informacji, sprawdź numer documentation, chapter "Using FilePath smartly" lub ten stackoverflow answer.
przykładem Code (source):
void someMethod(FilePath file) {
// make 'file' a fresh empty directory.
file.act(new Freshen());
}
// if 'file' is on a different node, this FileCallable will
// be transferred to that node and executed there.
private static final class Freshen implements FileCallable<Void> {
private static final long serialVersionUID = 1;
@Override public Void invoke(File f, VirtualChannel channel) {
// f and file represent the same thing
f.deleteContents();
f.mkdirs();
return null;
}
}
@Downvoter Nie rozumiem, dlaczego niektórzy ludzie po prostu -1 oczywistą, dlaczego. Myślę, że powinniśmy powiedzieć facetowi/dziewczynie, by napisał jakiś kod, zapytaj, co próbowali do tej pory, i tak dalej. Przekaż nam trochę opinii, abyśmy wszyscy mogli się czegoś nauczyć z tego doświadczenia. – Morfic
** Pytanie: ** dlaczego chcesz obiekt 'File'? 'FilePath' jest w rzeczywistości dość ekspresyjnym interfejsem API i jest specjalnie zaprojektowany do obsługi zdalnych operacji na plikach. Jeśli spróbujesz uzyskać dostęp do obszaru roboczego za pomocą 'Plik' na zdalnym agencie slave, będziesz miał zły czas. –