2013-11-04 13 views
5

Sto scrivendo un plug-in Jenkins e sto utilizzando build.getWorkspace() per ottenere il percorso dell'area di lavoro corrente. Il problema è che questo restituisce un oggetto FilePath.Come posso convertire un FilePath in un file?

Come posso convertirlo in un oggetto File?

+0

@Downvoter Non capisco il motivo per cui alcune persone appena -1 senza dire perché. Penso che dovremmo dire al ragazzo/ragazza di postare del codice, chiedere cosa hanno provato finora e così via. Fornisci solo un feedback in modo che tutti possiamo imparare qualcosa da questa esperienza. – Morfic

+0

** Domanda: ** perché vuoi un oggetto 'File'? 'FilePath' è in realtà un'API piuttosto espressiva ed è specificamente progettato per gestire le operazioni di file remoto. Se provi ad accedere all'area di lavoro usando 'File' su un agente slave remoto, avrai" un brutto momento ". –

risposta

7

Anche se non ho provato questo, secondo il javadoc è possibile ottenere l'URI da cui è possibile quindi creare un file: File myFile = new File(build.getWorkspace().toURI())

+0

Sì. Sembra funzionare. Grazie. – daniels

+0

Se è necessario il percorso come stringa, utilizzare invece 'build.workspace.getRemote()'. – sschuberth

3

Si prega di utilizzare la funzione atto e chiamare il proprio FileCallable implementazione se il tuo plugin dovrebbe funzionare per master e slave. Per ulteriori informazioni, consultare documentation, chapter "Using FilePath smartly" o questo stackoverflow answer.

Esempio di codice (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; 
    } 
} 
Problemi correlati