<?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>Konfiguration Archive - CEOsBay</title>
	<atom:link href="https://ceosbay.com/tag/konfiguration/feed/" rel="self" type="application/rss+xml" />
	<link>https://ceosbay.com/tag/konfiguration/</link>
	<description>It&#039;s all about Tech</description>
	<lastBuildDate>Thu, 05 Oct 2023 07:01:51 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://i0.wp.com/ceosbay.com/wp-content/uploads/2022/11/image.jpg?fit=32%2C32&#038;ssl=1</url>
	<title>Konfiguration Archive - CEOsBay</title>
	<link>https://ceosbay.com/tag/konfiguration/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">211828771</site>	<item>
		<title>SSH (Secure Shell) &#8211; Sichere Kommunikation, jederzeit und überall</title>
		<link>https://ceosbay.com/2023/10/04/ssh-secure-shell-sichere-kommunikation-jederzeit-und-ueberall/</link>
					<comments>https://ceosbay.com/2023/10/04/ssh-secure-shell-sichere-kommunikation-jederzeit-und-ueberall/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Wed, 04 Oct 2023 19:24:00 +0000</pubDate>
				<category><![CDATA[Informationstechnologie]]></category>
		<category><![CDATA[Netzwerk]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Authentifizierung]]></category>
		<category><![CDATA[Cipher]]></category>
		<category><![CDATA[Dateiübertragung]]></category>
		<category><![CDATA[Datenintegrität]]></category>
		<category><![CDATA[Datenschutz]]></category>
		<category><![CDATA[digitaler Handshake]]></category>
		<category><![CDATA[DSA-Schlüssel]]></category>
		<category><![CDATA[ECDSA]]></category>
		<category><![CDATA[Ed25519]]></category>
		<category><![CDATA[Fernzugriff]]></category>
		<category><![CDATA[Host-basierte Authentifizierung]]></category>
		<category><![CDATA[Konfiguration]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Netzwerkadministration]]></category>
		<category><![CDATA[Netzwerkanwendung]]></category>
		<category><![CDATA[Netzwerkkommunikation]]></category>
		<category><![CDATA[Netzwerksicherheit]]></category>
		<category><![CDATA[OpenSSH]]></category>
		<category><![CDATA[Passwort-Sniffing]]></category>
		<category><![CDATA[Passwortloses Login]]></category>
		<category><![CDATA[Port-Weiterleitung]]></category>
		<category><![CDATA[Private Key]]></category>
		<category><![CDATA[Protokoll]]></category>
		<category><![CDATA[Public Key]]></category>
		<category><![CDATA[Remote-Server]]></category>
		<category><![CDATA[Remote-Shell]]></category>
		<category><![CDATA[RSA-Schlüssel]]></category>
		<category><![CDATA[Schlüsselaustausch]]></category>
		<category><![CDATA[SCP]]></category>
		<category><![CDATA[Secure Communication]]></category>
		<category><![CDATA[Secure Shell]]></category>
		<category><![CDATA[Serveradministration]]></category>
		<category><![CDATA[Session]]></category>
		<category><![CDATA[SFTP]]></category>
		<category><![CDATA[Sicherheitsprotokoll]]></category>
		<category><![CDATA[Sicherheitsstandard]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[SSH-Client]]></category>
		<category><![CDATA[SSH-Konfiguration]]></category>
		<category><![CDATA[SSH-Port]]></category>
		<category><![CDATA[SSH-Server]]></category>
		<category><![CDATA[SSH-Tunnel]]></category>
		<category><![CDATA[SSH1]]></category>
		<category><![CDATA[SSH2]]></category>
		<category><![CDATA[Tatu Ylönen]]></category>
		<category><![CDATA[Tunneling]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[Verschlüsselung]]></category>
		<category><![CDATA[Verschlüsselungsstandard]]></category>
		<category><![CDATA[Zwei-Faktor-Authentifizierung]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=2640</guid>

					<description><![CDATA[<p>Secure Shell, häufiger bekannt als SSH, zählt heute zu den essenziellen Werkzeugen im IT-Bereich. In diesem Blog-Beitrag, skizziere ich die Entstehung bzw. Geschichte, zeige Anwendungsbereiche auf und schildere die Grundlagen zur Einrichtung. Was ist SSH? &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/10/04/ssh-secure-shell-sichere-kommunikation-jederzeit-und-ueberall/">SSH (Secure Shell) &#8211; Sichere Kommunikation, jederzeit und überall</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Secure <a href="https://ceosbay.com/2023/09/02/shell-geschichte-und-nutzungshell/">Shell</a>, häufiger bekannt als SSH, zählt heute zu den essenziellen Werkzeugen im IT-Bereich. In diesem Blog-Beitrag, skizziere ich die Entstehung bzw. Geschichte, zeige Anwendungsbereiche auf und schildere die Grundlagen zur Einrichtung.</p>



<h3 class="wp-block-heading">Was ist SSH?</h3>



<p>Es ermöglicht die sichere Kommunikation zwischen zwei Systemen über ein unsicheres Netzwerk wie das Internet. Es bietet eine verschlüsselte Sitzungsprotokollierung und Dateiübertragung, wodurch es zu einer idealen Lösung für die Fernadministration von <a href="https://ceosbay.com/2023/08/29/server-evolution-typen-und-best-practices-fuer-den-aufbau/">Servern</a> und sicheres Surfen über unsichere Netzwerke wird.</p>



<h3 class="wp-block-heading">Die Entstehung von SSH</h3>



<p>SSH entstand Anfang der 1990er Jahre. Tatu Ylönen, ein Forscher aus Finnland, entwickelte es als Reaktion auf einen Passwort-Sniffing-Angriff auf sein Universitätsnetzwerk. SSH1, die erste Version, erschien 1995 und fand rasch breite Akzeptanz. Um Mängel in SSH1 zu adressieren, entwickelte man SSH2 mit verbesserten Sicherheitsmechanismen. Heute verwenden fast alle modernen Systeme SSH2.</p>



<h3 class="wp-block-heading">Anwendung von SSH</h3>



<p>Es dient mehreren Zwecken:</p>



<ol class="wp-block-list">
<li><strong>Fernzugriff:</strong> Administratoren nutzen es, um sich sicher mit einem Remote-Server zu verbinden und Befehle auszuführen.</li>



<li><strong>Dateiübertragung:</strong> Mit SCP (Secure Copy Protocol) und SFTP (Secure File Transfer Protocol) lassen sich Dateien verschlüsselt übertragen.</li>



<li><strong>Port-Weiterleitung:</strong> Man kann lokale und entfernte Ports weiterleiten und so sichere verschlüsselte Tunnel für andere Anwendungen bereitstellen.</li>
</ol>



<p>Beispiel: Verbindung zu einem Remote-<a href="https://ceosbay.com/2023/08/29/server-evolution-typen-und-best-practices-fuer-den-aufbau/">Server</a>:</p>



<p><code>ssh benutzername@serveradresse</code></p>



<h3 class="wp-block-heading">Einrichtung</h3>



<p>Um es nutzen zu können, installiert man den OpenSSH-<a href="https://ceosbay.com/2023/08/29/server-evolution-typen-und-best-practices-fuer-den-aufbau/">Server</a> und -Client. Viele moderne Betriebssysteme, wie <a href="https://ceosbay.com/2022/11/22/erklaerung-linux/">Linux</a>-Distributionen und macOS, liefern bereits vorinstallierte Tools.</p>



<p>Beispiel: Installation von OpenSSH unter <a href="https://ceosbay.com/2022/12/04/erklaerung-ubuntu-linux/">Ubuntu</a>:</p>



<p><code>sudo apt update sudo apt install openssh-server</code></p>



<p>Nach der Installation startet der Dienst automatisch. Man kann den Status mit folgendem Befehl prüfen:</p>



<p><code>sudo systemctl status ssh</code></p>



<p>Zur Sicherheit sollte man einige Einstellungen in der Konfigurationsdatei anpassen:</p>



<ol class="wp-block-list">
<li><strong>Port ändern:</strong> Den Standardport 22 ändern, um Basisangriffe zu vermeiden.</li>



<li><strong>Root-Login verbieten:</strong> Den Root-Zugriff über SSH deaktivieren.</li>



<li><strong>Zugriff einschränken:</strong> Nur bestimmten Benutzern den Zugriff erlauben.</li>
</ol>



<p>Diese Änderungen nimmt man in der Datei <code>/etc/ssh/sshd_config</code> vor und startet anschließend den SSH-Dienst neu.</p>



<p>Abschließend sollte man sich immer um regelmäßige Sicherheitsupdates kümmern, um das System und SSH gegen bekannte Schwachstellen abzusichern.</p>



<h3 class="wp-block-heading">Fazit</h3>



<p>SSH hat sich seit seiner Entstehung als ein unverzichtbares Tool für sichere Kommunikation im Netz etabliert. Mit dem richtigen Know-how und einigen Sicherheitsvorkehrungen bietet es eine robuste und sichere Methode für die Fernadministration und Dateiübertragung.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/10/04/ssh-secure-shell-sichere-kommunikation-jederzeit-und-ueberall/">SSH (Secure Shell) &#8211; Sichere Kommunikation, jederzeit und überall</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/10/04/ssh-secure-shell-sichere-kommunikation-jederzeit-und-ueberall/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2640</post-id>	</item>
		<item>
		<title>Apache-Webserver</title>
		<link>https://ceosbay.com/2023/09/04/apache-webserver/</link>
					<comments>https://ceosbay.com/2023/09/04/apache-webserver/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Mon, 04 Sep 2023 20:45:00 +0000</pubDate>
				<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Apache Software Foundation]]></category>
		<category><![CDATA[Apache-Dokumentation]]></category>
		<category><![CDATA[Apache-Entwicklerteam]]></category>
		<category><![CDATA[Apache-Modules]]></category>
		<category><![CDATA[Apache-Webserver]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Caching]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Einrichtung]]></category>
		<category><![CDATA[Geschichte]]></category>
		<category><![CDATA[HTTP-Server]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[Installation]]></category>
		<category><![CDATA[Konfiguration]]></category>
		<category><![CDATA[Let’s Encrypt]]></category>
		<category><![CDATA[mod_cache]]></category>
		<category><![CDATA[mod_expires]]></category>
		<category><![CDATA[mod_security]]></category>
		<category><![CDATA[Module]]></category>
		<category><![CDATA[NCSA HTTPd]]></category>
		<category><![CDATA[Patches]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[PHP-Aktivierung]]></category>
		<category><![CDATA[Server-Software]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[SSL-Zertifikate]]></category>
		<category><![CDATA[SSL/TLS]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[Virtual Hosts]]></category>
		<category><![CDATA[Web Application Firewall]]></category>
		<category><![CDATA[Web-Hosting]]></category>
		<category><![CDATA[Web-Wurzelverzeichnis]]></category>
		<category><![CDATA[Webbrowser]]></category>
		<category><![CDATA[Webdienste]]></category>
		<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[Webserver-Konfiguration]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=2323</guid>

					<description><![CDATA[<p>Der Apache-Webserver, häufig einfach als &#8222;Apache&#8220; bezeichnet, ist einer der bekanntesten und am häufigsten eingesetzten Webserver weltweit. Doch was genau ist der Apache-Webserver, woher kommt er und wie wird er eingerichtet? In diesem Blog-Beitrag versuche &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/09/04/apache-webserver/">Apache-Webserver</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Der Apache-Webserver, häufig einfach als &#8222;Apache&#8220; bezeichnet, ist einer der bekanntesten und am häufigsten eingesetzten <a href="https://ceosbay.com/2023/08/29/server-evolution-typen-und-best-practices-fuer-den-aufbau/">Webserver</a> weltweit. Doch was genau ist der Apache-<a href="https://ceosbay.com/2023/08/29/server-evolution-typen-und-best-practices-fuer-den-aufbau/">Webserver</a>, woher kommt er und wie wird er eingerichtet? In diesem Blog-Beitrag versuche ich, diese Fragen zu beantworten und gebe Einblicke in die spannende Geschichte und Technik hinter diesem <a href="https://ceosbay.com/2023/08/29/server-evolution-typen-und-best-practices-fuer-den-aufbau/">Webserver</a>.</p>



<h2 class="wp-block-heading">Geschichte des Apache-Webservers </h2>



<p>Die Entstehung von Apache geht zurück auf die frühen 1990er Jahre. Damals suchten einige Webentwickler nach einer Alternative zum damals populären NCSA HTTPd-Server, der von der <a href="https://www.ncsa.illinois.edu">National Center for Supercomputing Applications</a> entwickelt wurde. Der Name &#8222;Apache&#8220; leitet sich von &#8222;A Patchy Server&#8220; ab, was darauf hinweist, dass der ursprüngliche Code aus einer Reihe von Patches zum NCSA HTTPd bestand.</p>



<p>Das Apache-Entwicklerteam, zu dem Personen wie Rob McCool und Brian Behlendorf gehörten, veröffentlichte die erste offizielle Version 1995. Seitdem hat Apache stetige Weiterentwicklungen erlebt und stellt heute ein führendes <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open-Source</a>-Projekt dar, das die <a href="https://www.apache.org">Apache Software Foundation</a> verwaltet.</p>



<h2 class="wp-block-heading">Einrichtung des Apache-Webservers </h2>



<p>Apache lässt sich auf vielen Betriebssystemen, einschließlich UNIX, <a href="https://ceosbay.com/2022/11/22/erklaerung-linux/">Linux</a> und Windows, installieren. Der Apache-Webserver ist bereits in macOS eingebaut, allerdings standardmäßig deaktiviert. Dazu aber im Anschluss mehr. Für eine einfache Installation auf einem <a href="https://ceosbay.com/2022/12/05/erklaerung-debian-linux/">Debian</a>-basierten System, wie <a href="https://ceosbay.com/2022/12/04/erklaerung-ubuntu-linux/">Ubuntu</a>, verwendet man beispielsweise folgende Befehle:</p>



<p><code>sudo apt update sudo apt install apache2</code></p>



<p>Nach der Installation läuft der Webserver und kann über einen Webbrowser mit der <a href="https://ceosbay.com/2023/08/28/url-von-ihrer-entstehung-bis-zur-modernen-optimierung/">URL</a> &#8222;<a href="http://localhost/">http://localhost</a>&#8220; erreicht werden.</p>



<h2 class="wp-block-heading">Konfiguration</h2>



<p>Der Apache-Webserver bietet eine Vielzahl von Konfigurationsoptionen, die in der Hauptkonfigurationsdatei <code>/etc/apache2/apache2.conf</code> zu finden sind. Einzelne Website-Konfigurationen lassen sich in <code>/etc/apache2/sites-available/</code> erstellen und mit dem Tool <code>a2ensite</code> aktivieren.</p>



<h2 class="wp-block-heading">Auf dem Mac</h2>



<p>Der Apache-Webserver ist bereits in macOS eingebaut, allerdings standardmäßig deaktiviert. Für diejenigen, die Apache auf einem Mac nutzen möchten, hier eine Schritt-für-Schritt-Anleitung zur Aktivierung und Einrichtung:</p>



<h2 class="wp-block-heading">Apache auf macOS aktivieren und konfigurieren</h2>



<ol class="wp-block-list">
<li><strong>Apache starten</strong>: Im Terminal gibt man den folgenden Befehl ein:bashCopy code<code>sudo apachectl start</code>Nachdem man den Befehl ausgeführt hat, kann man über den Webbrowser über die <a href="https://ceosbay.com/2023/08/28/url-von-ihrer-entstehung-bis-zur-modernen-optimierung/">URL</a> &#8222;<a href="http://localhost/">http://localhost</a>&#8220; überprüfen, ob Apache läuft. Es sollte eine Standard-Begrüßungsseite von Apache erscheinen.</li>



<li><strong>Dokumentenverzeichnis bestimmen</strong>: Standardmäßig verwendet Apache das Verzeichnis <code>/Library/WebServer/Documents/</code> als Web-Wurzelverzeichnis. Inhalte, die in diesem Verzeichnis platziert sind, kann man über den Webbrowser erreichen.</li>



<li><strong>Apache-Konfigurationsdatei bearbeiten</strong>: Die Hauptkonfigurationsdatei von Apache auf macOS befindet sich unter <code>/etc/apache2/httpd.conf</code>. Um diese Datei zu bearbeiten, kann man einen Texteditor wie <code>nano</code> verwenden:bashCopy code<code>sudo nano /etc/apache2/httpd.conf</code>In dieser Datei kann man verschiedene Einstellungen vornehmen, z.B. die Aktivierung von <a href="https://ceosbay.com/2023/02/26/erklaerung-php/">PHP</a>, die Definition von Virtual Hosts oder die Anpassung des Dokumentenverzeichnisses.</li>



<li><strong>PHP aktivieren (optional)</strong>: Wenn <a href="https://ceosbay.com/2023/02/26/erklaerung-php/">PHP</a> auf dem Mac installiert ist und man es mit Apache verwenden möchte, kann man dies in der <code>httpd.conf</code>-Datei aktivieren. Dazu muss die Zeile, die mit <code>#LoadModule php</code> beginnt, gesucht und das <code>#</code> am Anfang der Zeile entfernt werden. Nach dem Speichern der Datei muss man Apache neu starten, um die Änderungen zu übernehmen.</li>



<li><strong>Apache neu starten</strong>: Jedes Mal, wenn man Änderungen an der Konfigurationsdatei vornimmt, muss man Apache auch neu starten. Dies kann mit dem folgenden Befehl erfolgen:bashCopy code<code>sudo apachectl restart</code></li>



<li><strong>Automatischer Start von Apache</strong>: Wenn man möchte, dass Apache automatisch beim Hochfahren des Macs startet, kann man den folgenden Befehl verwenden:bashCopy code<code>sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist</code></li>
</ol>



<h2 class="wp-block-heading">Abschließende Anmerkungen</h2>



<p>Obwohl macOS einen eingebauten Apache-<a href="https://ceosbay.com/2023/08/29/server-evolution-typen-und-best-practices-fuer-den-aufbau/">Server</a> enthält, ziehen es einige Entwickler vor, Tools wie MAMP (Habe ich in der Vergangenheit verwendet aber heute eher nicht mehr. Evtl. schreibe ich noch einen Beitrag darüber) oder <a href="https://ceosbay.com/2022/10/25/homebrew-der-fehlende-paketmanager-fuer-macos-lassen-wir-fluegel-wachsen/">Homebrew</a> zu verwenden, um eine individuellere Entwicklungsumgebung zu schaffen. Diese Tools bieten oft eine einfachere Einrichtung und Konfiguration, insbesondere wenn auch andere Dienste wie <a href="https://ceosbay.com/2022/10/31/ubuntu-linux-starten-und-nutzen-mysql-server/">MySQL</a> oder <a href="https://ceosbay.com/2023/02/26/erklaerung-php/">PHP</a> in spezifischen Versionen benötigt werden.</p>



<h2 class="wp-block-heading">Best Practices und zu beachtende Punkte</h2>



<ol class="wp-block-list">
<li><strong>Sicherheit:</strong> Es ist immer dafür zu sorgen, dass der Webserver auf dem neuesten Stand ist, um Sicherheitslücken zu schließen. Zusätzlich empfiehlt sich die Installation von <code>mod_security</code> als Web Application Firewall.</li>



<li><strong>Performance:</strong> Für Websites mit hohem Traffic sollte man Module wie <code>mod_cache</code> und <code>mod_expires</code> verwenden, um Inhalte zu cachen und um die Ladezeiten zu reduzieren.</li>



<li><strong>SSL/TLS:</strong> In der heutigen Zeit ist es unerlässlich, Websites über <a href="https://ceosbay.com/2023/07/04/https-und-https-eine-reise-zur-web-sicherheit/">HTTPS</a> bereitzustellen. Mit Tools wie <a href="https://ceosbay.com/2023/09/01/lets-encrypt-der-offene-rechteanbieter/">Let&#8217;s Encrypt</a> lassen sich kostenlose <a href="https://ceosbay.com/2023/08/30/ssl-geschichte-typen-und-einrichtung/">SSL-Zertifikate</a> generieren und mit Apache verwenden.</li>



<li><strong>Module:</strong> Apache bietet eine Vielzahl von Modulen, die zusätzliche Funktionalitäten bereitstellen. Es ist genau zu überlegen, welche Module man benötigt, um unnötige Ressourcenbelastungen zu vermeiden.</li>
</ol>



<h2 class="wp-block-heading">Fazit </h2>



<p>Der Apache-Webserver ist nicht nur ein Stück Internetgeschichte, sondern auch heute noch ein leistungsstarkes Tool für Webentwickler und Administratoren. Mit dem richtigen Wissen und den passenden Best Practices lässt sich Apache optimal einsetzen und bietet eine solide Grundlage für nahezu jede Webanwendung.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/09/04/apache-webserver/">Apache-Webserver</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/09/04/apache-webserver/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2323</post-id>	</item>
		<item>
		<title>MapStruct &#8211; Schnelle und sichere Objektmapper für saubere und wartungsfreundliche Java-Anwendungen</title>
		<link>https://ceosbay.com/2023/03/27/erklaerung-mapstruct/</link>
					<comments>https://ceosbay.com/2023/03/27/erklaerung-mapstruct/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Mon, 27 Mar 2023 17:01:36 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Bean]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Codes]]></category>
		<category><![CDATA[Frame]]></category>
		<category><![CDATA[Funktionalität]]></category>
		<category><![CDATA[Gradle]]></category>
		<category><![CDATA[Head]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Integrieren]]></category>
		<category><![CDATA[Intelli]]></category>
		<category><![CDATA[J]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Kompilieren]]></category>
		<category><![CDATA[Konfiguration]]></category>
		<category><![CDATA[Map]]></category>
		<category><![CDATA[Mapping]]></category>
		<category><![CDATA[Mappings]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[Minimal]]></category>
		<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Seite]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Struct]]></category>
		<category><![CDATA[Typ]]></category>
		<category><![CDATA[Types]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Work]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1241</guid>

					<description><![CDATA[<p>MapStruct ist ein Java-basiertes Open Source Framework zur automatischen Generierung von Mappings zwischen Java-Objekten (Bean-Types). Es ist eine Alternative zu anderen Mapping-Frameworks wie Dozer, ModelMapper und Orika. Das Ziel von MapStruct ist es, die Entwicklung &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/27/erklaerung-mapstruct/">MapStruct &#8211; Schnelle und sichere Objektmapper für saubere und wartungsfreundliche Java-Anwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>MapStruct ist ein <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-basiertes Open Source <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> zur automatischen Generierung von Mappings zwischen <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Objekten (Bean-Types). Es ist eine Alternative zu anderen Mapping-<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Frameworks</a> wie Dozer, ModelMapper und Orika. Das Ziel von MapStruct ist es, die Entwicklung von Mapping-Code zu vereinfachen und zu beschleunigen und dabei typsichere und fehlerfreie Mappings zu generieren.</p>



<p>MapStruct nutzt dabei die Annotationen, die auf den <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Objekten angebracht sind, um automatisch Mapping-Code (Bean-Mappings) zu generieren. Das <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> generiert dabei standardmäßig Mappings zwischen Objekten mit gleichem Namen und Typ, es können aber auch eigene Mappings definiert werden. Dabei können auch komplexere Mappings erstellt werden, beispielsweise wenn Attribute in den Quell- und Zielobjekten unterschiedliche Namen haben oder wenn sie unterschiedliche Typen haben.</p>



<p>MapStruct ist sehr einfach zu verwenden und erfordert nur eine minimale Konfiguration. Es integriert sich nahtlos in das Build-System, da es als Annotation Processor fungiert und beim Kompilieren des Codes aufgerufen wird. Das <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> ist relativ schnell und hat einen geringen Overhead, da es keine Laufzeit-Abhängigkeiten hat.</p>



<h3 class="wp-block-heading">Vorteile auf einem Blick</h3>



<ul class="wp-block-list">
<li>Schnelle Ausführung durch Verwendung einfacher Methodenaufrufe anstelle von Reflexion (Bedeutet: Ein Programm kennt seine eigene Struktur und kann diese modifizieren)</li>



<li>Kompilierzeit-Typensicherheit. Nur Objekte und Attribute, die einander zugeordnet sind – Es findet keine versehentliche Zuordnung einer Auftragsentität zu einem Kunden-DTO statt.</li>



<li>In sich geschlossener Code &#8211; keine Laufzeit-Abhängigkeiten</li>



<li>Eindeutige Fehlerberichte zur Erstellungszeit, wenn:&nbsp;<ul><li>Mappings unvollständig sind (Wenn nicht alle Zieleigenschaften gemappt sind)</li></ul>
<ul class="wp-block-list">
<li>Mappings fehlerhaft sind (Wenn es keine geeignete Mapping-Methode oder Typkonvertierung findet)</li>
</ul>
</li>



<li>Leicht zu debuggender Mapping-Code (Oder manuell editierbar, z. B. im Falle eines Fehlers im Generator)</li>
</ul>



<h3 class="wp-block-heading">Fazit</h3>



<p>Zusammenfassend ist MapStruct ein leistungsfähiges und einfach zu bedienendes <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" rel="nofollow">Framework</a>, das die Entwicklung von Mapping-Code vereinfacht und beschleunigt. Vor allem, weil das Übertragen von Daten zwischen Objektmodellen meist eine wiederkehrende Aufgabe bei der Anwendungsentwicklung ist. Es ist eine gute Wahl, wenn man schnell und effizient Mapping-Funktionalitäten in Anwendungen integrieren möchte. Man kann es in Befehlszeilen-Builds (<a href="https://ceosbay.com/2022/12/22/erklaerung-maven/" target="_blank" rel="noreferrer noopener">Maven</a>, Gradle usw.) als auch in der bevorzugten IDE wie z.B. <a href="https://ceosbay.com/2023/03/10/erklaerung-intellij-idea/" target="_blank" rel="noreferrer noopener">IntelliJ</a> oder <a href="https://ceosbay.com/2023/03/19/erklaerung-eclipse/" target="_blank" rel="noreferrer noopener">Eclipse</a> verwenden.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/27/erklaerung-mapstruct/">MapStruct &#8211; Schnelle und sichere Objektmapper für saubere und wartungsfreundliche Java-Anwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/27/erklaerung-mapstruct/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1241</post-id>	</item>
		<item>
		<title>Apache Maven &#8211; Projekte inklusive Abhängigkeiten mühelos verwalten</title>
		<link>https://ceosbay.com/2022/12/22/erklaerung-maven/</link>
					<comments>https://ceosbay.com/2022/12/22/erklaerung-maven/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Thu, 22 Dec 2022 05:53:15 +0000</pubDate>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[1]]></category>
		<category><![CDATA[4]]></category>
		<category><![CDATA[Abhängigkeiten]]></category>
		<category><![CDATA[Artifact]]></category>
		<category><![CDATA[Build]]></category>
		<category><![CDATA[Central]]></category>
		<category><![CDATA[classes]]></category>
		<category><![CDATA[Configuration]]></category>
		<category><![CDATA[Cucumber]]></category>
		<category><![CDATA[Dependency]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Don&#039;t repeat yourself]]></category>
		<category><![CDATA[DRY]]></category>
		<category><![CDATA[Entwicklungsumgebung]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[installieren]]></category>
		<category><![CDATA[IntelliJ]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JFrog]]></category>
		<category><![CDATA[Klasse]]></category>
		<category><![CDATA[Klassen]]></category>
		<category><![CDATA[Kompilieren]]></category>
		<category><![CDATA[Konfiguration]]></category>
		<category><![CDATA[Konvention]]></category>
		<category><![CDATA[Manager]]></category>
		<category><![CDATA[Migration]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Ops]]></category>
		<category><![CDATA[Over]]></category>
		<category><![CDATA[Package]]></category>
		<category><![CDATA[Paket]]></category>
		<category><![CDATA[pom]]></category>
		<category><![CDATA[Programmierer]]></category>
		<category><![CDATA[Project]]></category>
		<category><![CDATA[Projekt]]></category>
		<category><![CDATA[Repo]]></category>
		<category><![CDATA[Repository]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[verifizieren]]></category>
		<category><![CDATA[verify]]></category>
		<category><![CDATA[xml]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1025</guid>

					<description><![CDATA[<p>Maven ist ein Open Source Build-Tool der Apache Software Foundation für die Projektverwaltung. Man kann damit Java-Projekte automatisieren. Es wurde für die Java-Programmierplattform entwickelt und ist in integrierten Entwicklungsumgebungen für Java, beispielsweise in Apache NetBeans, &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/12/22/erklaerung-maven/">Apache Maven &#8211; Projekte inklusive Abhängigkeiten mühelos verwalten</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Maven ist ein <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open Source</a> Build-Tool der Apache Software Foundation für die Projektverwaltung. Man kann damit Java-Projekte automatisieren. Es wurde für die Java-Programmierplattform entwickelt und ist in integrierten Entwicklungsumgebungen für Java, beispielsweise in Apache NetBeans, Eclipse, IntelliJ IDEA bereits implementiert, sodass oftmals keine separate Installation notwendig ist. und es ist aus einem Teil des Jakarta-Projekts hervorgegangen. Über die genannten IDE’s (Entwicklungsumgebungen) werde ich in zukünftigen Beiträgen schreiben.</p>



<p>Maven vereinfacht den Softwareerstellungsprozess, bietet ein einheitliches System für die Entwicklerarbeit, hochwertige Projektinformationen, Richtlinien für das Festlegen von Best Practices und erleichtert die Migration zu neuen Funktionen durch mehr Transparenz. Es beschreibt sowohl, wie Software gebaut wird, als auch deren Abhängigkeiten. Apache hilft sowohl bei der Verwaltung von Projekten und dient als Tool zum Verständnis. Es hilft also dabei, den Zustand eines Projekts zu organisieren und relativ schnell darzustellen.</p>



<p>Primär wird das Programm von Entwicklern und Projektmanagern bei Java-Anwendungsprojekten verwendet. Das Tool kann nützlich sein, um den Zustand eines Projektes auf einem Blick für technisch weniger versierte Personen, wie Führungspersönlichkeiten und Investoren, zusammenzufassen und gleichzeitig, um einige Prozesse bei der Softwareentwicklung zu automatisieren.</p>



<p>Maven basiert auf dem Objektmodell. Projekte werden als eine Pom.xml-Datei gespeichert. Das Tool verwaltet Projekt-Builds, Reportings und Dokumentationen aus einer zentralen XML-Informationsbasis. Mit der Standard-Plug-in-Architektur kann man es über den Standard-Input mit so gut wie jeder Anwendung nutzen und kollaborieren. Es vereinfacht den Prozess für das Erstellen von Java-Anwendungen erheblich, sodass der Nutzer den Status des Projektes viel einfacher einschätzen kann.</p>



<p>Der Name Maven kommt aus dem Jiddischen und bedeutet so viel wie „Sammler des Wissens“.</p>



<h3 class="wp-block-heading">Kurze Zeitreise</h3>



<p>Maven entstand in der Apache Software Foundation aus Frust über den Build-Prozess von Turbine. Es wurde bald zum Top-Level-Projekt aufgrund der Notwendigkeit, die Builds der vielen unterschiedlichen Projekte der Apache Software Foundation möglichst zu vereinheitlichen und somit auch zu vereinfachen.</p>



<p>Durch die vereinheitlichten Strukturen konnten Mitglieder unterschiedlicher Entwicklungsteams zwischen den einzelnen Teilprojekten wechseln und produktivere Arbeitsergebnisse erzielen. Dank der projektübergreifenden Standardisierung war es nicht mehr notwendig, sich in komplizierte Prozesse einzuarbeiten, um das Projekt ausführen und testen zu können.</p>



<p>Die Entwicklung von Maven 1 wurde im Jahr 2003 begonnen und am 13. Juli 2004 als Version 1.0 veröffentlicht. Die Umsetzung wurde jedoch sehr schnell realisiert, sodass einige Eigenheiten nicht bedacht wurden. Beispielsweise gab es Probleme bei der Performance sowie einen Überschuss an Konfigurationsdateien und -angaben, die es zu beherrschen galt. 2014 wurde das End of Life (EoL) von Maven 1 verkündet. Die letzte veröffentlichte Version ist 1.1 vom 25. Juni 2007.</p>



<p>Im Jahr 2005 wurde parallel damit begonnen, Maven 2 zu entwickeln, welches mit Version 2.0 am 19. Oktober 2005 fertiggestellt wurde. Mit dem Major-Release 2 wurde Maven von Grund auf überarbeitet und bekannte Probleme aus der Vorgängerversion wurden behoben. Aus diesem Grund sind Maven 1 und Maven 2 untereinander inkompatibel. Am 18. Februar 2014 wurde das End of Life von Maven 2 kommuniziert. Die letzte veröffentlichte Version ist 2.2.1 aus November 2009.</p>



<p>Die Entwicklung von Maven 3 begann im Jahr 2008, bei der man sich insbesondere auf die Kompatibilität zwischen Maven 2 und 3 konzentrierte.</p>



<p>In der zweiten Hälfte des Jahres 2021 wurden die Arbeiten an Maven 4 begonnen. Eine wesentliche Verbesserung ist die stark optimierte Unterstützung von Multi-Modul-Projekten.</p>



<h3 class="wp-block-heading">Wie funktioniert Maven?</h3>



<p>Maven benötigt zur Ausführung eine Java virtuelle Maschine (JVM) und ist aufgrund dieses Umstandes plattformunabhängig. Aus diesem Grund kann es auf jedem Betriebssystem ausgeführt werden, für das eine Java VM verfügbar ist.</p>



<p>Der Kern von Maven ist mit wenigen Megabyte als Paket kompakt gehalten. Die interne Struktur ist modular aufgebaut. Sämtliche Funktionen werden über Erweiterungen, sogenannte Plugins, bei der erstmaligen Verwendung über ein öffentliches im Internet verfügbares Repository, Maven Central genannt, nachgeladen und in einem lokalen Repository abgelegt.</p>



<p>Maven ist deklarativ und basiert auf zwei wesentlichen Paradigmen. Zum einen auf „Don’t Repeat Yourself“ (DRY bzw. Wiederhole dich nicht selbst) bedeutet sinngemäß im Kontext von Maven, dass man nicht bei jedem Projekt dieselben Build-Schritte neu definiert muss. Und auf „Convention over Configuration“ (CoC bzw. Konvention vor Konfiguration). Dies bezieht sich auf die Konfigurationsdatei (POM), mit denen Maven-Projekte beschrieben werden. Durch festgelegte Konventionen haben möglichst viele Konfigurationseinträge gemeingültige Vorbelegungen (Default-Werte), die für die meisten Anwendungsfälle bereits die erwünschten Ergebnisse produzieren.</p>



<p>Maven folgt den beiden beschriebenen Paradigmen über den gesamten Zyklus der Softwareerstellung konsequent. Eine wichtige Voraussetzung für eine erfolgreiche Automatisierung der einzelnen Schritte des Softwareerstellungsprozesses sind strikte Vereinheitlichungen, wie sie durch die beiden Paradigmen DRY und CoC geschaffen werden.</p>



<p>Obwohl Maven bereits sehr viele Vorgaben liefert, können Projekte diese Vorgaben an ihre tatsächlichen Bedürfnisse anpassen. Sowohl für künftige neuere Versionen von Maven als auch bei der Anbindung von Drittanbieterprodukten ist es eine bewährte Praxis, möglichst nahe am Maven-Standard zu bleiben.</p>



<h3 class="wp-block-heading">Wichtige Begriffe bei der Arbeit mit Maven</h3>



<p>Im Zusammenhang mit Maven werden wichtige Begriffe verwendet, mit denen man vertraut sein sollte, um effektiv damit zu arbeiten:</p>



<ul class="wp-block-list">
<li><strong>Artifacts</strong> (Artefakte) Diese werden in Maven sowohl Plugins als auch Abhängigkeiten zu externen Programmbibliotheken und die selbst erstellten binären Programmdateien des eigenen Softwareprojektes bezeichnet.</li>



<li><strong>Lifecycles</strong> (Lebenszyklen) Dies kann auch als Workflow oder Prozess verstanden werden. Maven kennt drei Lifecycles: „clean“, „site“ und „build“.</li>



<li><strong>Phases</strong> (Phasen) In diesen werden die einzelnen Schritte innerhalb eines „Lifecycles“ bezeichnet, die in festgelegter linearer Reihenfolge durchlaufen werden. Der Build-Lifecycle Default kennt 23 Schritte.</li>



<li><strong>Goals</strong> (Ziele) Sind einzelne Aktionen bzw. Funktionalitäten, die in einem Plugin bereitgestellt werden.</li>



<li><strong>Archetypes</strong> (Archetypen) In diesen können Gerüste für unterschiedlichste Arten von Softwareprojekten erstellt werden, deren Struktur dem Standard von Maven entspricht. Was auch als ein wesentliches Merkmal von Maven-Projekten ist. Die einheitliche Verzeichnisstruktur, auf die ich nachfolgend eingehen werde.</li>
</ul>



<h3 class="wp-block-heading">Verzeichnisstruktur</h3>



<p>my-project/ – Wurzelverzeichnis</p>



<p>pom.xml – Projektbeschreibung (Build-Logik)</p>



<p>src/ – alle Eingabedateien</p>



<p>main/ – Eingabedateien für die Erstellung des eigentlichen Produkts</p>



<p>java/ – Java-Quelltext-Dateien</p>



<p>resources/ – Projektdateien, die kein Java-Quellcode sind, aber für die Übersetzung oder zur Laufzeit benötigt werden, z. B. Bilder, <a href="https://ceosbay.com/2022/10/29/structured-query-language-sql/">SQL</a>, Java-Properties-Dateien etc.</p>



<p>test/ – Eingabedateien, die für automatisierte Testläufe benötigt werden</p>



<p>java/ – Testfälle, die als Java-Quellcode vorliegen, z. B. JUnit-Testfälle</p>



<p>resources/ – Zusätzliche Ressourcen für Testfälle</p>



<p>target/ – Alle durch Maven während des Build-Vorgangs erstellten Dateien</p>



<p>classes/ – kompilierte Java-Klassen</p>



<h3 class="wp-block-heading">Die Konfigurationsdatei &#8222;pom.xml&#8220;</h3>



<p>Die Konfigurationsdatei für Maven-Projekte hat die offizielle Bezeichnung &#8222;Project Object Model (POM)&#8220;und ist als pom.xml im Wurzelverzeichnis des Projektes abgelegt. Im Kontext des Build-Managements ist die pom.xml die Build-Logik, die von externen Werkzeugen wie dem Automatisierungsserver Jenkins aufgerufen wird. <a href="https://ceosbay.com/2022/12/18/erklaerung-jenkins/" target="_blank" rel="noreferrer noopener">Über Jenkins habe ich bereits geschrieben.</a></p>



<p>Die zwingenden Basisangaben für ein Projekt innerhalb einer POM sind die sogenannten GAV-Parameter, zuzüglich des Packagetyps. GAV steht für (G) = GroupID, (A) = ArtifactId und (V) = Version. Die GAV-Koordinaten müssen für jedes Projekt eindeutig sein und dürfen nicht mehrfach Verwendung finden.</p>



<h3 class="wp-block-heading">Abhängigkeiten bzw. (Dependency Management)</h3>



<p>Einer der wichtigsten Faktoren für den Erfolg von Maven ist der einfache Umgang mit fremden Abhängigkeiten, sogenannten 3rd Party Libraries. Externe Abhängigkeiten werden in der pom.xml notiert und über ihre GAV-Koordinaten eindeutig und transitiv aufgelöst. Die definierten Abhängigkeiten werden nicht physisch in die Versionsverwaltung mit aufgenommen, sondern während des Buildvorgangs im Projekt-Ausgabeverzeichnis target bereitgestellt.</p>



<p>Bei der Verwendung eines Artefaktes prüft Maven, ob es bereits lokal im Repository vorhanden ist. Das lokale Repository ist ein verstecktes Verzeichnis mit der Bezeichnung .m2/repository und findet sich im home-Verzeichnis des am Betriebssystem angemeldeten Nutzers.</p>



<p>Wird von Maven das angeforderte Artefakt im lokalen Repository nicht gefunden, wird in einem öffentlichen Remote-Repository danach gesucht. Bei erfolgreicher Suche wird das Artefakt im lokalen Repository verfügbar gemacht. Das Wichtigste öffentlich frei verfügbare Repository für Java-Artefakte lautet &#8222;Maven Central&#8220; und wird von dem Unternehmen Sonatype betrieben.</p>



<p>Es besteht die Möglichkeit, einen eigenen Repository-Server zu betreiben, um selbst erstellte Artefakte im Unternehmen bzw. im Intranet für andere Projekte bereitzustellen oder diese über das Internet zur Verfügung zu stellen.</p>



<p>Wichtige Implementierungen zum Hosten eigener Artefakte sind Sonatype Nexus OSS oder JFrog Artifactory, für die es sowohl freie Community Versionen als auch kommerzielle Enterprise-Varianten gibt. Diese Lösungen können neben den verschiedenen Java-Artefakten auch andere Formate wie beispielsweise Docker Images, RubyGems, .NET nuget oder NPM verwalten. Maven Central, das größte Open-Source-Repository, wird mit Nexus OSS betrieben.</p>



<h3 class="wp-block-heading">Maven-Lebenszyklen (Lifecycles)</h3>



<p>Wie bereits vorher erwähnt, kommen in einem Maven Workflow verschiedene Lebenszyklen zum Einsatz. Diese sind:</p>



<ul class="wp-block-list">
<li><strong>clean</strong> (Zum Löschen von Ergebnissen vorheriger Builds, mit den Phasen pre-clean, clean, post-cl</li>



<li><strong>build</strong> (default) (Zum Erstellen eines Projekts im Rahmen der verschiedenen Phasen</li>



<li><strong>site</strong> (Zum Erstellen von Webseiten zur Projektdokumentation und Reports, mit den Phasen pre-site, site, post-site, site-deploy.</li>
</ul>



<p>Maven geht dabei jeweils von einem Zyklus aus, der bei der Softwareerstellung im Allgemeinen durchlaufen wird. Es muss aber nicht jedes Softwareprojekt alle Phasen des im Folgenden verkürzt dargestellten Default-Zyklus verwenden. Die Standardfunktionalität kann durch die Einbindung von zusätzlichen Plug-ins an die entsprechende Phase erweitert werden.</p>



<ul class="wp-block-list">
<li><strong>validate</strong> bzw. validieren (Es wird überprüft, ob die pom.xml und die Projektstrukturen vollständig, valide und gültig sind.</li>



<li><strong>compile</strong> bzw. kompilieren (In dieser Phase wird der Quellcode kompiliert.</li>



<li><strong>test</strong> bzw. testen (Hier wird der kompilierte Code durch das eingebundene Unit-Test-<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> (z. B. JUnit, TestNG) getestet. Maven berücksichtigt dabei in späteren Zyklen, dass Testklassen normalerweise nicht in der auszuliefernden Software vorhanden sind.</li>



<li><strong>package</strong> bzw. verpacken (Das Kompilat wird – ggf. mit anderen nicht kompilierbaren Dateien – zur Weitergabe verpackt. Häufig handelt es sich dabei um eine JAR-Datei.</li>



<li><strong>integration-test</strong> bzw. Integrationstests (Bereitstellen der programmatisch erstellten Integrationstests mittels Behavior Driven Development (z. B. Cucumber, jGiven).</li>



<li><strong>verify</strong> bzw. Gültigkeitsprüfung des Softwarepakets (Überprüfung der Artefakte, ob die festgelegten Spezifikationen erfüllt wurden, D.H. die bereitgestellten Integrationstests werden ausgeführt.</li>



<li><strong>install</strong> bzw. das Kopieren in die lokale Maven-Repository (Kopiert das Softwarepaket ins lokale Maven-Repository, um es dann in anderen lokalen Maven-Projekten verwenden zu können. Dies ist insbesondere für modulare Projekte von Bedeutung.</li>



<li><strong>deploy</strong> bzw. anwenden (Lädt das Softwarepaket in ein entferntes Maven-Repository hoch, wonach es auch anderen Entwicklern global zur Verfügung steht.</li>
</ul>



<h3 class="wp-block-heading">Fazit</h3>



<p>Hierbei kann man sich relativ kurzfassen. Ein Software-Projekt sollte stehts mit einem vernünftigen Buildmanagement ausgestattet sein. Das <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open-Source</a>-Tool bietet sich dabei vor allem bei Java-Projekten an, zumal es selbst auf Java basiert. Es ist ebenso möglich, Maven durch selbst entwickelte Plugins zu erweitern. Aufgrund dieser Eigenschaft wird es auch als Plugin Execution Framework bezeichnet. Man kann damit die Kollaboration bei der Entwicklung durch Programmierer und Projektmanager mit verschiedensten Skill-Sets wesentlich erleichtern bzw. vereinfachen.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/12/22/erklaerung-maven/">Apache Maven &#8211; Projekte inklusive Abhängigkeiten mühelos verwalten</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2022/12/22/erklaerung-maven/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1025</post-id>	</item>
	</channel>
</rss>
