Re: redeploy Tomcat aplikace za běhu po přechodu na Maven

Ondra Medek xmedeko na gmail.com
Čtvrtek Březen 4 15:04:16 CET 2010


No ja pouzivam Eclipse JEE. To ma "Servers" a "Web projects". Do
serveru si pridam projekt, nastavim sync delay na 1sec. a tridy i vse
ostatni se mi hned po zmene kopiruje z workspace do deploy adresare
serveru na to spravne misto. Maven nepouzivam. Mam buildy pres ant
nezavisle na Eclipse.

2010/3/4 Tomáš Záluský <zalusky na centrum.cz>:
>
> Zdravím konferenci,
>
> začali jsme nový projekt na Mavenu a narazil jsem na následující komplikaci v porovnání s dosavadním řízením pomocí Antu. Používáme Maven 2, Eclipse a Tomcat s pluginy Sysdeo a m2eclipse.
>
> U antovských projektů jsme měli v kořenovém adresáři projektu adresář /web/WEB-INF/classes, který byl nastaven jako Default output folder na Java Build Path v Eclipse. Protože obsah adresáře /web měl strukturu waru (jako by šlo o rozbalený war), byl na něj pro vývoj namířen i atribut docBase v context.xml Tomcatu, takže při změnách tříd za běhu se redeploynula aplikace (myslím pouze změny v implementaci, ne strukturální).
>
> Po přechodu na Maven + m2eclipse plugin zjišťuji, že Default output folder je nyní /target/classes, předpokládám, že tento adresář je určen nastavením build/outputDirectory v pomu. Při buildování waru (spuštění fáze package na projektu s packagingem war) se nejprve vytvoří struktura waru v adresáři /target/nazevprojektu a tento adresář se pak zabalí do souboru /target/nazevprojektu.war. Classy jsou do waru zkopírovány z /target/classes. Nemohu už tedy /target/classes využít pro docBase, protože již nejsou součástí WEB-INF. A pokud namířím docBase na /target/nazevprojektu, pak zas není editace tříd za běhu tak pohodlná jako dřív - změny se sice pronesou do běžící aplikace, ale už ne z target/classes do target/nazevprojektu/WEB-INF/classes, takže mezi restarty Tomcatu se musí myslet na spuštění fáze package.
>
> Protože momentálně považuji za příčinu problému zdvojení adresáře s třídami, opravil jsem v pomu build/outputDirectory a v Eclipse projektu Default output folder na /target/nazevprojektu/WEB-INF/classes. Tím pádem Eclipse kompiluje vše zas do stejného adresáře, do jakého je nasměrován Tomcat a Maven při tvorbě waru má o jedno kopírování míň. Funguje to, přesto bych poprosil o názor někoho zkušenějšího v Mavenu, případně zda je zvykem to řešit jinak a jak.
>
> Děkuji za každou odpověď.
>
> Tomáš Záluský
>
>
>
> ================================================
> ...with Ultimate flying is so easy...
> http://www.frisbee.cz    http://www.peaceegg.net
> ================================================
>



-- 
Ondra Medek



Další informace o konferenci Konference