Artem Eger Build-Systeme in java Maven & ANT · 2018. 1. 24. · Maven & ANT Artem Eger (1)...

31
Build-Systeme in java Maven & ANT Artem Eger

Transcript of Artem Eger Build-Systeme in java Maven & ANT · 2018. 1. 24. · Maven & ANT Artem Eger (1)...

Page 1: Artem Eger Build-Systeme in java Maven & ANT · 2018. 1. 24. · Maven & ANT Artem Eger (1) Motivation und Überblick (2) Bauen mit Ant (3) Praxisbeispiel Ant (4) Bauen mit Maven

Build-Systeme in javaMaven & ANT

Artem Eger

Page 2: Artem Eger Build-Systeme in java Maven & ANT · 2018. 1. 24. · Maven & ANT Artem Eger (1) Motivation und Überblick (2) Bauen mit Ant (3) Praxisbeispiel Ant (4) Bauen mit Maven

(1) Motivation und Überblick

(2) Bauen mit Ant

(3) Praxisbeispiel Ant

(4) Bauen mit Maven

(5) Praxisbeispiel Maven

(6) Ausblick

Gliederung

2/3102.11.2016

Page 3: Artem Eger Build-Systeme in java Maven & ANT · 2018. 1. 24. · Maven & ANT Artem Eger (1) Motivation und Überblick (2) Bauen mit Ant (3) Praxisbeispiel Ant (4) Bauen mit Maven

Was ist ein Build?

(1) Motivation und Überblick

3/3102.11.2016

Page 4: Artem Eger Build-Systeme in java Maven & ANT · 2018. 1. 24. · Maven & ANT Artem Eger (1) Motivation und Überblick (2) Bauen mit Ant (3) Praxisbeispiel Ant (4) Bauen mit Maven

1. Kompilieren:

Übersetzung von Quelltext in Maschinencode

(1) Motivation und Überblick

4/3102.11.2016

Page 5: Artem Eger Build-Systeme in java Maven & ANT · 2018. 1. 24. · Maven & ANT Artem Eger (1) Motivation und Überblick (2) Bauen mit Ant (3) Praxisbeispiel Ant (4) Bauen mit Maven

1. Kompilieren

2. Linking:

Verknüpfen von Maschinencode und Bibliotheken zu einer

ausführbaren Datei

(1) Motivation und Überblick

5/3102.11.2016

Page 6: Artem Eger Build-Systeme in java Maven & ANT · 2018. 1. 24. · Maven & ANT Artem Eger (1) Motivation und Überblick (2) Bauen mit Ant (3) Praxisbeispiel Ant (4) Bauen mit Maven

1. Kompilieren

2. Linking

3. Building:

Kompilieren + Linking + etc.

(1) Motivation und Überblick

6/3102.11.2016

Page 7: Artem Eger Build-Systeme in java Maven & ANT · 2018. 1. 24. · Maven & ANT Artem Eger (1) Motivation und Überblick (2) Bauen mit Ant (3) Praxisbeispiel Ant (4) Bauen mit Maven

Welche Schritte gehören zu einem Build?

(1) Motivation und Überblick

7/3102.11.2016

Page 8: Artem Eger Build-Systeme in java Maven & ANT · 2018. 1. 24. · Maven & ANT Artem Eger (1) Motivation und Überblick (2) Bauen mit Ant (3) Praxisbeispiel Ant (4) Bauen mit Maven

• Generierung von Quelltext

• Kompilieren des Quelltextes

• Kompilieren der Tests

• Ausführen der Tests

• Packaging

• Generierung der Dokumentation

(1) Motivation und Überblick

8/3102.11.2016

Page 9: Artem Eger Build-Systeme in java Maven & ANT · 2018. 1. 24. · Maven & ANT Artem Eger (1) Motivation und Überblick (2) Bauen mit Ant (3) Praxisbeispiel Ant (4) Bauen mit Maven

Wofür brauchen wir Buildsysteme?

(1) Motivation und Überblick

9/3102.11.2016

Page 10: Artem Eger Build-Systeme in java Maven & ANT · 2018. 1. 24. · Maven & ANT Artem Eger (1) Motivation und Überblick (2) Bauen mit Ant (3) Praxisbeispiel Ant (4) Bauen mit Maven

• Ant ist Java zentriert

• Definiert wird in XML im Buildfile

• Projekt besteht aus einem oder mehreren Targets

• Targets bestehen aus einem oder mehreren Tasks

(2) Bauen mit Ant

10/3102.11.2016

Page 11: Artem Eger Build-Systeme in java Maven & ANT · 2018. 1. 24. · Maven & ANT Artem Eger (1) Motivation und Überblick (2) Bauen mit Ant (3) Praxisbeispiel Ant (4) Bauen mit Maven

02.11.2016 11/31

Page 12: Artem Eger Build-Systeme in java Maven & ANT · 2018. 1. 24. · Maven & ANT Artem Eger (1) Motivation und Überblick (2) Bauen mit Ant (3) Praxisbeispiel Ant (4) Bauen mit Maven

Ant Projekte erfordern eine

„build.xml“

Jede „build.xml“ beginnt mit der Definition der XML-Version für den Parser

02.11.2016 12/31

(2) Bauen mit Ant

<?xml version="1.0" encoding="UTF-8">

Page 13: Artem Eger Build-Systeme in java Maven & ANT · 2018. 1. 24. · Maven & ANT Artem Eger (1) Motivation und Überblick (2) Bauen mit Ant (3) Praxisbeispiel Ant (4) Bauen mit Maven

Anschließend muss das Projekt

angelegt werden

Ein Projekt kann drei Attribute haben:

name default basedir

02.11.2016 13/31

(2) Bauen mit Ant

<?xml version="1.0" encoding="UTF-8">

<project name=”TestProjekt” default=”test.ant” basedir=”.”>

</project>

Page 14: Artem Eger Build-Systeme in java Maven & ANT · 2018. 1. 24. · Maven & ANT Artem Eger (1) Motivation und Überblick (2) Bauen mit Ant (3) Praxisbeispiel Ant (4) Bauen mit Maven

Hiernach können Targets angelegt

werden

Targets können folgende Attribute haben

name depends if unless description

02.11.2016 14/31

(2) Bauen mit Ant

<?xml version="1.0" encoding="UTF-8">

<project name=”TestProjekt” default=”test.ant” basedir=”.”>

<target name=”test.ant” description=”A simple build file to test ant.”>

</target>

</project>

Page 15: Artem Eger Build-Systeme in java Maven & ANT · 2018. 1. 24. · Maven & ANT Artem Eger (1) Motivation und Überblick (2) Bauen mit Ant (3) Praxisbeispiel Ant (4) Bauen mit Maven

Im Target können Tasks definiert

werden

Es wird unterschieden zwischen Core Tasks und Optional Tasks

02.11.2016 15/31

(2) Bauen mit Ant

<?xml version="1.0" encoding="UTF-8">

<project name=”TestProjekt” default=”test.ant” basedir=”.”>

<target name=”test.ant” description=”A simple build file to test ant.”>

<echo message=”Ant is working properly” />

</target>

</project>

Page 16: Artem Eger Build-Systeme in java Maven & ANT · 2018. 1. 24. · Maven & ANT Artem Eger (1) Motivation und Überblick (2) Bauen mit Ant (3) Praxisbeispiel Ant (4) Bauen mit Maven

• Wenn keine Defaultparameter benutzt wurden kann der

Buildprozess folgendermaßen gestartet werden:

ant –buildfile mybuildfile.xml test.ant

• Falls alles Default benannt ist reicht ein einfaches:

ant

(2) Bauen mit Ant

16/3102.11.2016

Page 17: Artem Eger Build-Systeme in java Maven & ANT · 2018. 1. 24. · Maven & ANT Artem Eger (1) Motivation und Überblick (2) Bauen mit Ant (3) Praxisbeispiel Ant (4) Bauen mit Maven

(3) Praxisbeispiel ANT

17/3102.11.2016

Page 18: Artem Eger Build-Systeme in java Maven & ANT · 2018. 1. 24. · Maven & ANT Artem Eger (1) Motivation und Überblick (2) Bauen mit Ant (3) Praxisbeispiel Ant (4) Bauen mit Maven

Kernkonzepte – Plugins und Goals

mvn archetype:generate

(4) Bauen mIt Maven

18/3102.11.2016

Page 19: Artem Eger Build-Systeme in java Maven & ANT · 2018. 1. 24. · Maven & ANT Artem Eger (1) Motivation und Überblick (2) Bauen mit Ant (3) Praxisbeispiel Ant (4) Bauen mit Maven

Kernkonzepte – Maven Default Lifecycle

mvn install

(4) Bauen mIt Maven

19/3102.11.2016

Page 20: Artem Eger Build-Systeme in java Maven & ANT · 2018. 1. 24. · Maven & ANT Artem Eger (1) Motivation und Überblick (2) Bauen mit Ant (3) Praxisbeispiel Ant (4) Bauen mit Maven

Kernkonzepte – Lifecycle Phases

(4) Bauen mIt Maven

20/3102.11.2016

Page 21: Artem Eger Build-Systeme in java Maven & ANT · 2018. 1. 24. · Maven & ANT Artem Eger (1) Motivation und Überblick (2) Bauen mit Ant (3) Praxisbeispiel Ant (4) Bauen mit Maven

Kernkonzepte – Coordinates

(4) Bauen mIt Maven

21/3102.11.2016

Page 22: Artem Eger Build-Systeme in java Maven & ANT · 2018. 1. 24. · Maven & ANT Artem Eger (1) Motivation und Überblick (2) Bauen mit Ant (3) Praxisbeispiel Ant (4) Bauen mit Maven

Kernkonzepte – Repository and Dependency

https://mvnrepository.com

(4) Bauen mIt Maven

22/3102.11.2016

Page 23: Artem Eger Build-Systeme in java Maven & ANT · 2018. 1. 24. · Maven & ANT Artem Eger (1) Motivation und Überblick (2) Bauen mit Ant (3) Praxisbeispiel Ant (4) Bauen mit Maven

Der erste Schritt ist einen Archetype

auszuwählen

Dann wird dafür automatisch der entsprechende Source Code und die passende Struktur generiert

Entweder einfach grafisch mit Eclipse

Oder….

02.11.2016 23/31

(4) Bauen mit MAVEn Archetype ArtifactIds Description

maven-archetype-archetypeAn archetype to generate a sample archetype.

maven-archetype-j2ee-simpleAn archetype to generate a simplifed sample J2EE application.

maven-archetype-pluginAn archetype to generate a sample Maven plugin.

maven-archetype-plugin-siteAn archetype to generate a sample Maven plugin site.

maven-archetype-portletAn archetype to generate a sample JSR-268 Portlet.

maven-archetype-quickstartAn archetype to generate a sample Maven project.

maven-archetype-simpleAn archetype to generate a simple Maven project.

maven-archetype-site

An archetype to generate a sample Maven site which demonstrates some of the supported document types like APT, XDoc, and FML and demonstrates how to i18n your site.

maven-archetype-site-simpleAn archetype to generate a sample Maven site.

maven-archetype-webappAn archetype to generate a sample Maven Webapp project.

Page 24: Artem Eger Build-Systeme in java Maven & ANT · 2018. 1. 24. · Maven & ANT Artem Eger (1) Motivation und Überblick (2) Bauen mit Ant (3) Praxisbeispiel Ant (4) Bauen mit Maven

mvn archetype:generate

-DgroupId=Testprojekt

-DartifactId=Test

-Dpackage=org.test.testprojekt

-Dversion=1.0

-DarchetypeArtifactId=maven-archetype-quickstart

(4) Bauen mIt Maven

24/3102.11.2016

Page 25: Artem Eger Build-Systeme in java Maven & ANT · 2018. 1. 24. · Maven & ANT Artem Eger (1) Motivation und Überblick (2) Bauen mit Ant (3) Praxisbeispiel Ant (4) Bauen mit Maven

02.11.2016 25/31

(4) Bauen mit MAVEn<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

</project>

Page 26: Artem Eger Build-Systeme in java Maven & ANT · 2018. 1. 24. · Maven & ANT Artem Eger (1) Motivation und Überblick (2) Bauen mit Ant (3) Praxisbeispiel Ant (4) Bauen mit Maven

02.11.2016 26/31

(4) Bauen mit MAVEn<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>Testprojekt</groupId>

<artifactId>Test</artifactId>

<version>1.0</version>

<packaging>jar</packaging>

<name>Test</name>

<url>http://maven.apache.org</url>

</project>

Page 27: Artem Eger Build-Systeme in java Maven & ANT · 2018. 1. 24. · Maven & ANT Artem Eger (1) Motivation und Überblick (2) Bauen mit Ant (3) Praxisbeispiel Ant (4) Bauen mit Maven

02.11.2016 27/31

(4) Bauen mit MAVEn<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<dependencies>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>3.8.1</version>

<scope>test</scope>

</dependency>

</dependencies>

</project>

Page 28: Artem Eger Build-Systeme in java Maven & ANT · 2018. 1. 24. · Maven & ANT Artem Eger (1) Motivation und Überblick (2) Bauen mit Ant (3) Praxisbeispiel Ant (4) Bauen mit Maven

(5) Praxisbeispiel Maven

28/3102.11.2016

Page 29: Artem Eger Build-Systeme in java Maven & ANT · 2018. 1. 24. · Maven & ANT Artem Eger (1) Motivation und Überblick (2) Bauen mit Ant (3) Praxisbeispiel Ant (4) Bauen mit Maven

• Release 2012

• Kombiniert die Flexibilität von Ant mit dem Komfort von Maven

• Benutzt kein XML

(6) Ausblick

29/3102.11.2016

Page 30: Artem Eger Build-Systeme in java Maven & ANT · 2018. 1. 24. · Maven & ANT Artem Eger (1) Motivation und Überblick (2) Bauen mit Ant (3) Praxisbeispiel Ant (4) Bauen mit Maven

https://hbitsolutionz.files.wordpress.com/2014/01/16960-code-1920x1200-computer-wallpaper.jpg

Zugriff am 24.10.2016

https://www.heise.de/developer/artikel/Continuous-Integration-mit-Java-und-JavaScript-Teil-1-Die-Kunst-der-Versionierung-2853319.html?artikelseite=2

Zugriff am 26.10.2016

http://stackoverflow.com/questions/2310261/what-is-the-difference-between-compile-code-and-executable-code

Zugriff am 26.10.2016

http://www.bennyn.de/programmierung/java/beispiel-fur-apache-ant-build-script.html

Zugriff am 26.10.2016

Quellen

30/3102.11.2016

Page 31: Artem Eger Build-Systeme in java Maven & ANT · 2018. 1. 24. · Maven & ANT Artem Eger (1) Motivation und Überblick (2) Bauen mit Ant (3) Praxisbeispiel Ant (4) Bauen mit Maven

https://technologyconversations.files.wordpress.com/2014/06/gradle.png

Zugriff am 1.11.2016

https://technologyconversations.com/2014/06/18/build-tools/

Zugriff am 1.11.2016

[1] G. Niemeyer und J. Poteet, Extreme Programming with AntBuilding and Deploying Java TMApplications with JSP TM , EJB TM , XSLT, xDoclet, and JUnit, 1. Hrsg., Indianapolis: Sams Publishing, 2003.

[2] J. Humble und D. Farley, Continuous delivery : reliable software releases through build, test, and deployment automation, 1. Hrsg., Crawfordsville: Pearson Education, 2010.

[3] T. O’Brien, J. v. Zyl, B. Fox, J. Casey, J. Xu und T. Locher, Maven by Example: An Introduction to Apache Maven, 1. Hrsg., SilverSpring: Sonatype, 2010.

Quellen

31/3102.11.2016