Maven: file.separator und properties-Dateien

Status
Nicht offen für weitere Antworten.

BlackCraze

Mitglied
Hallo an alle :)

Ich baue meine Projekte mit Maven (momentan 2.0.9) und benutze auch den test-resources- und den main-resources-Ordner um entsprechende properties-Dateien für die Erstellung meines Enterprisearchives für Test und Realease zu trennen. In einer der Properties-Dateien befindet sich ein Dateipfad, der je nach Betriebssystem natürlich anders aussieht:

Code:
var1=C:\Dokumente und Einstellungen\ich\workspace\Projekt\src\test\resources\die.datei

\\ ODER EBEN

var1=/home/ich/und/so/weiter/die.datei

Für das Release ist es immer der gleiche Pfad und kann somit hart drin stehen - aber da mehrere Personen am Projekt arbeiten, muss das file im testresources irgendwie dynamisch gebaut werden (jeder hat den workspace woanders -.-')
Alles kein Thema - kann man ja automatisch zusammenbauen - ich habe einen Filter eingebaut, der mir den Pfad zur Testphase automatisch zusammenschustert - So funktioniert die POM auch auf den Rechnern meiner Kollegen - zumindest theoretisch ;-)

Code:
var1=${${basedir}${file.separator}src${file.separator}test${file.separator}resources${file.separator}die.datei}

Unter Windows steht dann in der gefilterten Datei:
Code:
var1=C:\Dokumente und Einstellungen\ich\workspace\Projekt\src\test\resources\die.datei

Wenn ich jetzt die Properties-Datei via Java einlese, sind aber die Backslashes weg, was dazu führt, dass der Pfad nicht stimmt. Habe schon ein Flüchtungszeichen vor die file.separator gestellt - aber der Teil aus der basedir-Variable geht natürlich nicht auf diesem Weg. ???:L

Hat jemand ne Ahnung, wie ich entweder den Pfad mit Flüchtungszeichen bekomme, oder die Properties-Datei mit nem normalen Pfad eingelesen bekomme?

Danke schonmal
 
M

maki

Gast
Dafür nimmt man profile ;)

Ansonsten kann man property dateien auch aus dem Classpath laden, natürlich nur wenn sie auch dort liegen.
 

BlackCraze

Mitglied
Ziel des ganzen sollte eigentlich sein, dass das Projekt nach dem auschecken direkt baubar ist (ohne irgendwelche Systemeinstellungen zu setzen etc.) Sonst könnte ichs die Leute ja auch einfach in der properties-datei pflegen lassen. Das muss doch irgendwie zu lösen sein - ich kann mir nicht vorstellen, dass ich der erste mit dem Problem bin - aber ich finde tatsächlich nichts dazu im Netz. Wie würde deine profile-Variante dazu aussehen? Filtern musst du es doch trotzdem, wenn du was in ne Datei reinschreiben willst - oder irre ich da?
 
M

maki

Gast
Code:
/
geht immer als seperator.

Immer baubar ist richtig, imho sollte jeder entwickler eine eigene settings.xml datei haben, in der nochmals die werte aus der pom.xml überschrieben werden.
Profile sollten aber auch schon in der pom drinnen sein, eines für die dev, test, prod, etc. pp.
Selbstverständlich sollten die Werte aber auch schon als properties (ohne profil) angeben sein, standarwerte eben, wo möglich.

Filter ist schon ok.

Du findest nichts im Netz weil du wahrscheinlich nicht nach dem richtigen suchst ;)
Standard vorgehen nach Buch eben.

Würde dir abraten so vorzugehen: http://sujitpal.blogspot.com/2006/10/maven2-multi-environment-filter-setup.html
Hat ime mehr Nachteile als Vorteile.
 

BlackCraze

Mitglied
Ich glaube wir reden aneinander vorbei ^^

Das Problem ist, dass die referenzierte Datein ein Zertifikat und ein Truststore sind. Die werden für ne SSL-Verbindung gebraucht und müssen als Systemvariablen gesetzt sein. Im Testsystem sind das natürlich andere Zertifikate als im Produktivsystem. Um diese Verbindung aufzubauen (egal ob prod oder test) lese ich in meinem Connector die besagte Propertiesdatei mit Pfaden ein und setze die Systemvariablen (keystore/truststore). Ich würde ja auch relationale Pfade für den Test nehmen ... aber es klappt nicht wenn ich da "/die.datei" reinschreibe. So würde man es machen, wenn die Datei direkt in der Testklasse über:

Code:
getClass().getResourceAsStream("/meine.datei")

gelesen werden würde (nehme stark an, dass das am Classloader liegt).


Um auf das urspürüngliche Problem zurückzukommen ...
Das eigentliche Problem ist nicht der file.separator aus der Maven-Property ${file.separator} - Das Problem ist der Wert, den ${basedir} herauswirft. Denn da kommt der Pfad mit backslashes - das kann ich auch nicht verhindern, indem ich die ${file.seperator} mit backslashes ersetze.

Code:
//in der zu filternden Properties:
var1=${basedir}${file.separator}src${file.separator}test${file.separator}resources${file.separator}die.datei
// --->
// var1=C:\Dokumente und Einstellungen\ich\workspace\Projekt\src\test\resources\die.datei

//in der zu filternden Properties:
var1=${${basedir}/src/test/resources/die.datei
// --->
// var1=C:\Dokumente und Einstellungen\ich\workspace\Projekt/src/test/resources/die.datei

Immer baubar ist richtig, imho sollte jeder entwickler eine eigene settings.xml datei haben, in der nochmals die werte aus der pom.xml überschrieben werden.
Das ist auch bei uns so ... da stehen zB die Werte für den lokalen Testserver drin

Profile sollten aber auch schon in der pom drinnen sein, eines für die dev, test, prod, etc. pp.
Selbstverständlich sollten die Werte aber auch schon als properties (ohne profil) angeben sein, standarwerte eben, wo möglich.
Das ist es ja, was ich erreichen will - jeder soll das gleiche Zertifikat nutzen ohne es nochmal einstellen zu müssen - dazu liegt das Zertifikat im testresources-Ordner. Zusätzlich gibt es eine Propertiesdatei "connection.properties" in der der Pfad steht, wo das Zertifikat zu finden ist. Wegen des o.g. Problems muss der Pfad imo absolut sein. Da aber der workspace bei jedem Entwickler wo anders ist, muss dieser Pfad in der "connection.properties" in der process-resources lifecyclephase generiert werden. Sonst kommt wärend der Testphase keine SSL-Verbindung zustande :)
 

BlackCraze

Mitglied
Kleiner Nachtrag:

Die Propertiesdatei wird über java.util.Properties geladen ... in der ApiDoc steht auch, dass die Backslashes wegfliegen, wenn sie nicht escaped sind:
Java ApiDoc
 

BlackCraze

Mitglied
Okay ... haben es gerade gelöst :) Es gibt zwei Wege, wie man das Problem umgehen kann:

1.Möglichkeit
Man speichert die Propertiesdatei als XML ab und lädt sie mit der Methode aProperties.loadFromXML(); Beim Lesen von XML beachtet die Properties-API keine Unicodeescapes (encoding wird ja in XML-Dateien angegeben)

2. Möglichkeit (imo die Bessere und richtigere ^^)
Man gibt in der pom EXPLIZIT die Version des maven-resources-plugin an ... (warum auch immer) wurde bei uns ohne Angabe der Versionsnummer die 2.2 benutzt ... diese version hatte den bekannten Bug, dass die Backslashes nicht escaped wurden. QUELLE
Nachdem die pom also folgendes intus hatte ...

Code:
<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-resources-plugin</artifactId>
	<version>2.3</version>
</plugin>

... stand in der gefilterten Propertiesdatei folgendes:

Code:
var1=C\:\\Dokumente und Einstellungen\\ich\\workspace\\usw\\src\\test\\resources\\die.datei

Problem gelöst ... danke für die Mühe :toll:
 

BlackCraze

Mitglied
übrigens gibt ${file.separator} immernoch ein einzelnes Backslash aus genau wie ${path.separator} - nur vollständige Pfade werden escaped :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Jenkins - maven-jar-plugin - kein jar-file Tools - Maven, Gradle, Ant & mehr 38
Oneixee5 Maven deploy - per SSH Tools - Maven, Gradle, Ant & mehr 6
H Maven kein Hauptmanifestattribut Tools - Maven, Gradle, Ant & mehr 10
M Programm mit Maven erstellen und starten samt Abhängigkeiten Tools - Maven, Gradle, Ant & mehr 27
D Interne Dependencies in Maven Tools - Maven, Gradle, Ant & mehr 51
J log4j2 mit Hibernate über Maven Tools - Maven, Gradle, Ant & mehr 10
thor_norsk Maven Build Failed: kann nicht von start.spring.io generiertes Projekt auf IntelliJ IDE starten Tools - Maven, Gradle, Ant & mehr 8
H Maven JUnit5 Tests werden ignoriert Tools - Maven, Gradle, Ant & mehr 5
thor_norsk Maven Tools - Maven, Gradle, Ant & mehr 32
ExceptionOfExpectation Maven Build Failed: kann nicht von start.spring.io generiertes Projekt auf Eclipse starten Tools - Maven, Gradle, Ant & mehr 20
Ich kann Maven nicht als UmgebungsVariable hinzufügen Tools - Maven, Gradle, Ant & mehr 2
F Maven JAR Plugin Probleme Tools - Maven, Gradle, Ant & mehr 4
W Was "braucht" man denn alles? Maven, Ant, Git, ... Tools - Maven, Gradle, Ant & mehr 21
N Fehler beim Imgui mit Maven Tools - Maven, Gradle, Ant & mehr 7
M Spring Boot Maven pom.xml-Eintrag Tools - Maven, Gradle, Ant & mehr 17
Encera JavaFX und Maven funktioniert nicht Tools - Maven, Gradle, Ant & mehr 1
B maven multi module Projekt und unnötige/zusätzliche Leerzeilen Tools - Maven, Gradle, Ant & mehr 4
J Maven Konfusion Tools - Maven, Gradle, Ant & mehr 7
Tippster Maven Sqlite integrieren (Eclipse, Maven) Tools - Maven, Gradle, Ant & mehr 4
T Image kreieren mit Maven bei JavaFX und nicht modularen Jars Tools - Maven, Gradle, Ant & mehr 12
T JSON Dependencies in Maven Tools - Maven, Gradle, Ant & mehr 7
T JavaFX, Jar über Maven kreieren Tools - Maven, Gradle, Ant & mehr 2
Encera Libraries Maven Projekt hinzufügen Tools - Maven, Gradle, Ant & mehr 9
Oneixee5 Maven Phase Tools - Maven, Gradle, Ant & mehr 3
Robertop maven copy-resources nicht in WAR Datei Tools - Maven, Gradle, Ant & mehr 2
T Maven: Probleme beim Einbinden der Dependencies Tools - Maven, Gradle, Ant & mehr 9
M Mit Maven eine jar Datei bauen ohne irgendeine main Methode Tools - Maven, Gradle, Ant & mehr 1
M Mit Maven eine jar Datei Bauen ohne irgendeine main Methode Tools - Maven, Gradle, Ant & mehr 18
H Maven Maven: <mainClass>NAME?</mainClass> Tools - Maven, Gradle, Ant & mehr 13
H Maven maven-source-plugin is missing Tools - Maven, Gradle, Ant & mehr 5
M Missing Artifact on selbst gehostestes Maven Paket Tools - Maven, Gradle, Ant & mehr 8
M Error code 409 maven Tools - Maven, Gradle, Ant & mehr 5
M github + maven Fehler beim repository erstellen Tools - Maven, Gradle, Ant & mehr 1
M durch Maven wird "var" nicht gefunden Tools - Maven, Gradle, Ant & mehr 4
N Maven Intellij Maven Projekt erstell keine src Tools - Maven, Gradle, Ant & mehr 4
LimDul Maven Einzelne Unit Tests in Maven Builds skippen Tools - Maven, Gradle, Ant & mehr 3
M Maven jpackage-image wird nicht gefunden Tools - Maven, Gradle, Ant & mehr 22
M javafx wird in einem alten programm nicht bei maven gefunden Tools - Maven, Gradle, Ant & mehr 15
L Maven IntelliJ, Maven und JavaFX + SceneBuilder Tools - Maven, Gradle, Ant & mehr 23
von Spotz Maven und Spring: "Add to classpath" ? Tools - Maven, Gradle, Ant & mehr 29
Kirby.exe Projekt mit Maven kompilieren Tools - Maven, Gradle, Ant & mehr 13
P Maven Projekt Abhängigkeiten auf bekante Schwachstellen prüfen Tools - Maven, Gradle, Ant & mehr 4
H Maven dependency Problem ? Tools - Maven, Gradle, Ant & mehr 23
B Maven und Intellij Tools - Maven, Gradle, Ant & mehr 24
P Maven Test werden nicht ausgeführt . Junit . Maven . Surefire . Eclipse Tools - Maven, Gradle, Ant & mehr 12
yakazuqi Maven Eigene API mit Maven einbinden Tools - Maven, Gradle, Ant & mehr 1
M Was ist besser für den Anfang, Maven oder Gradle? Tools - Maven, Gradle, Ant & mehr 6
P Maven Wie die Maven Project version in JSP page verwenden? Tools - Maven, Gradle, Ant & mehr 2
C Maven Multi-Module Projekt Tools - Maven, Gradle, Ant & mehr 2
T Maven Warnings/Fehlermeldungen Tools - Maven, Gradle, Ant & mehr 12
T Maven und Datenbank(treiber) Tools - Maven, Gradle, Ant & mehr 13
T Maven Runnable Jar Tools - Maven, Gradle, Ant & mehr 5
T Grundlagen Maven und Git/Github Tools - Maven, Gradle, Ant & mehr 2
LimDul Maven Maven Surefire Plugin - Warnings upgrade Tools - Maven, Gradle, Ant & mehr 2
G Maven upload Tools - Maven, Gradle, Ant & mehr 0
K Maven - Parent oder Dependency? Tools - Maven, Gradle, Ant & mehr 5
B Maven Maven deploy Tools - Maven, Gradle, Ant & mehr 4
H Jenkins keine Tests gefunden - aber in Maven Tools - Maven, Gradle, Ant & mehr 30
P Mit Maven einen spezifischen Branch nach Tag-Parameter erstellen (in Jenkins-Job) Tools - Maven, Gradle, Ant & mehr 3
P Nur einen Teilbaum in Maven releasen? Tools - Maven, Gradle, Ant & mehr 7
D Cannot invoke "javafx.scene.control.MenuButton.getScene()" nach konvertierung zu maven Tools - Maven, Gradle, Ant & mehr 3
H Maven - keine Durchführung von Tests Tools - Maven, Gradle, Ant & mehr 12
P JavaFX jar mit Maven Tools - Maven, Gradle, Ant & mehr 9
P Maven & Intellij Modul kann nicht aufgelöst werden Tools - Maven, Gradle, Ant & mehr 12
H Eclipse JUnit erzeugt Fehler im Maven-Test Tools - Maven, Gradle, Ant & mehr 1
H Maven Anfängerproblem - No plugin found for prefix 'archetype' in the current project and in the plugin groups Tools - Maven, Gradle, Ant & mehr 25
sascha-sphw Maven vs Gradle Tools - Maven, Gradle, Ant & mehr 24
D Maven Maven und die Build-Geschwindigkeit Tools - Maven, Gradle, Ant & mehr 11
K Maven IntelliJ + Maven + JavaFX Tools - Maven, Gradle, Ant & mehr 2
J Maven Mit Maven eine ZIP Datei erstellen Tools - Maven, Gradle, Ant & mehr 0
K Maven install schlägt fehl Tools - Maven, Gradle, Ant & mehr 10
I Problem: Maven import extern Lib Tools - Maven, Gradle, Ant & mehr 3
Tom299 Maven Maven funktioniert nach Installation nicht Tools - Maven, Gradle, Ant & mehr 1
I Maven Interface hinzugefügt - Error Tools - Maven, Gradle, Ant & mehr 1
M Verständnisfrage Maven Tools - Maven, Gradle, Ant & mehr 2
S Maven installieren - "Befehl wurde nicht gefunden" Tools - Maven, Gradle, Ant & mehr 1
E Maven: Wie Abhängigkeiten analysieren? Tools - Maven, Gradle, Ant & mehr 0
E Maven Maven distributionManagement Vererbung in child POM Tools - Maven, Gradle, Ant & mehr 8
P Maven Parent- Child POMs Tools - Maven, Gradle, Ant & mehr 13
E Release Kandidaten mit Maven bauen Tools - Maven, Gradle, Ant & mehr 4
C Orderstruktur bei Libarys - Wie mit Ant oder Maven lösen? Tools - Maven, Gradle, Ant & mehr 0
G Maven, finde Dependency nicht... Tools - Maven, Gradle, Ant & mehr 2
G Maven Continious Integration mit Jenkins, Maven und Nexus - wie richtig? Tools - Maven, Gradle, Ant & mehr 1
P Maven Parent und Child Poms - dependencies Tools - Maven, Gradle, Ant & mehr 1
reibi Maven Maven + Eclipse Tools - Maven, Gradle, Ant & mehr 0
P Maven add resource Tools - Maven, Gradle, Ant & mehr 0
D [Maven Pluginentwicklung] - Plugin das nur auf Parent pom läuft Tools - Maven, Gradle, Ant & mehr 0
S Maven Maven und Auflösen von JSF EL Tools - Maven, Gradle, Ant & mehr 5
H Maven HSQLDB in den Maven lifecycle einbinden Tools - Maven, Gradle, Ant & mehr 5
S Maven Unterschiedliche Deployments mit Maven Tools - Maven, Gradle, Ant & mehr 2
S Maven buildnumber-maven-plugin / Formatproblem mit timestamp Tools - Maven, Gradle, Ant & mehr 17
P Erzeugen von WebServices mit Maven und Eclipse (external Tool) Tools - Maven, Gradle, Ant & mehr 2
aze Maven downgraden von 3.x auf 2.09 unter Linux Tools - Maven, Gradle, Ant & mehr 4
Rudolf JSF und Maven mit Eclipse Tools - Maven, Gradle, Ant & mehr 5
M Maven-Dependency kann nicht gefunden werden Tools - Maven, Gradle, Ant & mehr 2
M Maven imports aus Modulen Tools - Maven, Gradle, Ant & mehr 4
P multimodul maven in SVN Tools - Maven, Gradle, Ant & mehr 3
D [Maven] neuerdings "No plugin found for prefix ..." errors Tools - Maven, Gradle, Ant & mehr 7
C Automatisches Deployen in ein externes Maven Repository. Tools - Maven, Gradle, Ant & mehr 5
D JUnit Test in Maven fail und in Eclipse erolgreich Tools - Maven, Gradle, Ant & mehr 4

Ähnliche Java Themen

Neue Themen


Oben