Skip to content
Snippets Groups Projects
Commit bc44a3b5 authored by Léa Рая DÉCORNOD's avatar Léa Рая DÉCORNOD
Browse files

prepare ant/maven/gradle

parent 612208fe
Branches
No related merge requests found
......@@ -30,6 +30,11 @@ div.reveal ul li:before {
width: 2em;
text-align: center;
}
div.reveal ul li.arrow:before {
content: "–→";
letter-spacing: -1.5pt;
}
div.reveal ul li.nobullet:before,
div.reveal ul.nobullet > li:before {
display: none;
......@@ -266,6 +271,9 @@ div.reveal h4 .cell
div.reveal h3 {
font-size: 1em;
}
div.reveal h4 {
font-size: .75em;
}
svg text[font-family="Times"],
svg text[font-family="Times,serif"] {
......
......@@ -105,6 +105,10 @@ div.reveal .authors { }
<li><a href="#package">packages</a></li>
<li><a href="#visibility">visibilité</a></li>
</ul></li>
<li><a href="#extras">Compléments</a>
<ul class="nobullet inline small">
<li><a href="#build">build</a></li>
</ul></li>
</ul>
</section>
</section>
......@@ -2106,8 +2110,6 @@ digraph SingleRespGood {
<!--
TODO:
— javadoc
— interfaces
– JCP/JSR et standards
— Modélidations OO : SOLID, Demeter
-->
......@@ -2302,9 +2304,220 @@ class EauChaude extends Temperature implements Etatφ { … }
</section>
</section>
<section id="extras"><section><h2>Compléments</h2></section>
<section id="build" class="ontop" data-transition="fade-out">
<h3>Automatisation de la compilation &amp; construction</h3>
<div class="twocolumns">
<h4>Make</h4>
<h4>Apache ANT <img class="picto" data-src="images/Apache-Ant-logo.svg" ></h4>
</div>
<div class="twocolumns">
<pre><samp style="text-align:right"><em>Makefile</em></samp><code class="Makefile">CC = gcc
all: prog
prog: main.o module1.o module2.o
$(CC) -g -lm -o $@ $^
%.o: %c
$(CC) -o $@ -c $&lt;
clean:
rm -f prog *.o
.PHONY: all clean</code></pre>
<pre><samp style="text-align:right"><em>build.xml</em></samp><!--
--><code class="xml"><project name="MonProjet" default="compile">
<target name="compile">
&lt;javac srcdir="." destdir="."/>
</target>
<target name="clean" description="nettoyage">
<delete>
&lt;fileset file="prog" />
&lt;fileset dir="." includes="**/*.class" />
</delete>
</target>
</project></code></pre><span class="fragment"><i>„Write once, run anywhere”</i></span>
</div>
</section>
<section class="ontop" data-transition="fade-in">
<h3>Principe CoC&nbsp;: <i>Convention Over Configuration</i></h3>
<div class="twocolumns">
<div><h4>Apache ANT <img class="picto" data-src="images/Apache-Ant-logo.svg" ></h4><div class="small">script</div>
<pre class="fullwidth" style="margin: 0px"><samp style="text-align:right"><em>build.xml</em></samp><!--
--><code class="xml"><project name="mon-projet" default="compile">
<target name="compile">
&lt;javac srcdir="." destdir="." />
</target>
<target name="clean" description="nettoyage">
<delete>
&lt;fileset file="prog" />
&lt;fileset dir="." includes="**/*.class" />
</delete>
</target>
</project></code></pre></div>
<div class="fragment fade-left" data-fragment-index="1" style="display: inline-block"><h4>Apache <img class="picto" data-src="images/Maven_logo.svg" ></h4><div class="small">description</div>
<pre class="fullwidth" style="margin: 0px"><samp style="text-align:right"><em>pom.xml</em></samp><code class="xml">&lt;project>
&lt;modelVersion>4.0.0&lt;/modelVersion>
&lt;groupId>fr.unistra.app&lt;/groupId>
&lt;artifactId>mon-projet&lt;/artifactId>
&lt;version>1&lt;/version>
&lt;/project></code></pre>
<div class="fragment" data-fragment-index="2" style="display: inline">
<div class="small">convention</div>
<ul class="small fullwidth">
<li><code>src/main/java</code></li>
<li><code>src/main/resources</code></li>
<li class="fragment" data-fragment-index="4"><code>src/test/java</code></li>
<li class="fragment" data-fragment-index="4"><code>src/test/resources</code></li>
<li class="fragment arrow" data-fragment-index="3"><code>target/classes</code></li>
<li class="fragment arrow" data-fragment-index="3"><code>target/mon-projet-1.jar</code></li>
</ul></div>
</div>
</div>
</section>
<section class="ontop" data-transition="fade-in">
<h3>Principe CoC&nbsp;: <i>Convention Over Configuration</i></h3>
<div class="twocolumns">
<div><h4>Apache <img class="picto" data-src="images/Maven_logo.svg" ></h4><div class="small">Project Object Model (XML)</div>
<pre class="fullwidth" style="margin: 0px"><samp style="text-align:right"><em>pom.xml</em></samp><code class="xml">&lt;project>
&lt;modelVersion>4.0.0&lt;/modelVersion>
&lt;groupId>fr.unistra.app&lt;/groupId>
&lt;artifactId>mon-projet&lt;/artifactId>
&lt;version>1&lt;/version>
&lt;/project></code></pre>
<div class="fragment" data-fragment-index="3" style="display: inline">
<pre class="viz">
digraph mavenLifecycle {
bgcolor=transparent
id="\G"
concentrate=true
node [ fontname = "Courrier", fontsize = 12, id="\G-\N", shape=plain, style=filled, fillcolor=ivory ]
edge [ fontname = "Brill", id="\G-\E", arrowhead=inv, arrowsize=.6]
{ rank = same
compile -> clean [style=invis];
}
compile -> test -> package;
{ rank = same;
package -> verify;
}
deploy -> install -> verify [ dir = back, arrowtail=inv];
}</pre>
</div>
</div>
<div class="fade-left break-before"><h4>Gradle <img class="picto" data-src="images/gradle-elephant-icon-dark-green-secondary.svg" ></h4><div class="small"><abbr title="Domain-Specific Language">DSL</abbr> groovy</div>
<pre class="fullwidth" style="margin: 0px"><samp style="text-align:right"><em>build.gradle</em></samp><code class="groovy">plugins {
id 'application'
}
version = '1.0.0'
application {
mainClassName = 'fr.unistra.app.Programme'
}
</code><code class="fragment current-display" data-fragment-index="1">
task helloWorld() {
doLast {
println 'Hello World'
}
}
</code></pre>
<div class="fragment" data-fragment-index="4" style="display: inline">
<pre class="viz">
digraph gradleLifecycle {
bgcolor=transparent
id="\G"
concentrate=true
rankdir=LR
ranksep=0.2
nodesep=0.2
node [ fontname = "Courrier", fontsize = 12, id="\G-\N", shape=plain, style=filled, fillcolor=ivory ]
edge [ fontname = "Brill", id="\G-\E", arrowtail=inv, dir=back, arrowsize=.6]
{ rank = same;
clean -> build [style=invis];
}
build -> check -> test -> { classes; testClasses };
build -> assemble -> jar -> classes;
{ rank = same;
compileTestJava [fontsize = 8];
compileJava [fontsize = 8];
testClasses -> classes -> compileJava;
compileTestJava -> testClasses [dir=forward, arrowhead=inv]
}
processTestResources [fontsize=8];
processResources [fontsize=8];
classes -> processResources
compileTestJava -> processTestResources [style=invis]
processTestResources -> testClasses [dir=forward, arrowhead=inv]
compileJava -> processResources [style=invis]
run [fillcolor=palegreen];
run -> classes;
javadoc -> classes;
run -> javadoc [style=invis];
distZip [fillcolor=palegreen, fontsize=8];
distZip -> jar;
startScripts [fillcolor=palegreen, fontsize=6];
startScripts -> distZip [dir=forward, arrowhead=inv];
}</pre>
</div>
</div>
</div>
</section>
<section class="ontop" data-transition="fade-in">
<h3>JAR — <em>Java Archive</em></h3>
<p style="font-size: .75em">Le format d'archive utilisé par java est le format ZIP.
<ul class="small">
<li><strong><code>.jar</code></strong> regroupe la plupart du temps des fichier bytecode <samp>.class</samp>
<ul>
<li class="fragment">pris en charge directement par le <code>ClassLoader</code><br/>
<pre class="inline"><code class="sh">java -jar prog.jar fr.unistra.Programme</code></pre></li>
<li class="fragment">le fichier <samp>META-INF/MANIFEST.MF</samp> porte des méta données<br/>
par ex.&nbsp; <samp>Main-Class: fr.unistra.Programme</samp></li>
<li class="fragment">peut aussi rassembler des fichier source <code>.java</code><br/>
ou de la documentation javadoc générée (<code>.html</code>)</li>
</ul>
</li>
<li class="fragment"><strong><code>.war</code></strong> ou Web Archive : destiné à déployer des applications web
<br/>au sein d'un conteneur de servlets J2EE
<small style="vertical-align: baseline">(Tomcat, Jetty, GlassFish, JBoss, WebSphere, …)</small>
<ul>
<li><code>WEB-INF/web.xml</code> configure le déploiement</li>
<li><code>WEB-INF/classes</code> contient les fichiers bytecode <samp>.class</samp></li>
<li><code>WEB-INF/lib</code> contient les <samp>.jar</samp> chargés par le <code>ClassLoader</code></li>
<li>les reste est majoritairement des ressources<br/>
comme des JavaServer Pages (JSP) par exemple.</li>
</ul>
</li>
<li class="fragment">l'outil en ligne de commande <pre class="inline"><code class="sh">jar</code></pre>
permet de manipuler des java archives<br/>
avec une syntaxe similaire à la commande
<pre class="inline"><code class="sh">tar</code></pre></li>
</ul>
</p>
</section>
<section class="ontop" data-transition="fade-in">
<h3>Entrepôt (<i>repository</i>)</h3>
</section>
</section>
</div>
<footer>
<a class="roll" href="#/0/1"
<a class="roll" href="#/0/1" style="overflow: visible"
title="retour au sommaire">&#x1f3e0;</a>
</footer>
</div>
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment