21 czerwca 2008

Kolejne dni z JBoss Seam - trochę o geronimo-maven-plugin i @Name

Znudziło mnie to ciągłe
 c\:/geronimo/bin/deploy.sh -u system -p manager deploy \
target/seam-richfaces-tree.war src/main/resources/geronimo-web.xml
Czyż nie prościej byłoby uruchomić przykład na wcześniej uruchomionym Geronimo (na osobnej konsoli) podczas wykonania integration-test? Pewnie, że prościej!

Zmieniam konfigurację wtyczki geronimo-maven-plugin w pom.xml na następującą:
 <executions>
<execution>
<id>undeploy-ear-as-module</id>
<phase>pre-integration-test</phase>
<goals>
<goal>undeploy-module</goal>
</goals>
<configuration>
<modules>
<module>
<groupId>${groupId}</groupId>
<artifactId>${artifactId}</artifactId>
<version>${version}</version>
<type>war</type>
</module>
</modules>
</configuration>
</execution>
<execution>
<id>deploy-module</id>
<phase>pre-integration-test</phase>
<goals>
<goal>deploy-module</goal>
</goals>
<configuration>
<moduleArchive>target/seam-richfaces-tree.war</moduleArchive>
<modulePlan>src/main/resources/geronimo-web.xml</modulePlan>
</configuration>
</execution>
</executions>
Z nią wystarczy wykonać integration-test, aby rozmieścić aplikację na Geronimo.
 jlaskowski@work /cygdrive/c/projs/sandbox/seam-richfaces-tree
$ mvn clean package integration-test
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building seam-richfaces-tree Maven Webapp
[INFO] task-segment: [clean, package, integration-test]
[INFO] ------------------------------------------------------------------------
...
[INFO] [geronimo:undeploy-module {execution: undeploy-ear-as-module}]
log4j:WARN No appenders could be found for logger (org.apache.geronimo.deployment.plugin.factories.BaseDeploymentFactory).
log4j:WARN Please initialize the log4j system properly.
[INFO] Module is already stopped: pl.jaceklaskowski.seam/seam-richfaces-tree/1.0/war
[INFO] Module is not deployed: pl.jaceklaskowski.seam/seam-richfaces-tree/1.0/war
[INFO] [geronimo:deploy-module {execution: deploy-module}]
[INFO] Using non-artifact based module archive: c:\projs\sandbox\seam-richfaces-tree\target\seam-richfaces-tree.war
[INFO] Using non-artifact based plan: c:\projs\sandbox\seam-richfaces-tree\src\main\resources\geronimo-web.xml
[INFO] Distributing module artifact: c:\projs\sandbox\seam-richfaces-tree\target\seam-richfaces-tree.war
with plan c:\projs\sandbox\seam-richfaces-tree\src\main\resources\geronimo-web.xml
[INFO] Starting modules...
[INFO] Starting module: pl.jaceklaskowski.seam/seam-richfaces-tree/1.0/war
[INFO] Started module(s):
[INFO] [0] pl.jaceklaskowski.seam/seam-richfaces-tree/1.0/war
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 50 seconds
Wykonanie mvn clean package integration-test nie należy do najkrótszych poleceń, ale nie wykracza poza wiedzę mavenową, więc pod tym względem będzie bardziej zrozumiałe dla osób niezaznajomionych z Geronimo.

Można również tak:
 mvn geronimo:undeploy-module -DmoduleId=pl.jaceklaskowski.seam/seam-richfaces-tree/1.0/war \
geronimo:deploy-module -DmoduleArchive=target/seam-richfaces-tree.war \
-DmodulePlan=src/main/resources/geronimo-web.xml
Można i tak:
 mvn geronimo:undeploy-module geronimo:deploy-module
jednakże takie skrócenie wymaga podania parametrów środowiskowych w pom.xml w sekcji properties. A można jeszcze krócej?! Ciekawym podpowiedzi, jak możnaby to dalej skrócić (możnaby pokombinować z profilami w m2).

A wracając do Seama. Zabrałem się poważniej za lekturę książki Beginning JBoss® Seam: From Novice to Professional wydawnictwa Apress, którą mamy w Bibliotece Warszawskiego JUGa. Przez "poważniej" rozumiem silną wolę przeczytania książki i opublikowania recenzji. Pamiętam, że Brzezi (tak, to ten od "Skorzystaj z Google" z pl.comp.lang.java ;-)) przeczytał książkę, ale nie udało mi się go nakłonić do opublikowania swojej recenzji. W/g niego książka jest dla kompletnych nowicjuszy z JBoss Seam, więc idealna dla mnie. Jakkolwiek dotyczy wersji 1.1.0.GA, a pracuję z 2.0.3.CR1, to mimo wszystko spodziewam się zdobyć trochę wiedzy seamowej.

Dzisiaj zacząłem od utworzenia klasy z adnotacją @Name, ale nie miałem wiele szczęścia z jej uruchomieniem. Wrócę do tematu jutro.

Pytanie konkursowe: Dlaczego uważasz, że warto poznać JBoss Seam? ;-)