Maven2: Test und Prod Builds

Status
Nicht offen für weitere Antworten.

byte

Top Contributor
Hi,

ich habe jetzt Maven2 soweit eingerichtet, dass die Server-Komponente zufriedenstellend aus der IDE läuft. Nun möchte ich mit Hilfe von Maven2 meine Builds für die Test- und Produktiv-Umgebung machen. Das kann ich derzeit über die Resourcen steuern. Ich habe unterschiedliche Properties Dateien für Test und Prod, die derzeit über Spring in die XML-Konfiguration integriert wird (Property-Placeholder-Configurer per ${...} Notation). Zusätzlich möchte ich dann je nach Test oder Prod eine andere log4j Konfiguration deployen.

Wie mache ich sowas nun am besten mit Maven? Ich habe im Guide gelesen, dass Maven dazu in der Lage ist, ähnlich wie Spring die Properties per ${...} Notation zu ersetzen. Dafür verwendet man folgendes in der POM:

Code:
<build>
<filters>
<filter>src/main/filters/default.properties</filter>
</filters>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>

Und weiterhin habe ich gelesen, dass man sich unterschiedliche Profile anlegen kann. Gehe ich nun recht in der Annahme, dass ich mein Vorhaben bewerkstelligen kann, indem ich mir für Test und Prod jeweils ein Profil anlege und dann per Filter dort die Properties ersetze, jeweils mit einer anderen Property Datei?

Oder wie macht ihr sowas?

Grüße byto


Edit: Thread bitte nach Deployment verschieben. ;)
 
Zuletzt bearbeitet:
M

maki

Gast
*verschoben*

Für so etwas sollte man imho am besten Profile verwenden, in denen dann die Properties definiert sind (standard Maven2 Syntax).
Es gibt zwar einen "dreckigen" Hack das alles auch per Property Dateien zu lösen, führt ime aber zu mehr XML Konfiguration, ist verwirrend auf Dauer und ist nicht Standardkonform.
 

byte

Top Contributor
Hast Du einen noch einen Tipp für mich, wie ich am besten je nach Build unterschiedliche log4j Konfigurationen integrieren kann?
 

byte

Top Contributor
OK, ich habs nun gelöst und es funktioniert sehr gut. Die Properties werden beim Maven Build automatisch in die Spring Konfigs integriert. Das habe ich über verschiedene Profile und Property Dateien gelöst (letztere gabs eh schon, so musste wenig geändert werden).

Über den gleichen Mechanismus setze ich auch je nach Environment eine andere log4j Config über folgende Spring Bean:

Code:
	<bean id="log4jInitialization" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
		<property name="targetClass" value="org.springframework.util.Log4jConfigurer" />
		<property name="targetMethod" value="initLogging" />
		<property name="arguments">
			<list>
				<value>classpath:${log4j.configuration}</value>
			</list>
		</property>
	</bean>

Der Wert für ${log4j.configuration} kommt dann wieder aus der jeweiligen Property Datei.

Bin jetzt übrigens auch dazu übergegangen, den Test-Tomcat per Maven zu starten (und nicht mehr mit WTP). Das geht ja sehr komfortabel per tomcat:run Goal, und Debugging klappt da netterweise auch per m2. :)
 
M

maki

Gast
Habe immer das ant run plugin genutzt um unterschiedliche Dateien im Build zu integrieren, eine elegante Lösung kenne ich nicht..
Gute Idee mit Spring Config, werde ich mir mal genauer ansehen.

Habe nicht soviel Erfahrung mit m2eclipse und WTP, nutze das Sysdeo Plugin weil nur das den Tomcat 3.3 unterstützt (Legacy, *würg*).

Im Prinzip wäre das Ideal wenn man die Eclipse Tools genauso weiternutzen könnte, selbst wenn es sich um ein Maven2 Projekt handelt, für viele ist das schon der Fall imho.
 

byte

Top Contributor
Habe nicht soviel Erfahrung mit m2eclipse und WTP, nutze das Sysdeo Plugin weil nur das den Tomcat 3.3 unterstützt (Legacy, *würg*).
Ich benutze jetzt das Tomcat Plugin, das startet einen embedded Tomcat 6. Haben zwar produktiv einen 5.5er, aber was solls. Nutzen eh keine Tomcat Features, von daher sollte es wurscht sein. Und Integrationstests gibts dann eh auf ner Testinstanz im Rechenzentrum. :)

Im Prinzip wäre das Ideal wenn man die Eclipse Tools genauso weiternutzen könnte, selbst wenn es sich um ein Maven2 Projekt handelt, für viele ist das schon der Fall imho.

Das kriegt man auch tatsächlich hin. Ist ganz gut in dem Tutorial beschrieben, das ich hier irgendwo gepostet habe. Der "Trick" ist halt, das Projekt als Dynamic Web Project in Eclipse WTP zu erstellen und dann Maven per m2 hinzuzufügen. Danach muss man noch ein paar Einstellungen in der .classpath und in einer anderen Settings Datei von WTP machen.

Aber im Grunde find ichs jetzt doch einfacher, wenn man einfach per tomcat:run testet. :)
 
M

maki

Gast
Das kriegt man auch tatsächlich hin. Ist ganz gut in dem Tutorial beschrieben, das ich hier irgendwo gepostet habe. Der "Trick" ist halt, das Projekt als Dynamic Web Project in Eclipse WTP zu erstellen und dann Maven per m2 hinzuzufügen. Danach muss man noch ein paar Einstellungen in der .classpath und in einer anderen Settings Datei von WTP machen.
Hmm... nix dagegen das du den Tomcat lieber über maven startest, aber eigentlich das Plugin automatisch die Eclipse Projektdateien aktualisieren.

Hab gerade mal getestet, ein neues Webprojekt (unter Eclipse Maven Archtype generiert), WTP Server konfiguriert, Projekt angegeben und fertig, läuft wie mit ohne Maven.

Hast du die WTP Integration für m2eclipse mitinstalliert?
Hält sich das Projekt an die Maven konventionen?
Hilft das hier: Rechtsklick auf Projekt -> Maven -> update project configuration

Ich nutze Eclipse 3.5 mit aktuellem m2eclipse plugin.
 

byte

Top Contributor
Hab es auf diese Weise um ehrlich zu sein gar nicht ausprobiert. Ich habe einfach unser bestehendes Webprojekt benutzt und dort Maven hinzugefügt. Die Konventionen stimmen auch (src/main/java, src/main/resources, src/main/webapp, src/test/java, src/test/resources).
Aber gut zu wissen, dass man das Projekt auch direkt mit Maven erstellen kann. Das spart zukünftig einiges an manueller Arbeit.
 
M

maki

Gast
Ja, erstellen kann man es auch mit Maven, worauf ich hinauswollte war das man mittlerweile eigentlich die .classpath und .project Dateien gar nicht mehr selbst ändern muss, da dies das plugin übernehmen sollte.
In früheren Version von m2eclipse war die Integration nicht so sauber und es musste öfters manuell nachbearbeitet werden.
 

byte

Top Contributor
Rechtsklick auf Projekt -> Maven -> update project configuration

Habe ich jetzt mal getestet und funktioniert im Grunde auch, allerdings fehlt dann eine wichtige Einstellung, nämlich das Auflösen der Maven Dependencies. Man kann das aber einfach einstellen über Project -> Properties -> Java EE Module Dependencies -> Haken bei Maven Dependencies machen
 
M

maki

Gast
Verwundert mich etwass, normalerweise sollten die Maven2 Dependecies automatisch zum Build Path hinzugefügt werden.
Hat das etwas mit dem TestNG Thread von dir kürzlich zu tun?
 

byte

Top Contributor
Keine Ahnung worans liegt, ist mir im Grunde aber auch egal, denn es funktioniert ja. Und notfalls kann man alles per Hand anpassen in der
Code:
.classpath
und
Code:
.settings/org.eclipse.wst.common.component
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A [maven2] Goals Projektabhängig auswählen Tools - Maven, Gradle, Ant & mehr 4
R [Maven2] immer Build failed für Projekt Tools - Maven, Gradle, Ant & mehr 10
RaoulDuke Maven2 - Anfängerprobleme Tools - Maven, Gradle, Ant & mehr 9
P [Maven2] Globale Properties Tools - Maven, Gradle, Ant & mehr 5
P [Maven2] Deploy auf Artifactory mit LDAP Authentication Tools - Maven, Gradle, Ant & mehr 10
P [Maven2] Projectdoku direkt auf Webserver deployen Tools - Maven, Gradle, Ant & mehr 7
M Maven2 Axis2 Tools - Maven, Gradle, Ant & mehr 2
T [MAVEN2] Wo Saple-code zur Lib platzieren? Tools - Maven, Gradle, Ant & mehr 9
P [Maven2] Wie Blacklists löschen? Tools - Maven, Gradle, Ant & mehr 8
P [Maven2] Wie kann man das "Updating Indexes" verhindern? Tools - Maven, Gradle, Ant & mehr 4
M Maven2 - Ant execution einmalig ausführen Tools - Maven, Gradle, Ant & mehr 8
K Maven2 inherited docs nachladen Tools - Maven, Gradle, Ant & mehr 4
P Maven2 - wie mache ich externe Jar Dateien zu Artifacts? Tools - Maven, Gradle, Ant & mehr 15
N Maven2 Projekt unter Hudson mit SVN Repository erstellen Tools - Maven, Gradle, Ant & mehr 4
H Maven2 -> Nachladen der Dependencies Tools - Maven, Gradle, Ant & mehr 4
J Anfängerfragen zu maven2 Tools - Maven, Gradle, Ant & mehr 2
U Maven2 WAR Plugin doppelte Dependencies Tools - Maven, Gradle, Ant & mehr 4
K Spring JUnit Test: Code / Strukturierung / Beratung Tools - Maven, Gradle, Ant & mehr 9
P Maven Test werden nicht ausgeführt . Junit . Maven . Surefire . Eclipse Tools - Maven, Gradle, Ant & mehr 12
H Eclipse JUnit erzeugt Fehler im Maven-Test Tools - Maven, Gradle, Ant & mehr 1
T test schlägt im build fehl, lokal nicht, warum? Tools - Maven, Gradle, Ant & mehr 2
B Maven Selenium-Test läuft nicht unter Firefox Tools - Maven, Gradle, Ant & mehr 2
D JUnit Test in Maven fail und in Eclipse erolgreich Tools - Maven, Gradle, Ant & mehr 4
D [Maven] noclassdeffounderror in eclipse (junittest) - mvn integration-test funktioniert!) Tools - Maven, Gradle, Ant & mehr 9
D [Maven] Separates Integr.Test Projekt/(Modul) hinterher "anfügen" Tools - Maven, Gradle, Ant & mehr 26
borobudur Test-Klassen in gleichem Paket Tools - Maven, Gradle, Ant & mehr 13
reibi Maven Normales Beispiel in SRC-Folder Test Tools - Maven, Gradle, Ant & mehr 5
D verschiedene Versionen "builden" für Test und Lifebetrieb Tools - Maven, Gradle, Ant & mehr 14
W Maven / Zugriff auf Test Klassen von Dependencies Tools - Maven, Gradle, Ant & mehr 2

Ähnliche Java Themen


Oben