<?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>Twenty Square Meter &#187; eclipse</title>
	<atom:link href="http://www.twentysqm.com/tag/eclipse/feed" rel="self" type="application/rss+xml" />
	<link>http://www.twentysqm.com</link>
	<description>Ihr Ansprechpartner für innovative Ideen</description>
	<lastBuildDate>Tue, 04 Oct 2011 18:35:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Tycho Pseudo-Release 0.4.0-DEV-2719</title>
		<link>http://www.twentysqm.com/2009-07-28/tycho-pseudo-release-0-4-0-dev-2719.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=tycho-pseudo-release-0-4-0-dev-2719</link>
		<comments>http://www.twentysqm.com/2009-07-28/tycho-pseudo-release-0-4-0-dev-2719.html#comments</comments>
		<pubDate>Tue, 28 Jul 2009 09:01:41 +0000</pubDate>
		<dc:creator>Frank Gottschlich</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[lifecycle]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[tycho]]></category>

		<guid isPermaLink="false">http://www.twentysqm.com/?p=781</guid>
		<description><![CDATA[Freude! Freude! Freude! Nicht nur das die Pseudo-Releases voran kommen, sondern auch, dass ein lang ersehntes Ticket endlich zum Abschluss gekommen ist. Es handelt sich dabei um die unvorgesehenen Inhalte, in Bundle Jar-Archiven. Unexpected content in bundle JAR files Nun mehr können dadurch produktive Jar-Archive erstellt werden. Dafür ein riesen Dankeschön an Igor Fedorenko!]]></description>
			<content:encoded><![CDATA[<p>Freude! Freude! Freude! Nicht nur das die Pseudo-Releases voran kommen, sondern auch, dass ein lang ersehntes Ticket endlich zum Abschluss gekommen ist. Es handelt sich dabei um die unvorgesehenen Inhalte, in Bundle Jar-Archiven.</p>
<p><a href="https://issues.sonatype.org/browse/TYCHO-238" target="_blank">Unexpected content in bundle JAR files</a></p>
<p>Nun mehr können dadurch produktive Jar-Archive erstellt werden. Dafür ein riesen Dankeschön an <a href="https://issues.sonatype.org/secure/ViewProfile.jspa?name=ifedorenko">Igor Fedorenko</a>! </p>
]]></content:encoded>
			<wfw:commentRss>http://www.twentysqm.com/2009-07-28/tycho-pseudo-release-0-4-0-dev-2719.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tycho Pseudo-Release 0.4.0-DEV-2668</title>
		<link>http://www.twentysqm.com/2009-07-20/tycho-pseudo-release-0-4-0-dev-2668.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=tycho-pseudo-release-0-4-0-dev-2668</link>
		<comments>http://www.twentysqm.com/2009-07-20/tycho-pseudo-release-0-4-0-dev-2668.html#comments</comments>
		<pubDate>Mon, 20 Jul 2009 02:28:18 +0000</pubDate>
		<dc:creator>Frank Gottschlich</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[lifecycle]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[tycho]]></category>

		<guid isPermaLink="false">http://www.twentysqm.com/?p=771</guid>
		<description><![CDATA[Es ist wirklich schade das Tycho gegen den Release von Maven 3 arbeitet. Bereits in der 0.3.0-DEV konnte Tycho gute Ansätze im Build von RCP Applikationen bringen. Seit dem neuesten Pseudo-Release ist dieser aber wieder einmal erwähnenswert. Das automatisierte generieren von POMs lässt sich nun wieder realisieren. Die neuste Eigenschaft ist, das die groupId nicht [...]]]></description>
			<content:encoded><![CDATA[<p>Es ist wirklich schade das <a href="http://docs.codehaus.org/display/M2ECLIPSE/Tycho+project+overview" target="_blank">Tycho</a> gegen den Release von Maven 3 arbeitet. Bereits in der 0.3.0-DEV konnte Tycho gute Ansätze im Build von RCP Applikationen bringen. Seit dem neuesten Pseudo-Release ist dieser aber wieder einmal erwähnenswert.</p>
<p>Das automatisierte generieren von POMs lässt sich nun wieder realisieren. Die neuste Eigenschaft ist, das die <em>groupId</em> nicht mehr automatisch, mit dem übergeordneten Ordner, gesetzt wird, sondern nun explizit mit <em>-DgroupId=…</em> angegeben werden soll. Ich denke dies lässt viel Spielraum für die Strukturierung der Projekte offen. Mir persönlich gefiel ja das automatische setzen besser, aber auch nur weil es gut in mein Konzept gepasst hat.</p>
<p>Eine neue gute Eigenschaft birgt der Inhalt von JAR-Archiven. Hier werden nun durch Maven 3 die unnötigen Daten, wie z.b. die der SVN Dateien, nicht mehr integriert und somit automatisch ausgeklammert. Hierzu gab es in der Vergangenheit das Ticket <a href="http://jira.codehaus.org/browse/MNGECLIPSE-1174" target="_blank">MNGECLIPSE-1174</a> auf Sonatype.</p>
<p>Auch bei den Builds hat sich einiges verändert. Sie lassen sich nun auch mit der 0.4.0-DEV realisieren. So gibt man z.B. nicht mehr das Environment in der Befehlszeile an, sondern direkt in der <a href="http://docs.codehaus.org/display/M2ECLIPSE/Tycho+user+docs#Tychouserdocs-eclipseapplication" target="_blank">eclipse-application</a> POM.</p>
<pre class="brush: xml; title: ; notranslate">&lt;build&gt;
  &lt;plugins&gt;
    &lt;plugin&gt;
      &lt;groupId&gt;org.codehaus.tycho&lt;/groupId&gt;
      &lt;artifactId&gt;maven-osgi-packaging-plugin&lt;/artifactId&gt;
      &lt;configuration&gt;
        &lt;environments&gt;
          &lt;environment&gt;
            &lt;os&gt;linux&lt;/os&gt;
            &lt;ws&gt;gtk&lt;/ws&gt;
            &lt;arch&gt;x86_64&lt;/arch&gt;
          &lt;/environment&gt;
          &lt;environment&gt;
            &lt;os&gt;win32&lt;/os&gt;
            &lt;ws&gt;win32&lt;/ws&gt;
            &lt;arch&gt;x86&lt;/arch&gt;
          &lt;/environment&gt;
        &lt;/environments&gt;
      &lt;/configuration&gt;
    &lt;/plugin&gt;
  &lt;/plugins&gt;
&lt;/build&gt;</pre>
<p>Diese Art und Weise ist natürlich viel einfacher und man muss nun auch nicht mehr für jedes Betriebsystem und Architektur einen separaten Build starten. Nach wie vor sollte man aber darauf achten, dass product - Plugin zu kopieren und die pom.xml wie folgt zu modifizieren:</p>
<pre class="brush: xml; title: ; notranslate">&lt;!-- groupId welche beim Start von Maven angegeben wird --&gt;
&lt;groupId&gt;some-group-id&lt;/groupId&gt;
&lt;!-- Name der product - Datei ohne die extension .product --&gt;
&lt;artifactId&gt;product id&lt;/artifactId&gt;
&lt;!-- Version welche in der product - Datei angegeben ist --&gt;
&lt;version&gt;product version&lt;/version&gt;
&lt;!-- Definition als Applikation --&gt;
&lt;packaging&gt;eclipse-application&lt;/packaging&gt;</pre>
<p>Die Angabe eines Environment darf an dieser Stelle auch nicht fehlen (Siehe oben). Da es sonst zu dem Fehler „Product includes native launcher but no target environment was specified” kommt. Hat man die ersten Hürden oder Anpassungen von der 0.3.0-DEV überstanden, lassen sich nun mehr Builds mit dem neuen Pseudo-Release realisieren.</p>
<p>Persönlich würde ich mir noch wünschen das Sonatype mehr Feedback zu den Releases geben würde, damit man genau weiß, worauf man sich einlässt. In Tycho steckt sehr viel potential und ich hoffe in geraumer Zeit wieder ein positives Feedback abgeben zu können.</p>
<p>Die neusten DEVs können unter den <a href="http://repository.sonatype.org/content/repositories/tycho-pseudo-releases/org/codehaus/tycho/tycho-distribution/" target="_blank">Tycho Pseudo-Releases von Sonatype</a> geladen werden. Hier ist es auch möglich auf ältere Builds zurückzugreifen.</p>
<p>[UPDATE]<br />
Seit dem 20.07.09 gibt es nun auch die 0.4.0-DEV-2707. Nach ersten Tests gibt es keine nennenswerten Änderungen. Ebenfalls funktioniert der Build auch mit dieser Version wie gewohnt. Bei einem Build fällt nun auf, das die Zeit für den Build die zuvor leider auch nur 0 angezeigt hat nun gänzlich fehlt.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.twentysqm.com/2009-07-20/tycho-pseudo-release-0-4-0-dev-2668.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse Galileo Release 3.5</title>
		<link>http://www.twentysqm.com/2009-06-28/eclipse-galileo-release-3-5.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=eclipse-galileo-release-3-5</link>
		<comments>http://www.twentysqm.com/2009-06-28/eclipse-galileo-release-3-5.html#comments</comments>
		<pubDate>Sat, 27 Jun 2009 23:14:51 +0000</pubDate>
		<dc:creator>Frank Gottschlich</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[eclipse]]></category>

		<guid isPermaLink="false">http://www.twentysqm.com/?p=682</guid>
		<description><![CDATA[Aus dem Hause The Eclipse Foundation kam nun die sehnsüchtige Mitteilung. Eclipse Galileo erreicht das Release Stadium. Nach monater langer Arbeit kommt mit der neuen Version viele Detailverbesserungen. In der aktuellen Version 3.5 bringt Eclipse nicht nur viele Verbesserungen für das Overview mit sondern auch neue Architekturunterstützungen. Bei einem Blick hinter die Kulissen fällt sofort [...]]]></description>
			<content:encoded><![CDATA[<p>Aus dem Hause <a href="http://www.eclipse.org">The Eclipse Foundation</a> kam nun die sehnsüchtige Mitteilung. Eclipse Galileo erreicht das Release Stadium. Nach monater langer Arbeit kommt mit der neuen Version viele Detailverbesserungen. In der aktuellen Version 3.5 bringt Eclipse nicht nur viele Verbesserungen für das Overview mit sondern auch neue Architekturunterstützungen.</p>
<p>Bei einem Blick hinter die Kulissen fällt sofort die neue Unterstützung für die MacOS X - Version Cocoa auf. Hier wird nun der Support für die x86- und x64-Architektur bereitgestellt, was einiges wieder sehr einfach machen wird. Experimentell wurde (erst) zum Release die <a href="http://de.wikipedia.org/wiki/System/390">s390-Architektur</a> eingeführt. Dabei handelt es sich um eine weitere Linux-Architektur von IBM. Mittlerweile die zweite die auch von Java unterstützt wird.</p>
<p>Nach einem ersten Start fällt das viel schnellere Laden der Plattform auf. Dies ist einem überabeiteten Backend zu verdanken. Bei einem Update oder Installation eines zusätzlichen Plugins fällt ebenfalls die neue Routine und neuen Views auf. Hier wurde ordentlich optimiert. Dabei wurden die durchzuklickenden Dialoge reduziert. Ebenfalls wird bei der Installation von neuen Plug-ins angezeigt welche Plug-ins noch installiert werden müssen.</p>
<p>Mit Eclipse 3.5 kommen neben den Features für das Auge und der Steuerung auch einige Bugfixes. So ist es nun endlich möglich einen JUnit 4 Provider für Pluginübergreifende Tests einzusetzen. Durch einen Fehler bis zur Version 3.4.2 war dies leider nicht möglich und man musste sich vorerst mit JUnit 3 zufrieden geben. Diese Thematik ist sicherlich sehr interessant für die Reihe an Third-party Programme, die sich im Bereich Continuous Integration tummeln. Eine mitlerweile doch recht bekannte Plattform dafür ist <a href="http://docs.codehaus.org/display/M2ECLIPSE/Tycho+project+overview">Tycho</a>.</p>
<p>Für umfassende Informationen der Neuerungen in Eclipse, sollte man die <a href="http://download.eclipse.org/eclipse/downloads/drops/R-3.5-200906111540/eclipse-news-all.html">Eclipse 3.5 - New and Noteworthy</a> Seite von Eclipse besuchen. Dort wird aufgezeigt an welchen neuen Errungenschaften in den letzten Monaten gearbeitet wurde.</p>
<p>Weiterführende Informationen:</p>
<p><a href="http://www.golem.de/0906/67975.html">http://www.golem.de/0906/67975.html</a><br />
<a href="http://www.innenspur.de/?p=259">http://www.innenspur.de/?p=259</a><br />
<a href="http://javathreads.de/2009/06/eclipse-galileo-veroeffentlicht/">http://javathreads.de/2009/06/eclipse-galileo-veroeffentlicht/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.twentysqm.com/2009-06-28/eclipse-galileo-release-3-5.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maven 2 - Build Lifecycle #3</title>
		<link>http://www.twentysqm.com/2008-11-22/maven-2-build-lifecycle-3.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=maven-2-build-lifecycle-3</link>
		<comments>http://www.twentysqm.com/2008-11-22/maven-2-build-lifecycle-3.html#comments</comments>
		<pubDate>Sat, 22 Nov 2008 03:44:34 +0000</pubDate>
		<dc:creator>Frank Gottschlich</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[lifecycle]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[rcp]]></category>

		<guid isPermaLink="false">http://www.twentysqm.com/?p=319</guid>
		<description><![CDATA[Nach dem wir uns im ersten Teil mit der Theroie vertraut gemacht haben und im zweiten Teil erste Schritte in der Praxis gemacht haben geht es nun im dritten Teil um den Kern einer pom.xml-Konfiguration. Hierbei erkläre ich die nötigen Schritte, die dafür nötig sind, um einen Build Lifecycle einer RCP-Anwendung aufzubauen. Zu erst sollte [...]]]></description>
			<content:encoded><![CDATA[<p>Nach dem wir uns im ersten Teil mit der Theroie vertraut gemacht haben und im zweiten Teil erste Schritte in der Praxis gemacht haben geht es nun im dritten Teil um den Kern einer <em>pom.xml</em>-Konfiguration. Hierbei erkläre ich die nötigen Schritte, die dafür nötig sind, um einen Build Lifecycle einer RCP-Anwendung aufzubauen.</p>
<p>Zu erst sollte man sich in Eclipse eine RCP-Anwendung<sup><a href="http://www.twentysqm.com/2008-11-22/maven-2-build-lifecycle-3.html#footnote_0_319" id="identifier_0_319" class="footnote-link footnote-identifier-link" title="Optional das HelloWorld-Mail RCP">1</a></sup> generien lassen oder selbst eins erstellen. Da wir später auch die Product-Konfiguration brauchen, wäre es angebracht, sich diese auch gleich bauen zu lassen und nötige Einstellungen zu treffen. Ich habe soweit alles beim Standard belassen und die Product-Datei „<em>com.company.project.product</em>” genannt. Wenn man die nötigen Konfigurationen für das Produkt getroffen hat lässt sich diese bereits in Eclipse über <em>„Overview -&gt; Launch an Eclipse application</em>” ausführen.</p>
<p>Ich möchte an dieser Stelle nicht tiefer in der RCP-Entwicklung eingehen da dies ein Thema für sich ist. Wer allerdings damit nicht so zurecht kommt, sollte sich noch etwas in die RCP-Entwicklung<sup><a href="http://www.twentysqm.com/2008-11-22/maven-2-build-lifecycle-3.html#footnote_1_319" id="identifier_1_319" class="footnote-link footnote-identifier-link" title="http://wiki.eclipse.org/index.php/Rich_Client_Platform">2</a></sup> einlesen.</p>
<p>Nun erstellen wir uns eine <em>pom.xml</em> mit folgendem Inhalt:</p>
<p><code>
<pre class="brush: xml; title: ; notranslate">&lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd&quot;&gt;
  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
  &lt;groupId&gt;com.company.project&lt;/groupId&gt;
  &lt;artifactId&gt;com.company.project&lt;/artifactId&gt;
  &lt;packaging&gt;zip&lt;/packaging&gt;
  &lt;name&gt;Project Name&lt;/name&gt;&lt;/code&gt;&lt;code&gt;
  &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;
  ...
&lt;/project&gt;</pre>
<p></code></p>
<p>Unsere Anwendung heißt hier: com.company.project. Das Haupt-Plugin analog genauso: com.company.project. Es gilt nun den Inhalt ab Zeile 8 zu füllen. Da wir einen Buildprozess für eine RCP-Anwendung erstellen wollen schauen wir uns zu erst auf der Seite <a href="http://mojo.codehaus.org/pde-maven-plugin/index.html">http://mojo.codehaus.org/pde-maven-plugin/index.html</a> um. Dies kommt dem am nächsten was wir machen wollen. Unter Usage haben wir eine wunderbare Beschreibung wie der Konstrukt auszusehen hat:</p>
<pre class="brush: xml; title: ; notranslate">&lt;project&gt;
  ...
  &lt;packaging&gt;zip&lt;/packaging&gt;
  &lt;build&gt;
    &lt;plugins&gt;
      &lt;plugin&gt;
        &lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt;
        &lt;artifactId&gt;pde-maven-plugin&lt;/artifactId&gt;
        &lt;extensions&gt;true&lt;/extensions&gt;
        &lt;configuration&gt;
          &lt;buildProperties&gt;
          &lt;!-- Additional PDE ant properies goes here --&gt;
          ...
          &lt;/buildProperties&gt;
        &lt;/configuration&gt;
        &lt;!-- Also bind to mvn clean --&gt;
        &lt;executions&gt;
          &lt;execution&gt;
            &lt;id&gt;clean-pde&lt;/id&gt;
            &lt;phase&gt;clean&lt;/phase&gt;
            &lt;goals&gt;
              &lt;goal&gt;clean&lt;/goal&gt;
            &lt;/goals&gt;
          &lt;/execution&gt;
        &lt;/executions&gt;
      &lt;/plugin&gt;
    &lt;/plugins&gt;
  &lt;/build&gt;
  ...
&lt;/project&gt;
</pre>
<p>Ab nun an wird es etwas knifflig. Man sollte die PDE-Version explizit angeben. Aktuell ist die Version: „1.0-SNAPSHOT”. Dies muss im besten fall unter <em>extensions</em> als <em>version</em> - Tag hinzugefügt werden. Nicht benötigte Inhalte, speziell die Kommentare haben in solch einer Konfiguration natürlich nichts verloren. Also ebenfalls raus damit. Sind diese Dinge abgearbeitet kann sich diese pom-Konfiguration schon sehen lassen. Damit ist zumindest der Grundstein gelegt. Im nächsten Teil der Storyline werden wir uns mit dem Product-Build beschäftigen und unsere erstellte Mail-Application automatisch erstellen lassen.</p>
<p>Weiterführend ist zu sagen, das mit dem PDE-Maven-Plugin sich nicht nur Product, sondern auch Plugins, Features und auch Updatesite automatisch builden lassen. Allerdings ist jeder dieser Bereiche ein Thema für sich und sollten trotz der einfachen Handhabung nicht unterschätzt werden. Persönlich schätze ich den Product-Build als schwierigsten ein.</p>
<ol class="footnotes"><li id="footnote_0_319" class="footnote">Optional das HelloWorld-Mail RCP</li><li id="footnote_1_319" class="footnote">http://wiki.eclipse.org/index.php/Rich_Client_Platform</li></ol>]]></content:encoded>
			<wfw:commentRss>http://www.twentysqm.com/2008-11-22/maven-2-build-lifecycle-3.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maven 2 - Build Lifecycle #2</title>
		<link>http://www.twentysqm.com/2008-10-31/maven-2-build-lifecycle-2.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=maven-2-build-lifecycle-2</link>
		<comments>http://www.twentysqm.com/2008-10-31/maven-2-build-lifecycle-2.html#comments</comments>
		<pubDate>Fri, 31 Oct 2008 19:00:46 +0000</pubDate>
		<dc:creator>Frank Gottschlich</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[lifecycle]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[rcp]]></category>

		<guid isPermaLink="false">http://www.twentysqm.com/?p=292</guid>
		<description><![CDATA[Im zweiten Teil der Storyline geht es um den allgemeinen Aufbau eines Maven-Projekts. Im grunde genommen ist es recht einfach, solch eines zu definieren. Es sind dafür zwei Schritte nötig, wobei der erste Schritt entscheidend ist. Möchte man von haus aus mit der Maven-Konvention arbeiten, so bietet es sich an, unter Eclipse zu arbeiten und [...]]]></description>
			<content:encoded><![CDATA[<p>Im zweiten Teil der Storyline geht es um den allgemeinen Aufbau eines Maven-Projekts. Im grunde genommen ist es recht einfach, solch eines zu definieren. Es sind dafür zwei Schritte nötig, wobei der erste Schritt entscheidend ist.</p>
<p>Möchte man von haus aus mit der Maven-Konvention arbeiten, so bietet es sich an, unter Eclipse zu arbeiten und zusätzlich das Maven-Plugin<sup><a href="http://www.twentysqm.com/2008-10-31/maven-2-build-lifecycle-2.html#footnote_0_292" id="identifier_0_292" class="footnote-link footnote-identifier-link" title="http://m2eclipse.codehaus.org/">1</a></sup> zu nutzen. (Es steht selbstverständlich auch ein gleichnamiges Netbeans-Plugin<sup><a href="http://www.twentysqm.com/2008-10-31/maven-2-build-lifecycle-2.html#footnote_1_292" id="identifier_1_292" class="footnote-link footnote-identifier-link" title="http://maven.apache.org/netbeans-module.html">2</a></sup> zur Verfügung) Hat man dies in seiner Eclipse-Version integriert hat man die Möglichkeit, gleich ein neues Maven-Projekt anzulegen.</p>
<p>Nun ist es aber so, das über Eclipse hinaus, es Zusatzpakete gibt die zum Beispiel sehr viel Code für einen generieren und diese logischerweise die Java-Konvention verwenden. Hier greift das Sprichwort <em>„Never change a running system”</em> und man muss umdenken. In diesem Fall weisen wir dem jeweiligen Hauptprojekt eine <em>„pom.xml”</em> zu. Genauer gesagt, wir erstellen uns diese Datei. Macht man dies nun in Eclipse, erkennt er dies und der Designer öffnet sich. Persönlich mag ich Designer lieber als sich mit dem Quelltexten rumzuschlagen, aber in diesem Fall sollte man eine Ausnahme machen, die <em>„pom.xml”</em> per Hand beschreiben und später lieber die Anpassungen über den Designer erledigen.</p>
<p>Aufbau einer Standart pom.xml:</p>
<p><code>
<pre class="brush: xml; title: ; notranslate">&lt;project&gt;
  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
  &lt;groupId&gt;com.company.projectr&lt;/groupId&gt;
  &lt;artifactId&gt;com.company.project.application&lt;/artifactId&gt;
  &lt;packaging&gt;zip&lt;/packaging&gt;
  &lt;name&gt;Project Name&lt;/name&gt;
  &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;
&lt;/project&gt;</pre>
<p></code></p>
<p>Um den Aufbau etwas einfacher zu halten ist hier kein Doctype definiert. Dieser müßte in der ersten Zeile vollständig lauten:</p>
<p><code>
<pre class="brush: xml; title: ; notranslate">&lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd&quot;&gt;
</pre>
<p></code></p>
<p>Hieraus lässt sich schon eine funktionstüchtige pom-Konfiguration erkennen. Der modelVersion-Tag beschreibt die POM-Version. Zum aktuellen Zeitpunkt wo dieser Beitrag verfasst wurde ist die Version 4.0.0 aktuell. Der groupID-Tag definiert quasi den Projektnamen. Es bietet sich hier an den root-Path zu seinem Projekt zu definieren. Allerdings wäre hier auch ein richtiger Projektname möglich, obwohl sich das in der Praxis dann nicht so gut macht. Wie sich erahnen lässt, beschreibt der artifactId-Tag den Projektnamen. In der RCP-Entwicklung wäre dies, der vollständige Name des Plugins. Der packaging-Tag definiert das Zielformat, wie das Projekt am Ende gepackt wird. Hier wäre es möglich ear, war, jar oder wie in unserem Beispiel das zip-Format anzugeben. Der name-Tag ist sicher selbsterklärend. Dieser beschreibt, wie das Projekt heißt. Zum Schluss gibt es noch ein version-Tag. Wie der Name schon sagt, definiert man hier seine Version. SNAPSHOT bedeutet in diesem Fall, das die Version, sollte sie in einem Repository installiert oder ausgelifert werden, es sich dabei um keine Release-Version handelt und ggf. im laufe der Zeit in seinen Funktionen noch geändert werden kann.</p>
<ol class="footnotes"><li id="footnote_0_292" class="footnote">http://m2eclipse.codehaus.org/</li><li id="footnote_1_292" class="footnote">http://maven.apache.org/netbeans-module.html</li></ol>]]></content:encoded>
			<wfw:commentRss>http://www.twentysqm.com/2008-10-31/maven-2-build-lifecycle-2.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maven 2 - Build Lifecycle #1</title>
		<link>http://www.twentysqm.com/2008-10-28/maven-build-lifecycle-1.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=maven-build-lifecycle-1</link>
		<comments>http://www.twentysqm.com/2008-10-28/maven-build-lifecycle-1.html#comments</comments>
		<pubDate>Tue, 28 Oct 2008 00:57:03 +0000</pubDate>
		<dc:creator>Frank Gottschlich</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[lifecycle]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[rcp]]></category>

		<guid isPermaLink="false">http://www.twentysqm.com/?p=248</guid>
		<description><![CDATA[Der richtige Ansatz für ein Buildserver muss erst einmal gefunden werden. Ich möchte hier nicht auf alle eingehen sondern gleich ein ausgewähltes System vorstellen. Es handelt sich dabei um Maven1. Dieses System basiert auf Plugins und stellt eine masse an Möglichkeiten bereit. Wer seinen Buildprozess2 automatisieren möchte sollte sich damit vertraut machen. So ein Maven-Projekt [...]]]></description>
			<content:encoded><![CDATA[<p>Der richtige Ansatz für ein Buildserver muss erst einmal gefunden werden. Ich möchte hier nicht auf alle eingehen sondern gleich ein ausgewähltes System vorstellen. Es handelt sich dabei um Maven<sup><a href="http://www.twentysqm.com/2008-10-28/maven-build-lifecycle-1.html#footnote_0_248" id="identifier_0_248" class="footnote-link footnote-identifier-link" title="http://maven.apache.org/">1</a></sup>. Dieses System basiert auf Plugins und stellt eine masse an Möglichkeiten bereit.</p>
<p>Wer seinen Buildprozess<sup><a href="http://www.twentysqm.com/2008-10-28/maven-build-lifecycle-1.html#footnote_1_248" id="identifier_1_248" class="footnote-link footnote-identifier-link" title="http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html">2</a></sup> automatisieren möchte sollte sich damit vertraut machen. So ein Maven-Projekt bringt von haus aus eine eigene Konventionen mit sich die man nach Möglichkeit auch nutzen sollte. Aber auch für Projekte die Technisch an eine bestimmte Struktur gebunden sind, gibt es Lösungsansätze. Eines sollte man über Maven wissen und sich auch immer im klaren sein, es gibt keinen Standard. Wie ein Build Lifecycle aussehen sollte, richtet sich immer nach den Projekt(en).</p>
<p>Maven bietet aber ein Standard Buildprozess aus folgenden Plugin an:</p>
<ol>
<li>clean (Säubern)</li>
<li>validate (Validieren)</li>
<li>compile (Kompilieren)</li>
<li>test (Testen)</li>
<li>package (Verpacken)</li>
<li>integration-test (Integrations-Tests)</li>
<li>verify (Gültigkeitsprüfung)</li>
<li>install (Installieren im lokalen Repository)</li>
<li>deploy (Installieren im entfernten Repository)</li>
<li>site (Generierung der Dokumentation)</li>
</ol>
<p>Jede Phase stellt ein Plugin dar und übernimmt verschiedene Aufgaben und definiert letztendlich den Buildprozess. Im folgenden die einzelnen Schritte im Detail:</p>
<ol>
<li style="color:#000;">Entfernt Artefakte<sup><a href="http://www.twentysqm.com/2008-10-28/maven-build-lifecycle-1.html#footnote_2_248" id="identifier_2_248" class="footnote-link footnote-identifier-link" title="Artefakte sind beispielsweise jar- oder zip-Pakete die durch das kompilieren erstellt werden k&ouml;nnen. Diese sind zu meist mit einer Versionierung versehen. Diese Artefakte k&ouml;nnen von anderen Projekten in Abh&auml;ngigkeit genutzt und eingesetzt werden.">3</a></sup> von vorherigen Builds</li>
<li style="color:#000;">Validiert<sup><a href="http://www.twentysqm.com/2008-10-28/maven-build-lifecycle-1.html#footnote_3_248" id="identifier_3_248" class="footnote-link footnote-identifier-link" title="Damit pr&uuml;ft das Plugin durch ob im Programmcode Fehler enthaten sind. Das beste Beispiel daf&uuml;r sind Errors.">4</a></sup> das Projekt auf Korrektheit und prüft ob alle Abhängigkeiten<sup><a href="http://www.twentysqm.com/2008-10-28/maven-build-lifecycle-1.html#footnote_4_248" id="identifier_4_248" class="footnote-link footnote-identifier-link" title="Projekte greifen i.d.R. auf andere Resourcen zu und damit wird gepr&uuml;ft ob diese vorhanden sind.">5</a></sup> gegeben sind</li>
<li style="color:#000;">Kompiliert den Programmcode</li>
<li style="color:#000;">Testet den kompilierten Programmcode mit Hilfe eines unit-testing-framework<sup><a href="http://www.twentysqm.com/2008-10-28/maven-build-lifecycle-1.html#footnote_5_248" id="identifier_5_248" class="footnote-link footnote-identifier-link" title="Ein bekanntes Framework ist JUnit: http://www.junit.org/">6</a></sup>. Diese Tests sollten nicht verlangen, dass der Code gepackt (packaged) oder ausgeliefert (deployed) sein muss.</li>
<li style="color:#000;">Fasst den kompilierten Code in einem bestimmten Format zusammen, z.b. zu einer jar.</li>
<li style="color:#000;">Integrationstests auf anderen Systemen. Es wird dabei getestet ob das Projekt auf dem Zielsystem funktionstüchtig ist.</li>
<li style="color:#000;">Hier können sonstige Tests angestoßen werden die prüfen ob das Projekt gültig und ggf. bestimmte Qualitätskriterien erfüllt sind.</li>
<li style="color:#000;">Installiert das Package in das lokale Repository<sup><a href="http://www.twentysqm.com/2008-10-28/maven-build-lifecycle-1.html#footnote_6_248" id="identifier_6_248" class="footnote-link footnote-identifier-link" title="Stellt ein Verzeichnis da, wo s&auml;mtliche Maven und hauseigenen Projekte verwaltet und genutzt werden k&ouml;nnen">7</a></sup>, worauf lokale Projekte in Abhängigkeit dies nutzen können.</li>
<li style="color:#000;">Installiert das Package in ein entferntes Repository. Dies wird verwendet um stabile Versionen anderen Programmierern zu verfügung zu stellen.</li>
<li style="color:#000;">Erstellt eine Projekt-Dokumentation. Ebenfalls ist es hier möglich JavaDocs oder Code-Duplicates anzeigen zu lassen.</li>
</ol>
<p>Es ist für den Anfang sicher etwas viel. Wenn man sich aber etwas eingelesen hat und langsam dahinter steigt, lässt sich daraus eine Menge machen. Und darum geht es in dieser Storyline, einen automatischen Buildprozess aufzubauen.</p>
<ol class="footnotes"><li id="footnote_0_248" class="footnote">http://maven.apache.org/</li><li id="footnote_1_248" class="footnote">http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html</li><li id="footnote_2_248" class="footnote">Artefakte sind beispielsweise jar- oder zip-Pakete die durch das kompilieren erstellt werden können. Diese sind zu meist mit einer Versionierung versehen. Diese Artefakte können von anderen Projekten in Abhängigkeit genutzt und eingesetzt werden.</li><li id="footnote_3_248" class="footnote">Damit prüft das Plugin durch ob im Programmcode Fehler enthaten sind. Das beste Beispiel dafür sind Errors.</li><li id="footnote_4_248" class="footnote">Projekte greifen i.d.R. auf andere Resourcen zu und damit wird geprüft ob diese vorhanden sind.</li><li id="footnote_5_248" class="footnote">Ein bekanntes Framework ist JUnit: http://www.junit.org/</li><li id="footnote_6_248" class="footnote">Stellt ein Verzeichnis da, wo sämtliche Maven und hauseigenen Projekte verwaltet und genutzt werden können</li></ol>]]></content:encoded>
			<wfw:commentRss>http://www.twentysqm.com/2008-10-28/maven-build-lifecycle-1.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

