- Integration
-
Zusammenfügen von mehreren Komponenten zu einer Software
-
FALSCH: dann würde es eher Continuous Assembly heißen
-
Wenn mehrere Entwickler parallel am gleichen Code arbeiten:
Wie stellen wir sicher, dass die Software, die bisher jeder nur lokal erstellt hat, auch funktioniert wenn alle Änderungen zusammenfließen?
- Merge-Konflikte
-
Entwickler haben gleichzeitig die gleiche Datei bearbeitet
- Kompilier-Konflikte
-
keine Merge-Konflikte, aber die merged Codebasis kompiliert nicht
- Test-Konflikte
-
keine Merge-Konflikte, keine Kompilier-Konflikte, aber die Tests laufen nicht mehr erfolgreich
HelloWorldApp.java
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
Kompilieren
javac HelloWorldApp.java
Ausführen
java -cp . HelloWorldApp
java -classpath . HelloWorldApp
HelloWorldApp.java
import org.apache.commons.lang3.StringUtils;
class HelloWorldApp {
public static void main(String[] args) {
String msg = "Hello World!";
msg = StringUtils.substring(msg, 6)
System.out.println(msg);
}
}
Kompilieren
$ javac -cp lib/commons-lang.jar HelloWorldApp.java
Ausführen
$ java -cp lib/commons-lang.jar;. HelloWorldApp
Note
|
Bei Ausführen unter UNIX: java -cp lib/commons-lang.jar:. HelloWorldApp |
Kommandozeile:
javac src/main/java/net/kleinschmager/dhbw/tfe15/painground/PaingroundApplication.java \ src/main/java/net/kleinschmager/dhbw/tfe15/painground/ui/MainUI.java \ src/main/java/net/kleinschmager/dhbw/tfe15/painground/ui/views/MemberProfileList.java \ src/main/java/net/kleinschmager/dhbw/tfe15/painground/persistence/model/MemberProfile.java \ src/main/java/net/kleinschmager/dhbw/tfe15/painground/persistence/repository/MemberProfileRepository.java
IDE: Menü Projekt > Bereinigen
Kommandozeile
jar cvmf painground.jar src/main/java/net/kleinschmager/dhbw/tfe15/painground/PaingroundApplication.java \ src/main/java/net/kleinschmager/dhbw/tfe15/painground/ui/MainUI.java \ src/main/java/net/kleinschmager/dhbw/tfe15/painground/ui/views/MemberProfileList.java \ src/main/java/net/kleinschmager/dhbw/tfe15/painground/persistence/model/MemberProfile.java \ src/main/java/net/kleinschmager/dhbw/tfe15/painground/persistence/repository/MemberProfileRepository.java
IDE
-
siehe nächste Folie
-
Testen
-
Dokumentation erzeugen
-
Word zu PDF?
-
xyz zu HTML?
-
-
Upload zum Kunden
-
Bereitstellen DEMO System
In software, when something is painful, the way to reduce the pain is to do it more frequently, not less.
-
Code (und Konfiguration) stehen unter Versionsverwaltung
-
Build-Prozess ist automatisiert
-
Regelmäßiges einchecken|commit
-
mind. täglich
-
-
Tests werden gleichzeitig entwickelt (als Code)
-
stehen ebenfalls unter Versionsverwaltung
-
am besten im gleichen Repository wie der Code selbst
-
-
Wichtige Tests sollten bei jedem commit ausgeführt werden
-
andere wenigstens regelmäßig, z.B. nächtlich
-
-
eine produktionsnahe Testumgebung steht immer bereit
-
Einfacher Zugriff auf Ergebnisse auch für Nicht-Entwickler
Continuous Integration doesn’t get rid of bugs, but it does make them dramatically easier to find and remove.
- Continuous Integration
-
regelmäßiges Kompilieren, Verpacken, Testen, Bereitstellen einer Software
-
Fehler früher finden (Konflikte vermeiden)
-
Feedback für das Entwickler-Team
-
Feedback für das Qualitäts-Management
-
Feedback für die Tester
Continuous Delivery is a software development discipline where you build software in such a way that the software can be released to production at any time.