//PLM-Jar-Builderbydargmuesli

PLM-Jar-Builder

Creates .jar files for university Kassel eecs/plm Java projects.

0
1
0
PowerShell

Build status

PLM-Jar-Builder

Erstellt .jar-Dateien für EECS/PLM Java-Projekte an der Universität Kassel.

Inhaltsverzeichnis

  1. undefinedDisclaimerundefined
  2. undefinedHintergrundundefined
  3. undefinedInstallationundefined
  4. undefinedBenutzungundefined
  5. undefinedFunktionundefined
  6. undefinedKonfigurationundefined
  7. undefinedHinweiseundefined
  8. undefinedModuleundefined

Disclaimer

Dieses PowersShell-Tool ist weder die Lösung einer Aufgabe selbst, noch soll es dem/der Studierenden das Erlernen des Umgangs mit der Konsole verhindern. Der Einsatz ist eigenverantwortlich.

Hintergrund

Im Rahmen der Lehrveranstaltung “Einführung in die Programmierung” im Fachbereich 16 (Elektrotechnik/Informatik) der Universität Kassel müssen Übungen bearbeitet und abgegeben werden.
Die Bearbeitung umfasst das Anfertigen von Dokumenten und Java-Programmen, die nur als jar-Archiv zusammengefasst hochgeladen/abgegeben werden können.
Daraus entstand die Idee für einen Assistenten, der einem beim Erstellen, Hoch- und Herunterladen von .jar-Dateien hilft.

Installation

Zu Installation müssen in einem PowerShell-Fenster die zwei folgenden Befehle ausgeführt werden:

Install-Module "PSDepend" -Scope "CurrentUser" -Force
Invoke-PSDepend -InputObject @{"dargmuesli/PLM-Jar-Builder" = "latest"} -Install -Force

Benutzung

In erster Linie sollte der Assistent verwendet werden, der durch die möglichen Funktionen des Moduls führt.
Dazu in einem PowerShell-Fenster einfach folgenden Befehl eingeben:

Invoke-PlmJarBuilder

Screenshot

Screenshot

Alternativ können auch einzelne Module direkt angesprochen werden.

Funktion

Es wird eine Ordnerstruktur ähnlich zur folgenden vorausgesetzt:

Übungen\
├── Aufgabenblatt 1\
│   ├── Lösung\
│   │   ├── Teilaufgabe\
│   │   │   ├── Teilaufgabe.class
│   │   │   ├── Teilaufgabe.java
|   |   |   ⇣
│   │   ├── 123456789_01.jar
│   │   ├── Lösung 1.odt
│   │   ├── Lösung 1.pdf
│   │   ├── Teilaufgabe.odg
│   │   ├── Teilaufgabe.pdf
|   |   ⇣
│   ├── Aufgabenblatt 1.pdf
|   ⇣
├── Aufgabenblatt 2\
⇣

Die .jar-Datei wird standardmäßig beim Generieren überschrieben.
Dabei werden gewisse Dateitypen (.odt, .class), sowie IDE-abhängige Ordner (.idea\) ignoriert.

Konfiguration

Die Standardwerte, die bei der Ausführung vom PLM-Jar-Builder genutzt werden, können in einer Konfigurationsdatei angepasst werden.
Die Konfigurationsdatei befindet sich im Modul-Ordner, meist hier: %USERPROFILE%\Documents\WindowsPowerShell\Modules\plm-jar-builder\PLM-Jar-Builder\Config\PLM-Jar-Builder.json

Folgende Einstellungsmöglichkeiten gibt es:

Custom

Einstellungen, die dem Benutzer die Eingabe von Funktionsparametern ersparen, aber die Programmfunktion nicht grundlegend ändern.

  • undefinedExerciseRootPathundefined
    Der Pfad zum Ordner, in dem sich die Aufgabenordner (Aufgabenblatt 1, …) befinden.
    Standardwert: %MyDocuments%\Universität\Informatik\Semester 1\Einführung in die Programmierung\Übungen

  • undefinedDownloadPathundefined
    Der Pfad zum Ordner, in den .jar-Dateien heruntergeladen werden.
    Standardwert: %Downloads% (Registry-Schlüssel)

  • undefinedExcludeundefined
    Dateiendungen als Regex, die nicht in die .jar-Datei gepackt werden sollen.
    Standardwert: ".*\.class", ".*\.eml", ".*\.iml", ".*\.jar", ".*\.odt", ".*\.odg", ".*\.ods", ".*\.old", "[^\\]+\\\.idea\\.*", ".*\\In\.java", "[^\\]+\\out\\.*", ".*\\Out\.java"

  • undefinedNoNoteundefined
    Festlegen, ob eine Markdown-Notiz bezüglich dieses Moduls mit in die .jar-Datei gepackt werden soll.
    Standardwert: false

PLM

Daten, die im Browser-Authentifizierungsfenster angegeben werden müssen, bevor man die PLM-Seite überhaupt sieht.

  • undefinedUsernameundefined
    Der PLM-Benutzername.
    Standardwert: ""

  • undefinedEncryptedPasswordundefined
    Eine verschlüsselte Version des PLM-Passworts.
    Standardwert: ""

User

Daten, die zur Anmeldung direkt auf der PLM-Seite genutzt werden.

  • undefinedMatriculationNumberundefined
    Die Matrikelnummer, die als Benutzername für die PLM-Seite im Dateinamen der .jar-Datei vorkommen soll.
    Standardwert: ""

  • undefinedEncryptedPasswordundefined
    Eine verschlüsselte Version des Benutzerpassworts.
    Standardwert: ""

Default

Einstellungen, die die Funktion des Moduls grundlegend ändern, weil sie Änderungen an der vorgegebenen Ordnerhierarchie darstellen.

  • undefinedSolutionPathundefined
    Der Pfad zum Order innerhalb des Aufgabenordners, der die Lösung enthält.
    Darin sollten alle Dateien sein, die in die .jar-Datei gepackt werden sollen.
    Standardwert: "Lösung"

  • undefinedExerciseSheetRegexundefined
    Der reguläre Ausdruck, nach dem Aufgabenordner und Übungsnummern gefunden werden.
    Standardwert: "^Aufgabenblatt (\\d{1,2})$"

  • undefinedJarFileRegexundefined
    Der reguläre Ausdruck, nach dem .jar-Dateien, Matrikelnummern und Übungsnummern gefunden werden.
    Standardwert: "^(\\d+|.*)_(\\d{2}).jar$"

Hinweise

Verschlüsselte Passwörter

Der Wert für das verschlüsselte Passwort kann über folgendes Kommando erstellt werden:

'passwort' | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString

Dass Apostrophe das Passwort einschließen ist notwendig, um gewisse Sonderzeichen im Passwort zu ermöglichen.
Das Passwort kann nur vom selben Windows-Account wieder entschlüsselt werden, mit dem es verschlüsselt wurde.

Installation von Abhängigkeiten

Die Installation von Abhängigkeiten wird über das PowerShell-Modul PSDepend realisiert. Die dortige, aktuelle Implementierung der Abhängigkeitsauflösung von GitHub-Projekten nicht wirklich ausgefeilt ist, dauert es oft lange bis alle Abhängigkeiten installiert sind. Besonders bei der Ausführung des Assistenten (Invoke-PlmJarBuilder) stört dies, sodass die Option -SkipDependencyCheck eingerichtet wurde, die die Abhängigkeitsauflösung verhindert. Gleichzeitig wird aber auch die Suche nach Updates übersprungen.

Der PLM-Jar-Builder nutzt u.a. das Projekt Dargmuesli/PowerShell-Lib von GitHub, das mit der derzeitigen Implementierung bei jeder Ausführung des Assistenten neu heruntergeladen wird. Es gibt bereits einen neue Version der GitHub-Installationsmethode über PSDepend, aber diese wurde dem Projekt noch nicht offiziell hinzugefügt.

Modules

[beta]v0.14.0