<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Privates Blog von Karsten Gresch &#187; maven</title>
	<atom:link href="http://blog.gresch.de/tag/maven/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.gresch.de</link>
	<description>Varia, Miscellania</description>
	<lastBuildDate>Wed, 06 Jul 2011 18:23:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Eclipse + Maven: Debuggen im Sourcecode benachbarter Projekte</title>
		<link>http://blog.gresch.de/2009/01/10/eclipse-maven-debuggen-im-sourcecode-benachbarter-projekte/</link>
		<comments>http://blog.gresch.de/2009/01/10/eclipse-maven-debuggen-im-sourcecode-benachbarter-projekte/#comments</comments>
		<pubDate>Sat, 10 Jan 2009 21:46:00 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[sourcecode]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=285</guid>
		<description><![CDATA[Problem Bei der Arbeit mit Maven und Eclipse an einer modular aufgebauten Anwendung (mehrere Eclipse-Projekte, Maven mit dem m2Eclipse-Plugin, &#34;Mama-POM&#34; und Modulprojekte) vermeide ich abh&#228;ngige Projekte, da es einen Unterschied macht, ob man mit dem physikalischen Ergebnis, also dem Maven-Artefakt, oder mit einem verkn&#252;pften Eclipse-Projekt arbeitet. Vielen Probleme damit f&#252;hrten dazu, standardm&#228;&#223;ig Disable Workspace Resolution [...]]]></description>
			<content:encoded><![CDATA[<p><b><br />
Problem</b><br />
Bei der Arbeit mit Maven und Eclipse an einer modular aufgebauten Anwendung (mehrere <a href="http://www.eclipse.org">Eclipse</a>-Projekte, <a href="http://maven.apache.org">Maven</a> mit dem <a href="http://m2eclipse.codehaus.org/">m2Eclipse</a>-Plugin, &quot;Mama-POM&quot; und <a href="http://maven.apache.org/guides/mini/guide-ide-eclipse.html#Multiple_Module_Project">Modulprojekte</a>) vermeide ich <a href="http://books.sonatype.com/maven-book/reference/eclipse-sect-resolving-dependencies.html">abh&auml;ngige Projekte</a>, da es einen Unterschied macht, ob man mit dem physikalischen Ergebnis, also dem Maven-Artefakt, oder mit einem verkn&uuml;pften Eclipse-Projekt arbeitet.</p>
<p>
Vielen Probleme damit f&uuml;hrten dazu, standardm&auml;&szlig;ig <i>Disable Workspace Resolution</i> und <i>Disable Nested Modules</i> zu w&auml;hlen.</p>
<p>
Das macht aber das Debuggen schwierig: Beim Debuggen m&ouml;chte man beim Debuggen direkt in den Quellcode der mit der Startanwendung verbundenen Modulprojekte springen.</p>
<p>
Defaultm&auml;&szlig;ig ist das nicht m&ouml;glich, vielmehr wird die <i>.class</i>-Datei im Editor angezeigt. Hier hilft auch nicht, den Ort des Source-Codes in den Maven-Abh&auml;ngigkeiten manuell mitzuteilen.</p>
<p>
Verlinkte Quellordner (siehe <a href="http://help.eclipse.org/stable/index.jsp?topic=/org.eclipse.platform.doc.user/concepts/concepts-13.htm">linked resources</a>) helfen hier nicht.</p>
<p><b></b><br />
<b>L&ouml;sung</b><br />
In den Debug-Einstellungen als Quellordner die Modulprojekte angeben &uuml;ber <i>Debug</i>-&gt;<i>Open Debug Dialog</i>-&gt;<i>Source.</i></p>
<p><b></b></p>
<p><b><br />
Tip</b> <br />
Wenns beim Debuggen von <a href="http://www.eclipse.org/webtools/">WTP</a>-Projekten dennoch nicht funktioniert, daran denken, den Server im Debug-Modus zu starten <img src='http://blog.gresch.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2009/01/10/eclipse-maven-debuggen-im-sourcecode-benachbarter-projekte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VerÃ¤ndertes Dependency-Management: Maven &gt; 2.05</title>
		<link>http://blog.gresch.de/2007/12/01/veraendertes-dependency-management-maven-2-05/</link>
		<comments>http://blog.gresch.de/2007/12/01/veraendertes-dependency-management-maven-2-05/#comments</comments>
		<pubDate>Sat, 01 Dec 2007 15:19:32 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[andromda]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[mda]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=225</guid>
		<description><![CDATA[Beim Arbeiten mit AndroMDA auf ein Problem gesto&#223;en, als sich ein Projekt nicht mehr erzeugen lie&#223;; im Forum schlie&#223;lich diesen Hinweis gefunden. Der Grund: Abh&#228;ngige Module ben&#246;tigen ab Maven 2.06 immer in ihrer eigenen pom.xml ebenfalls die Angabe der Versionsnummer. Zur Umstellung siehe die gesonderte Seite hier. Gl&#252;cklicherweise arbeite ich mit einer Struktur, in der [...]]]></description>
			<content:encoded><![CDATA[<p>Beim Arbeiten mit AndroMDA auf ein Problem gesto&szlig;en, als sich ein Projekt nicht mehr erzeugen lie&szlig;; im Forum schlie&szlig;lich <a href="http://galaxy.andromda.org/forum/viewtopic.php?t=4935&amp;highlight=cannot+empty">diesen Hinweis</a> gefunden.</p>
<p>Der Grund: Abh&auml;ngige Module ben&ouml;tigen ab Maven 2.06 immer in ihrer eigenen pom.xml ebenfalls die Angabe der Versionsnummer. Zur Umstellung siehe die gesonderte Seite <a href="http://maven.apache.org/plugins/maven-dependency-plugin/examples/preparing-dependencies.html">hier</a>. </p>
<p>Gl&uuml;cklicherweise arbeite ich mit einer Struktur, in der ich Build-Tools in ein Defaultverzeichnis &quot;current&quot; packe, so dass schnell auf eine andere Version gewechselt werden kann. </p>
<p>Nichtsdestotrotz finde ich es wenig verst&auml;ndlich, wenn in einem Minor-Release eine derart elementare strukturelle Ver&auml;nderung vorgenommen wird. Als Maven-Anwender h&auml;tte ich mir allenfalls eine Warnung gew&uuml;nscht mit R&uuml;ckfall auf die &auml;ltere Funktionalit&auml;t.</p>
<p>Wozu gibt man denn in Maven die Versionsnummer im &lt;modelVersion&gt;-Element der <i>pom.xml</i> &uuml;berhaupt an, wenn nicht auch f&uuml;r eine Abw&auml;rtskompatibilit&auml;t? Sehr merkw&uuml;rdig. </p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2007/12/01/veraendertes-dependency-management-maven-2-05/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JAX 2007: Grails &#8211; Rapid Web Application Development (Sven Haiges, Actionality)</title>
		<link>http://blog.gresch.de/2007/04/26/jax-2007-grails-rapid-web-application-development-sven-haiges-actionality/</link>
		<comments>http://blog.gresch.de/2007/04/26/jax-2007-grails-rapid-web-application-development-sven-haiges-actionality/#comments</comments>
		<pubDate>Thu, 26 Apr 2007 10:05:31 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Konferenzen]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[JAX]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=180</guid>
		<description><![CDATA[Intro Ãœber S.H.: von Struts Ã¼ber JSF, Spring MVC zu Grails. Erstellt Grails Podcast. Motivation Framework wie Rails &#8211; Convention over Configuration, DRY Spring MVC im Hintergrund Grails vs. Rails Benchmark &#8211; Skaliert weitaus besser als Rails. 1.0 Release im Sommer, 0.5 im Mai. grails clean grails update zum Update, soll schmerzlos sein. Benutzte Frameworks [...]]]></description>
			<content:encoded><![CDATA[<p><b>Intro</b></p>
<p>Ãœber S.H.: von Struts Ã¼ber JSF, Spring MVC zu Grails. Erstellt Grails Podcast.</p>
<p><b>Motivation</b></p>
<p>Framework wie Rails &#8211; Convention over Configuration, DRY</p>
<p>Spring MVC im Hintergrund</p>
<p>Grails vs. Rails Benchmark &#8211; Skaliert weitaus besser als Rails. 1.0 Release im Sommer, 0.5 im Mai.</p>
<p><i>grails clean</i></p>
<p><i>grails update</i> </p>
<p>zum Update, soll schmerzlos sein. </p>
<p><b>Benutzte Frameworks</b></p>
<p>Spring: Spring DI + Spring MVC</p>
<p>Hibernate</p>
<p>SiteMesh &#8211; Layouting</p>
<p><b>Java EE &#8211; Integration</b></p>
<p>Standalone oder Hib-Mappings f Legacy-Schemata; EJB3-Integration; vorhandene Spring-Beans kÃ¶nnen verwendet werden.</p>
<p>Quickstart siehe am besten <a href="http://grails.org/Quick+Start">hier</a>.</p>
<p><i>ApplicationBootStrap</i> zum Persistieren.</p>
<p>TL-Erzeugung. Zur Laufzeit deploybar, ebenso mit Controller + Service. </p>
<p>Server-Start <i>runApp.groovy</i>. snipplr.com</p>
<p><b>MVC in Grails</b></p>
<p>Model: Domain-Klassen etc. </p>
<p>class Podcast {</p>
<p>String title</p>
<p>String feedUrl</p>
<p>}</p>
<p>View: Groovy SP oder JSP; dynamic TagLibs</p>
<p>Controller: Grails Controller + Grails Service</p>
<p>Object-Relational Mapping GORM. Equals()/hashCode() werden automatisch + dynamisch erstellt. </p>
<p> grails create-domain-class</p>
<p><b>Mapping 1:1</b></p>
<p>class Podcast {<br /><i>Author author</i><br />String title<br />}</p>
<p><b>Mapping 1:n</b></p>
<p>class Podcast {<br /><i>def hasMany = [ episodes : Episode ]</i><br />String title<br />}</p>
<p />
<p><b>Mapping m:n</b></p>
<p>class Podcast {<br /><i>def hasMany = [ episodes : Episode ]</i><br />String title<br />}</p>
<p>class Author<br />{<br /><i>def hasMany = [ podcasts : Podcasts ]</i><br />}</p>
<p>GORM: Dynamic Finders</p>
<p>Podcast.findByTitle(), QBE + HQL unterstÃ¼tzt.</p>
<p>Constraints</p>
</p>
<p>class Podcast {<br />String title<br />String feedUrl<br />static constraints = {<br />title(size:1..50)<br />feedUrl(unique:true)<br />}<br />}</p>
<p><b>GORM DB Konfiguration</b></p>
<p>development/production/test</p>
<p>Classe Development[...]DataSource Ã¤ndern. Standard: Development.</p>
<p><b>View-Technologien</b></p>
<p>Die meisten verwenden GSP wg. der Dynamic Tag Libs. </p>
<p />
<p><b>Grails Controller</b></p>
<p>Generierbar (mit CRUD), wird dynamisch geladen.  Immer alle CRUD-Operationen werden erstellt, DELETE kann z.B. nicht ausgeschlossen werden. Controller und Views mÃ¼ssen entsprechend manuell angepasst werden.</p>
<p>Parameter, Session, Flash-Objekte.</p>
<p>render()-Methode sehr mÃ¤chtig &#8211; AJAX</p>
<p>HTTP-MEthod-Restrictions.</p>
<p>Dynamisches Scaffolding</p>
<p>im Bsp.: <b>def scaffold= Podcast</b></p>
<p><b>Services</b></p>
<p>Kapselung von Business-Logik.</p>
<p>Buchempfehlung <i>Getting Started with Grails</i> (InnoQ)</p>
<p />
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2007/04/26/jax-2007-grails-rapid-web-application-development-sven-haiges-actionality/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JAX 2007: Maven 2 &#8211; Umstellung eines Projekts von Ant zu Maven 2 (Oliver Stauss, eXXcellent solutions)</title>
		<link>http://blog.gresch.de/2007/04/26/jax-2007-maven-2-ae-umstellung-eines-projekts-von-ant-zu-maven-2-oliver-stauss-exxcellent-solutions/</link>
		<comments>http://blog.gresch.de/2007/04/26/jax-2007-maven-2-ae-umstellung-eines-projekts-von-ant-zu-maven-2-oliver-stauss-exxcellent-solutions/#comments</comments>
		<pubDate>Thu, 26 Apr 2007 08:46:36 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Konferenzen]]></category>
		<category><![CDATA[ant]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[JAX]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=179</guid>
		<description><![CDATA[Historie &#8211; von make Ã¼ber Ant, Maven 1 zu Maven 2. Einfluss der Rails-Community. Komplett neue Implementierung von 1. Paradigmenwechsel: Nicht Build-Skripte erstellen, sondern Projekte konfigurieren. Nicht das wie des zu erzeugenden, sondern das was. Mehr managen als erzeugen. OO-Mechanismen zur Konfiguration (also Projekt). mvn2 hilft bei einem GroÃŸteil des Entwicklungsprozesses. UnterstÃ¼tzung fÃ¼r Kompilation Releaserstellung [...]]]></description>
			<content:encoded><![CDATA[<p>Historie &#8211; von make Ã¼ber Ant, Maven 1 zu Maven 2. Einfluss der Rails-Community. Komplett neue Implementierung von 1.</p>
<p />
<p>Paradigmenwechsel: Nicht Build-Skripte erstellen, sondern Projekte konfigurieren.</p>
<p>Nicht das <i>wie</i> des zu erzeugenden, sondern das <i>was</i>. Mehr managen als erzeugen. OO-Mechanismen zur Konfiguration (also Projekt).</p>
<p>mvn2 hilft bei einem GroÃŸteil des Entwicklungsprozesses. UnterstÃ¼tzung fÃ¼r</p>
<ul>
<li>Kompilation</li>
<li>Releaserstellung</li>
<li>BibliotheksabhÃ¤ngigkeiten</li>
<li>Dokumentation</li>
<li>Unit- und Integrationstests</li>
<li>nn</li>
<li>nn</li>
</ul>
<p>Weniger ein Tool wie Ant &#8211; vielmehr eine standardisierte Best-Practices-Enforcment-Box. </p>
<p><b></b></p>
<p />
<p><b></b></p>
<p />
<p><b>Konzepte </b></p>
<p><b>P</b>roject <b>O</b>bject <b>M</b>odel, beschrieben in <i>pom.xml</i>. Name + Version + Typ, Vererbung, Unterprojekte (Module), AbhÃ¤ngigkeiten und Repos, Lifecycle- Plugin Konfigurationen, Profile, Properties, sonstiges (Issue Tracker, Version Control etc). </p>
<p><b></b></p>
<p />
<p />
<p><b>Artifact</b>: </p>
<p>Ergebnis (Produkt) eines mvn2-Projekts. Typen: jar, war, ear, sar; plugin, archetype, pom.</p>
<p>Werden in Rep abgelegt. Jedes mvn2-Projekt erzeugt lediglich <b>ein</b> Ergebnis (dadurch Modularisierung erzwungen).</p>
<p />
<p><b></b></p>
<p />
<p><b>Goal</b></p>
<p>Wie Ant-Target.</p>
<p />
<p><b></b></p>
<p />
<p><b></b></p>
<p><b>Plugin</b></p>
<p>Logische Gruppierung von Goals. In Reps verwaltet.</p>
<p>Syntax: <i>plugin:goal</i></p>
<p><i>archetype:create</i> &#8211; Skeleton fÃ¼r weitere Projekte.</p>
<p><i>cargo:start</i> &#8211; FÃ¼r Java EE interessant.</p>
<p><i>compiler:compile</i>: Quellcode kompilieren.</p>
<p />
<p><b></b></p>
<p />
<p />
<p><b>Repositories</b></p>
<p>Zentrale Stelle, in der alle Artifacts abgelegt werden. Zwei Type: Lokal (file://[user-home].m2/repository), Remote (z.B. <a href="http://repo1.maven.org">http://repo1.maven.org</a>)<b></b></p>
<p><b></b></p>
<p />
<p><b></b></p>
<p />
<p />
<p><b>Dependency-Management</b></p>
<p>Alle abhÃ¤ngigen Artefakte Ã¼ber Repositories verwaltet, werden nicht physische in das Projekt kopiert. Kein &quot;Jarmaggedon&quot;.</p>
<p><b>Build-Lifecycle</b></p>
<p>Definiert in Phasen: validate-generate-resource-compile-test_compile-test-package-integration_test-install-deploy. Phasen mit plugin-goals verbunden.</p>
<p><b>Reports</b></p>
<p>QA-Reports, generelle Projektinformationen. <b></b></p>
<p><b>Frage: Wie funktioniert das innerhalb Eclipse?</b></p>
<p>Antwort: Plugins, libraries in rep</p>
<p><b>Ãœbergang von Ant zu Maven 2</b></p>
<p>Refactoring des Ant-Projekts. Projektstrukturen vereinfachen! Bei mehreren Artifacts in Unterprojekte aufteilen.</p>
<p>AuflÃ¶sen der AbhÃ¤ngigkeiten. Verwendete Bibliotheken identifzieren (mit Version!) &#8211; das ist normalerweise der aufwendigste Punkt.</p>
<p> Einspielen von 3rd-Party- und Inhouse-Bibliotheken in internes Repository.</p>
<p>POM definieren. Spezielle Ant-Targets in mvn2 umsetzen. Weitere features nutzen, um QualitÃ¤t zu steigern. </p>
<p> <b>Beispiel: antAuthProject</b></p>
<p />
<p />
<p>/src und /test/src-Folders. /lib, /etc; client, common und server-Packages. </p>
<p>=&gt; mvn: drei Verzeichnisse /server, /common, /client und eine <i>pom.xml</i> auf root-Ebene und jeweils in den drei Verzeichnissen. Sourcen darunter in /src/main (Mvn2-Konzept) und /src/test. Alles andere in /resources.</p>
<p>AuflÃ¶sen der AbhÃ¤ngigkeiten: Gut, wenn Versionsnummer in jar-Namen enthalten sind.</p>
<p>mvn install:install-file, um Libs in Rep zu bekommen (fÃ¼r internes Rep).</p>
<p>Mvn-plugin fÃ¼r spezielle Ant-targets. &lt;parent&gt;-Tag fÃ¼r Submodule. Submodule erben Konfig des Hauptprojekts (z.B. Unit-Tests, CodeCoverage).</p></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2007/04/26/jax-2007-maven-2-ae-umstellung-eines-projekts-von-ant-zu-maven-2-oliver-stauss-exxcellent-solutions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

