2.1. Fejlesztőkörnyezet
Egy kényelmes fejlesztőkörnyezet kialakítása lényeges pontja egy fejlesztésnek, a JavaForum2.0 projekt az alábbi eszközökkel fejleszthető kényelmesen.
2.1.1. A projekt szerkezete
A portál kódja Maven konvenciók mentén van szervezve, így az alábbi projekt struktúrát látni az SVN repóban:
- FCKEditor: FCKEditor szülő projekt
- FCKEditor-java: FCKEditor Java kapcsolatai (TLD, Servlet, stb.)
- FCKEditor-war: FCKEditor Web tartalom (JS, HTML, stb.)
- JavaForum2.0: JavaForum2.0 szülő projekt
- JavaForum2.0-commons: Hasznos osztályok és metódusok
- JavaForum2.0-deploy: A portlet kezeléshez szükséges osztályok, amelyek belekerülnek a telepített portlet csomagokba a portlet telepítés során
- JavaForum2.0-deploy-tld: A portletek által igényelt TLD névtér és a hozzá tartozó osztályok
- JavaForum2.0-ear: EAR csomag készítése
- JavaForum2.0-ejb-bf: Business Function EJB implementációk
- JavaForum2.0-ejb-commons: Közös EJB osztályok
- JavaForum2.0-ejb-dao: DAO EJB implementációk
- JavaForum2.0-ejb-pu: Persistence Unit leíró
- JavaForum2.0-ejb-remote: WebService EJB implementációk
- JavaForum2.0-entities: Entitás osztályok
- JavaForum2.0-interfaces-bf: BF interfészek
- JavaForum2.0-interfaces-dao: DAO interfészek
- JavaForum2.0-interfaces-remote: WebService interfészek
- JavaForum2.0-jmx: JMX osztályok
- JavaForum2.0-pages: JavaForumPages osztályok
- JavaForum2.0-portal-tld: A portál TLD névtere és osztályai
- JavaForum2.0-portlets-cms: A CMS portletek
- JavaForum2.0-war: Web réteg osztályai, admin design, admin portletek
- JavaForum2.0-design-1000birka: Az 1000birka.hu design csomagja
- JavaForum2.0-design-cash: A "cash" nevű design csomag
- JavaForum2.0-design-javaforum: A javaforum.hu design csomagja
2.1.2. A build folyamata
A fejlesztéshez minimálisan szükséges egy Maven2, egy Subversion kliens és egy OpenJDK 6 (ez utóbbi helyett bármilyen OpenJDK6 kompatibilis JDK megfelel). A JavaForum2.0 tartalmát le kell töltenünk egy kiválasztott könyvtárba:
authgabor@laptop:~> svn co https://svn.javaforum.hu/svn/javaforum20/trunk/ A trunk/JavaForum2.0-design-1000birka A trunk/JavaForum2.0-design-1000birka/src A trunk/JavaForum2.0-design-1000birka/src/test A trunk/JavaForum2.0-design-1000birka/src/test/java A trunk/JavaForum2.0-design-1000birka/src/test/resources [...] A trunk/JavaForum2.0-design-cash/src/main/webapp/layout/footer/menu/help.jsp A trunk/JavaForum2.0-design-cash/src/main/webapp/layout/footer/menu/view.jsp A trunk/JavaForum2.0-design-cash/src/main/webapp/layout/footer/portlet.jsp A trunk/JavaForum2.0-design-cash/pom.xml U trunk
A sikeres lefutás után a home könyvtárunkban a trunk alkönyvtárban létrejön az előző fejezetben részletezett struktúra. Ennek a fordításához szükséges a Maven2 és az OpenJDK6. Első lépésként fel kell vennünk az OpenJDK telepítés helyét a környezeti változók közé, mivel a Maven2 ezt keresni fogja (Windows rendszeren ezt a "Rendszer" ablakban tudjuk megtenni):
authgabor@laptop:~> export JAVA_HOME=/opt/openjdk6/
Ezek után futtatni kell a Maven2 programot, amelynek kettő paramétert kell átadnunk:
authgabor@laptop:~> cd trunk/JavaForum2.0 authgabor@laptop:~/trunk/JavaForum2.0> /opt/maven2.1.0/bin/mvn clean install [INFO] Scanning for projects... [INFO] Reactor build order: [INFO] JavaForum2.0 [INFO] JavaForum2.0-commons [INFO] JavaForum2.0-interfaces-remote [INFO] JavaForum2.0-deploy [INFO] JavaForum2.0-deploy-tld [INFO] JavaForum2.0-ejb-commons [INFO] JavaForum2.0-entities [INFO] JavaForum2.0-ejb-pu [INFO] JavaForum2.0-interfaces-dao [INFO] JavaForum2.0-ejb-dao [INFO] JavaForum2.0-interfaces-bf [INFO] JavaForum2.0-ejb-bf [INFO] JavaForum2.0-ejb-remote [INFO] JavaForum2.0-jmx [INFO] JavaForum2.0-pages [INFO] JavaForum2.0-portlets-cms [INFO] JavaForum2.0-portal-tld [INFO] JavaForum2.0-war [INFO] JavaForum2.0-ear [INFO] ------------------------------------------------------------------------ [INFO] Building JavaForum2.0 [INFO] task-segment: [clean, install] [INFO] ------------------------------------------------------------------------ [INFO] [clean:clean] [INFO] [site:attach-descriptor] [INFO] Preparing source:jar [...] [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary: [INFO] ------------------------------------------------------------------------ [INFO] JavaForum2.0 .......................................... SUCCESS [4.940s] [INFO] JavaForum2.0-commons .................................. SUCCESS [8.237s] [INFO] JavaForum2.0-interfaces-remote ........................ SUCCESS [1.672s] [INFO] JavaForum2.0-deploy ................................... SUCCESS [7.730s] [INFO] JavaForum2.0-deploy-tld ............................... SUCCESS [2.061s] [INFO] JavaForum2.0-ejb-commons .............................. SUCCESS [2.495s] [INFO] JavaForum2.0-entities ................................. SUCCESS [10.081s] [INFO] JavaForum2.0-ejb-pu ................................... SUCCESS [1.021s] [INFO] JavaForum2.0-interfaces-dao ........................... SUCCESS [3.923s] [INFO] JavaForum2.0-ejb-dao .................................. SUCCESS [11.216s] [INFO] JavaForum2.0-interfaces-bf ............................ SUCCESS [3.682s] [INFO] JavaForum2.0-ejb-bf ................................... SUCCESS [18.460s] [INFO] JavaForum2.0-ejb-remote ............................... SUCCESS [3.098s] [INFO] JavaForum2.0-jmx ...................................... SUCCESS [0.511s] [INFO] JavaForum2.0-pages .................................... SUCCESS [3.502s] [INFO] JavaForum2.0-portlets-cms ............................. SUCCESS [8.056s] [INFO] JavaForum2.0-portal-tld ............................... SUCCESS [2.505s] [INFO] JavaForum2.0-war ...................................... SUCCESS [25.809s] [INFO] JavaForum2.0-ear ...................................... SUCCESS [4.511s] [INFO] ------------------------------------------------------------------------ [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2 minutes 4 seconds [INFO] Finished at: Sat Oct 17 13:05:49 CEST 2009 [INFO] Final Memory: 81M/140M [INFO] ------------------------------------------------------------------------
A fordítás eredményeképp létre kell jönnie a megfelelő helyen a telepíthető EAR fájlnak:
authgabor@laptop:~/trunk/JavaForum2.0> ls -l JavaForum2.0-ear/target/*.ear -rw-r--r-- 1 authgabor users 8336325 okt 17 13.05 JavaForum2.0-ear/target/JavaForum2.0-ear-b2.2.0-SNAPSHOT.ear
Az EAR fájl verziószáma változhat, mindig tükrözi a fejlesztés aktuális állapotát, hiszen a /trunk mindig a kiadás előtti állapotot tükrözi, amelynek önállóan működnie kell. Ez az EAR maga a portál, elsőként ezt kell telepítenünk az alkalmazás szerverbe. A portál csak az adminisztrációs felület design elemeit tartalmazza, az egyéb - lazábban csatolt - design csomagok a trunk/JavaForum2.0-design-* könyvtárakban találhatók meg, és szintén Maven2 segítségével fordíthatóak le:
authgabor@laptop:~/trunk/JavaForum2.0> cd ../JavaForum2.0-design-cash/ authgabor@laptop:~/trunk/JavaForum2.0-design-cash> /opt/maven2.1.0/bin/mvn clean install [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] Building JavaForum2.0-design-cash [INFO] task-segment: [clean, install] [INFO] ------------------------------------------------------------------------ [INFO] [clean:clean] [INFO] [resources:resources] [INFO] Using 'UTF-8' encoding to copy filtered resources. [...] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 11 seconds [INFO] Finished at: Sat Oct 17 13:13:27 CEST 2009 [INFO] Final Memory: 23M/79M [INFO] ------------------------------------------------------------------------
Az összes design projekt előáll, mint WAR csomag:
authgabor@laptop:~/trunk/JavaForum2.0> ls -l target/*.war -rw-r--r-- 1 authgabor users 744218 okt 17 13.13 target/JavaForum2.0-design-cash-b2.2.0-SNAPSHOT.war
A projekt verziószáma szintén változhat a fejlesztés üteme szerint.
2.1.3. NetBeans, Eclipse vagy egyéb IDE
A fejlesztést nagyban megkönnyíti egy IDE használata, amely lehet bármilyen IDE, amelyik képes a Maven2 projektek megnyitására (és a Subversion kezelésére). NetBeans esetén a 6.5 óta alapból támogatott a Maven2 projekt és a Subversion, Eclipse esetén mind Maven2, mind a Subversion kezeléséhez szükséges hozzá egy-egy plugin. Egyéb IDE esetén is többnyire rendelkezésre áll a Subversion és a Maven2 támogatás.