maven-profile und-Feder-Profilen?
einer Menge von java-Anwendungen-build mit maven. maven-Profile-Konzept, es ist wirklich praktisch, build-release-Paket für verschiedene Umgebungen. z.B. dev/test/prod
mit verschiedenen path /jndiname /security rule /properties files
... ich glaube, ich habe nicht to list codes hier, um es zu erklären.
Frühjahr ist ein sehr schönes und beliebtes framework für die java-Entwicklung, seit spring3 es unterstützt profile-Konzept zu.
Nun Frage kommt, für die Freigabe auf verschiedenen ENVs Zweck, was ist besser? jetzt ziehe ich maven-Profil. seit dem Frühjahr hat auf jeder Kopie bean definition in jedem Profil. und es muss ein Initialisierer/Eigenschaft lassen Frühling wissen, welches Profil sollte übrigens aktiviert werden.
aber ich fühle Feder-Profil ist flexibler als maven-Profil.
was denkst du? bitte einige Tipps geben. danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Maven-profile bieten würde, ein build-time-Lösung, während SpringFramework profile bieten würde, eine Laufzeit alternative. Ich denke, das ist die erste Frage mag man sich Fragen: wenn er will, um ein einzelnes Paket, das bereitgestellt werden kann, in verschiedenen Umgebungen, oder wenn er will das build-Werkzeug, um verschiedene Pakete, die entsprechend der Ziel-Umgebung.
Eine Sache im Auge zu behalten ist, dass viele Fragen, die entstehen können, wenn Sie verschiedene Pakete bereitgestellt, die in verschiedenen Servern. In meinem Arbeitsplatz, wenn ich zum Beispiel bin beim bereitstellen eines Pakets einen Fehler zu korrigieren, die zuvor aufgetreten in der Produktionsumgebung, eine Unternehmenspolitik wäre, dass die einzige akzeptable Szenario ist, dass ich die gleiche Lösung Paket in der QS und in der Produktion von Servern.
Wenn Sie müssen verschiedene Artefakte dann geht das auch mit maven. Wenn es nur eine Reale Konfiguration, die konfiguriert werden können NACH dem Artefakt zu bauen-dann Benutzer-Feder-profile.
Wie bereits in den anderen Antworten: es hängt alles davon ab, wie Sie arbeiten 🙂
Was wir kamen mit, die in den letzten Jahren mit maven und jetzt die Feder 3.1 profile ist diese:
PropertyPlaceholderConfigurer
um den setup-Applikation (oder eine JNDI-Ressource je nach Kunde). Dies erlaubt nur ein maven-release ausgeführt werden.PropertyPlaceholderConfigurer
verwenden wir sowieso.gibt es einige nette tutorials rund um, wie das geht:
wir in der Regel nur verwenden, maven profile, aufgeteilt in unterschiedliche Teile für die Entwickler und die kontinuierliche integration zu bauen. Wir brauchen eigentlich nicht verwenden Sie Sie für den Ziel-Umgebungen mehr für die .war-Dateien.
Noch heute nutzen wir maven-Profilen für automatisiertes Datenbank-Implementierungen, die sich mehr im Vergleich zu den web-apps (die Menge der Daten, test-Daten, ...), diese sind aber nicht als zip oder so.
Sicherlich gibt es auch andere Wege zu gehen. Ich glaube nicht, dass die das Ende der Geschichte 🙂
Aber es kann helfen.
Ich passiert ist, verwenden Sie die Eigenschaften-maven-plugin zum setzen einer system property je nachdem, welche maven-Profil aktiviert wurde. Dann im Frühling, ich war programmgesteuert aktivieren Sie das Profil(s) wollte, dass ich, je nach system-Eigenschaft :
String activeProfile = System.getProperty("myapp.Profil");
appContext.getEnvironment().setActiveProfiles(....)
Außerdem, wenn ich wollte einen link direkt die zwei Arten von Profil (maven/spring), war ich von der Einstellung der Feder.profile.aktive Eigenschaft über das maven-plugin.
Thoses Praktiken sind möglicherweise falsch in das design, aber Sie löste meine Probleme.
Ich denke, es hängt von Ihren Anforderungen ab. Wenn Sie verschiedene Abhängigkeiten, die auf der Grundlage der Umgebung (dh. jdbc-Treiber, etc..), werden Sie wollen, um die Verwendung von maven zu lösen.
Wenn es nur eine Frage der Konfiguration Ihrer Bereitstellung, sind Sie wahrscheinlich besser dran mit spring.