In einem Maven-Projekt möchte ich einige Testergebnisse in eine Datei im Zielverzeichnis des Projekts schreiben. Immer wenn ich das Projektverzeichnis erhalte, erhält es tatsächlich das IntelliJ-Projektverzeichnis anstelle des tatsächlichen Maven-Verzeichnisses.Erhalte den Zielverzeichnispfad in Maven (Java)
Antwort
Ich habe die Lösung dafür. Hier ist, wie ich umsetze. Ich habe meine eigene Klasse CSVReader, die CSVReader-Bibliothek verwendet. Ich schreibe meine Ergebnisse in der Datei results.csv unter Zielverzeichnis.
URL location = CSVReader.class.getProtectionDomain().getCodeSource().getLocation();
String path = location.getFile().replace("classes/","") + "results.csv";
In dem obigen Code, den ich den Zielverzeichnispfad bin immer und die Klassen zu entfernen/durch Zeichenfolge ersetzen Methode und Anhänge Namen meiner gewünschte Datei aus. Hoffe, das könnte jemandem helfen.
Ich habe die obige Antwort mit einer leichten Änderung verwendet (ich kann keine Kommentare hinzufügen). Da Tests in den Ordner 'test' gestellt werden, befinden sich ihre Klassen in 'target/test-classes' (daher kann das Ersetzen von 'Klassen' möglicherweise nicht das erwartete Ergebnis liefern). Stattdessen habe ich die folgenden:
File targetClassesDir = new File(ExportDataTest.class.getProtectionDomain().getCodeSource().getLocation().getPath());
File targetDir = targetClassesDir.getParentFile();
Warum this.getClass(). GetProtectionDomain(). GetCodeSource(). GetLocation(). GetPath() würde Ihnen den Pfad mit einem an die Front angehängten Schrägstrich geben? – Madrugada
Sie auch java.nio.file.Paths
verwenden:
URL url = Paths.get("target", "results.csv").toUri().toURL();
- 1. Erhalte Aufzug Quellen von Maven Repository
- 2. Maven Fehler mit Java 8
- 3. Erhalte den Wochentag
- 4. Maven + Java-Paket Erklärung
- 5. Erhalte Datei Schöpfer/Besitzer Attribute in Java
- 6. Java - NoClassDefFoundError in gemischten Maven und nicht Maven Projekte
- 7. Erhalte Instanz einer reflektierten Klasse in Java
- 8. Erhalte eigene IP in Java Servlets
- 9. Erhalte Unicode-Zeichen einer Sprache in Java
- 10. Java: Erhalte Dateierweiterung mit "." in seinem Namen
- 11. Wie erhalte ich ein Dateisymbol in Java?
- 12. Beschränken Java Maven Plugin Konfigurationsparameter
- 13. Erhalte den Dateinamen ohne Erweiterung in Matlab
- 14. Erhalte den Namen des Benutzers in yii2
- 15. Erhalte den Combobox-Text in C#
- 16. Erhalte den Ausreißerindex von aq.plot() in R
- 17. Erhalte den aktuellen Dateinamen in Babel Plugin?
- 18. Erhalte den Wochentag in SQL 2005/2008
- 19. Erhalte den Typ einer Variablen in MySQL
- 20. Erhalte den Dezimalteil eines Double in Swift
- 21. Erhalte den aktuellen Dateinamen in JSP
- 22. Wie erhalte ich den Monatsnamen in C#?
- 23. Erhalte den Namen eines Parameters
- 24. Wie erhalte ich den Methodennamen zur Kompilierzeit?
- 25. Java-Optionen von Maven finden
- 26. Abhängigkeiten mit Maven in Java lösen
- 27. Maven kann nicht Java 1.8
- 28. Wie kann ich den vollständigen StackTrace in Maven sehen?
- 29. Talend: Erhalte den Namen der Datei von tFileInputDelimited in tSystem
- 30. Erhalte den Dateinamen ohne Dateiendung in der Vim-Funktion.
Theres eine etwas Sound-Lösung für dieses Problem hier lesenswert: http://stackoverflow.com/questions/7808664/ how-to-get-maven-project-basedir-from-java-code - Kurz gesagt, Sie können das Maven-Projekt Basisverzeichnis bekommen und das könnte sein, was Sie suchen, hoffe es klappt, wenn nicht lassen Sie mich wissen :) – D3181