Hallo zusammen,
ich nehme derzeit an einer Akademie zum Java Fullstack Software Engineer teil. In den kommenden Wochen möchte ich hier meine Mitschrift, so gut es geht, aufzeichnen und mitteilen. Hier ist das, was ich vom zweiten Tag gelernt und behalten habe:
Block 01/Tag2 Einführung in die Tool-Landschaft (Eclipse, GIT/GitLab, Build-Prozess mit Maven/Gradle)
Es gibt verschidene Java Programmierungembungen (IDE - Integration Development Environment)
Eine IDE beinhaltet die Programmierungebung, Kompilier, Laufzeitumgebung, Unterstützung von Git, ….
Die einfachste IDE sind die Java Befehle auf der Konsole.
Eclipse legt Workspaces an. Das sind Verzeichnisse in denen sich mehrere Projekte befinden.
In .metadata wird alles beschrieben, was die Eclipse-Einstellungen betrifft, .z.B. die Historie. Diese Metadaten brauchen nicht zwingend mit kopiert werden, wenn man den Code weiter leitet.
In Itellij ist der Workspace einfach nur ein Verzeichnis. Die Historie steckt dort in den Repositories drin.
Projekte aus Eclipse und Intellij können ausgetauscht werden.
Gitlab
Wir erstellen auf unserem Workbench Account in Gitlab ein erstes Projekt:
Folgende Komandos werden nur sichtbar, wenn man die Readme-Datei nicht mit anlegt:
Wir legen einen SSH-Key an:
Jetzt erstellen wir unsere erste Datei (es ist die .gitlab-ci.yml Datei) in unserem Projekt auf Gitlab:
Die Datei wurde erstellt, die Pipeline läuft aber noch:
(Die läuft sich hier zu Tode, weil wir keinen "Runner" erstellt haben. Aber immerhin haben wir unsere erste Datei im Projekt erstellt.)
Jetzt wird das Projekt von Gitlab auf den lokalen Rechner (bzw. Terminalserver) geholt:
Nun wird das Projekt vom Gitlab Server auf den lokalen (Terminal-)Server geholt:
Git clone [email protected]:achim.mertens_1/block01-proj01.git
Git Staging/Repository/Gitlab
Der Repository ist die Sichtweise, wie git es sieht. Es wird durch .git representiert.
Gucken ist erlaubt, aber niemals die .git-Dateien anfassen!!!
Besser:
git config -l
Unterschied Main Master:
Main ist auf dem Server, Master lokal (mit Verweis, wo der Server liegt). Beide beinhalten aber das gleiche und können sich synchronisieren.
Ich habe eine Datei in das lokale Verzeichnis kopiert. Git sieht die, hat sie aber noch nicht eingecheckt.
Mit git add wird keine "Kopie im Repository" angelegt, sondern die Datei wird "für das Repository" getaggt, es wird "gestaged, also die Bühne von Gitlab betreten.
Durch das Committen wird die Datei freigegeben für die Synchronisation mit dem Server. Es wird von der lokalen Staging auf die globale gehoben.
Erst mit git push landet die Datei auf dem Server.
Binäre Dateien brauchen nicht hochgeladen zu werden, da sie aufgrund des Java Codes reproduziert werden können. Es gibt nur unnötig Balast.
Es sollten neutrale Projekte hochgeladen werden.
Durch das Compillieren erzeugen wir den "de" Ordner mit der Unterstruktur und Java-Klasse drin. Das braucht aber nicht auf Gitlab:
Daher bauen wir uns eine .gitignore-Datei und fügen dort "de/" hinzu:
Tipp: Wenn man lokal Dateien löscht oder verschiebt, bekommt Git das nicht mit. Besser ist es, die Git-Befehle dafür zu verwenden
Hier ist eine grobe Übersicht der git Befehle und wo welche Umgebungen sind:
Eclipse
Wir starten Eclipse und legen ein neues Projekt an. Sollte Eclipse auf einen anderen Workspace zeigen, können wir diesen umswitchen:
Das sind alles Views:
Perspektiven sind Anordnungen von Views zueinander. Diese kann man wieder zurück setzten:
Build Tools:
Konvention geht vor Konfiguration. (z.B. Package Namen werden klein geschrieben - sonst gibt's Fehlermeldungen)
Ant: War zuerst da und kann Build-Scripte bauen
Maven: Hat zusaätzlich eine Struktur
Gradle: Hat so eine Art Programmiersprache für die Konfiguration
Das Ziel der Bild-Tools ist ausführbare Klassendateien zu haben:
Wir erstellen ein neues Maven Projekt:
Jetzt verbindet sich Eclipse mit Nexus und sucht nach den Archtypes:
Group-ID ist der Package Namen
Artefakt-ID ist der Name des Projektes:
Maven erzeugt eine Programmierstrukur, sowie die Konfigurationsdatei pom.xml
Wir müssen leider die pom.xml anpassen und erweitern um:
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
Weitere Links und Zusammenfassung
GitLab einrichten:
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/d/Benutzerdaten/Hiltrop_Klaus/.ssh/id_rsa):
Created directory '/d/Benutzerdaten/Hiltrop_Klaus/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /d/Benutzerdaten/Hiltrop_Klaus/.ssh/id_rsa
Your public key has been saved in /d/Benutzerdaten/Hiltrop_Klaus/.ssh/id_rsa.pub
cat ~/.ssh/id_rsa.pub
SSH-RSA-Schlüssel kopieren und im GitLab-Server unter den User-Profil als SSH-Key eintragen
Arbeiten mit dem Git-Client
----------------------------------
Git global setup
-----------------
git config --global user.name "Hans-Joachim Blanke"
git config --global user.email "[email protected]"
Create a new repository
--------------------------------
git clone https://aad-wbench.workbench.telekom.de/gitlab/blanke/block01-proj01.git
cd block01-proj01
git switch -c main
touch README.md
git add README.md
git commit -m "add README"
git push -u origin main
Push an existing folder
--------------------------
cd existing_folder
git init --initial-branch=main
git remote add origin https://aad-wbench.workbench.telekom.de/gitlab/blanke/block01-proj01.git
git add .
git commit -m "Initial commit"
git push -u origin main
Push an existing Git repository
----------------------------------
cd existing_repo
git remote rename origin old-origin
git remote add origin https://aad-wbench.workbench.telekom.de/gitlab/blanke/block01-proj01.git
git push -u origin --all
git push -u origin --tags
Projekt clonen (Es lokal auf unseren Rechner bringen)
-------------------------------------------------------------
01. URL [email protected]:blanke/block01-proj01.git (GITLAB)
02. GITBASH (GIT lokal) -> /c/kurse-2021/telekom-agil-2021-e-online/my-workspace/block01-git-maven-ide
- Clone: git clone [email protected]:blanke/block01-proj01.git
Git-Lab-Config
Global (UserVerzeichnis)
-> %HOME%/git Global Configuration (D:\Benutzerdaten\Kennung)
Lokal (Projekt)
-> Verzeichnis: .git/config
git config -l
git config --global -l
git config --system -l
git config --list --show-origin
git config --list --show-origin --show-scope
Pipeline (.gitlab-ci.yml)
---------
#.gitlab-ci.yml
stages:
- compile
- test
before_script:
# - export NO_PROXY="docker, easyng-wbench.devops.telekom.de, *.telekomcloud.com, 127.0.0.1, localhost, *.telekom.de, easyng-wbench.psst.t-online.corp, *.t-online.corp, otc-service.com, *.t-internal.com, devlab.de.tmo"
# - export HTTP_PROXY="http://proxy-vip.infrastructure.psst.t-online.corp:3128"
# - export HTTPS_PROXY=$HTTP_PROXY
- echo " Doit-Befor"
- java -version
default:
tags:
- run_shell
say-hello:
stage: test
script:
- echo "Hello"
say-world:
stage: compile
script:
- echo "World"
say-user:
stage: test
script:
- echo "Hello, $GITLAB_USER_LOGIN!"
----------
Besten Dank an unseren super Trainer:
Trainer: Hans-Joachim Blanke [email protected]
Links:
https://demo.firepad.io/#telekom-agil-2021-22-e
https://4point.de/seminar/telekom-agil-2021-22-e/
View or trade
BEER
.Hey @achimmertens, here is a little bit of
BEER
from @pixresteemer for you. Enjoy it!Learn how to earn FREE BEER each day by staking your
BEER
.