2012-08-08 23 views
26

wiele aplikacji java jest zbudowanych z maven. maven ma koncepcję Profiles, jest naprawdę przydatny do budowania pakietu wydań dla różnych środowisk. na przykład dev/test/prod używając różnych path/jndiname/security rule/properties files ... Myślę, że nie muszę tutaj wymieniać kodów, żeby to wyjaśnić.profile lub profile wiosenne?

Wiosna jest bardzo ładnym i popularnym środowiskiem dla rozwoju java, od wiosny3 również wspiera koncepcję profili.

Teraz pojawia się pytanie, do uwolnienia do różnych celów ENV, który z nich jest lepszy? teraz wolę profil maven. ponieważ wiosna musi skopiować każdą definicję fasoli do każdego profilu. i potrzebuje inicjalizatora/właściwości, aby dać znać, który profil powinien być aktywny.

ale czuję profil sprężyny jest bardziej elastyczny niż profil maven.

co o tym sądzisz? proszę dać kilka rad. Dziękuję Ci.

Odpowiedz

30

Profile Maven zapewniłyby rozwiązanie czasu pracy, podczas gdy profile SpringFramework zapewnią alternatywne środowisko uruchomieniowe. Myślę, że jest to pierwsze pytanie, które można sobie zadać: jeśli chce mieć pojedynczy pakiet, który może być wdrożony w różnych środowiskach, lub jeśli chce, aby narzędzie do budowania dostarczało różne pakiety zgodnie z docelowym środowiskiem.

Należy pamiętać, że wiele pytań może się pojawić, jeśli różne pakiety są wdrożone na różnych serwerach. Na przykład w moim miejscu pracy, jeśli wdrażam pakiet w celu naprawienia błędu, który wcześniej wystąpił w środowisku produkcyjnym, polityka firmy stwierdza, że ​​jedynym akceptowalnym scenariuszem jest to, że mam ten sam pakiet rozwiązań w kontroli jakości i na serwerach produkcyjnych.

5

Jeśli potrzebujesz różnych artefaktów, idź z mavenem. Jeśli jest to po prostu prawdziwa konfiguracja, którą można skonfigurować PO artefakcie zostanie zbudowana następnie profile sprężyny użytkownika.

0

Myślę, że to zależy od Twoich wymagań. Jeśli masz różne zależności w zależności od środowiska (np. Sterowniki jdbc, itp.), Musisz użyć programu maven, aby to rozwiązać.

Jeśli chodzi tylko o konfigurację wdrożenia, prawdopodobnie lepiej jest użyć sprężyny.

6

Jak wspomniano w innych odpowiedzi: wszystko zależy od sposobu pracy :)

Co wpadliśmy w ostatnich latach za pomocą Maven i teraz sprężynę 3.1 profili to:

  • używamy wtyczki maven-release do wycinania wersji. powoduje to problemy ze środowiskiem, jeśli użyjemy profili maven, ponieważ będziemy musieli odbudować wydanie lub przynajmniej tag z każdym profilem profilu, aby utworzyć plik .war dla wszystkich środowisk i użyć wiosny PropertyPlaceholderConfigurer do skonfigurowania aplikacji (lub niektóre zasoby JNDI w zależności od klienta). Pozwala to na uruchamianie tylko jednego uruchomienia przez maven.
  • Profile sprężynowe pojawiają się, gdy środowiska również się różnią. na przykład usługa uwierzytelniania, która nie jest dostępna we wszystkich środowiskach. Tutaj zamykamy tę usługę i umieszczamy ją w profilu wiosennym. Aktywujemy profile sprężynowe we właściwościach odczytanych przez PropertyPlaceholderConfigurer, których używamy w każdym razie.

jest kilka samouczków wokół tego, jak to zrobić:

zazwyczaj używamy tylko profile Maven podzielić budować na różne części dla programistów i kompilacja ciągłej integracji. W rzeczywistości nie używamy ich do środowisk docelowych dla plików .war. Nadal używamy profili maven do zautomatyzowanych wdrożeń baz danych, które różnią się bardziej w porównaniu do aplikacji internetowych (ilość danych, dane testowe, ...), ale nie są one dostarczane w postaci zipa.

Są na pewno inne sposoby. Nie sądzę, że to koniec historii :)

Ale może pomóc.

2

Zdarzyło mi się używać właściwości-maven-plugin do ustawienia właściwości systemu w zależności od tego, który profil został aktywowany. Potem na wiosnę aktywowałem programowo profil (y), który chciałem, w zależności od właściwości systemu:

String activeProfile = System.getProperty ("myapp.profile");

appContext.getEnvironment(). SetActiveProfiles (....)

Co więcej, kiedy chciałem połączyć bezpośrednio dwa rodzaje profilu (Maven/wiosna), byłem ustawiając właściwość spring.profiles.active przez wtyczkę maven.

Praktyki Thoses są prawdopodobnie błędne w projekcie, ale rozwiązały moje problemy.

+1

Dokładnie to, czego szukałem, thanx! – Vinicius

Powiązane problemy