xref: /aosp_15_r20/external/jacoco/org.jacoco.doc/docroot/doc/build.html (revision 7e63c1270baf9bfa84f5b6aecf17bd0c1a75af94)
1*7e63c127SSorin Basca<?xml version="1.0" encoding="UTF-8" ?>
2*7e63c127SSorin Basca<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3*7e63c127SSorin Basca<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
4*7e63c127SSorin Basca<head>
5*7e63c127SSorin Basca  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6*7e63c127SSorin Basca  <link rel="stylesheet" href="resources/doc.css" charset="UTF-8" type="text/css" />
7*7e63c127SSorin Basca  <link rel="stylesheet" href="../coverage/jacoco-resources/prettify.css" charset="UTF-8" type="text/css" />
8*7e63c127SSorin Basca  <link rel="shortcut icon" href="resources/report.gif" type="image/gif" />
9*7e63c127SSorin Basca  <script type="text/javascript" src="../coverage/jacoco-resources/prettify.js"></script>
10*7e63c127SSorin Basca  <title>JaCoCo - Build</title>
11*7e63c127SSorin Basca</head>
12*7e63c127SSorin Basca<body onload="prettyPrint()">
13*7e63c127SSorin Basca
14*7e63c127SSorin Basca<div class="breadcrumb">
15*7e63c127SSorin Basca  <a href="../index.html" class="el_report">JaCoCo</a> &gt;
16*7e63c127SSorin Basca  <a href="index.html" class="el_group">Documentation</a> &gt;
17*7e63c127SSorin Basca  <span class="el_source">Build</span>
18*7e63c127SSorin Basca</div>
19*7e63c127SSorin Basca<div id="content">
20*7e63c127SSorin Basca
21*7e63c127SSorin Basca<h1>Build</h1>
22*7e63c127SSorin Basca
23*7e63c127SSorin Basca<p>
24*7e63c127SSorin Basca  The JaCoCo build is based on <a href="http://maven.apache.org/">Maven</a> and
25*7e63c127SSorin Basca  can be locally executed on every machine with a proper
26*7e63c127SSorin Basca  <a href="environment.html">environment setup</a>. In particular you need at
27*7e63c127SSorin Basca  least <a href="http://maven.apache.org/">Maven 3.3.9</a> and JDK 8
28*7e63c127SSorin Basca  installations. Developers are encouraged to run the build before every commit
29*7e63c127SSorin Basca  to ensure consistency of the source tree.
30*7e63c127SSorin Basca</p>
31*7e63c127SSorin Basca
32*7e63c127SSorin Basca
33*7e63c127SSorin Basca<h2>Running the Build</h2>
34*7e63c127SSorin Basca
35*7e63c127SSorin Basca<p>
36*7e63c127SSorin Basca  The build can be started by executing the following command with
37*7e63c127SSorin Basca  <code>./org.jacoco.build/</code> as the working directory:
38*7e63c127SSorin Basca</p>
39*7e63c127SSorin Basca
40*7e63c127SSorin Basca<pre>
41*7e63c127SSorin Basca  mvn clean verify
42*7e63c127SSorin Basca</pre>
43*7e63c127SSorin Basca
44*7e63c127SSorin Basca<p>
45*7e63c127SSorin Basca  Total build time is typically around 3 minutes, however first build might take
46*7e63c127SSorin Basca  more time, because Maven should download plugins and dependencies. The
47*7e63c127SSorin Basca  download ZIP will be created at the following location:
48*7e63c127SSorin Basca</p>
49*7e63c127SSorin Basca
50*7e63c127SSorin Basca<pre>
51*7e63c127SSorin Basca  ./jacoco/target/jacoco-<i>x.y.z.qualifier</i>.zip
52*7e63c127SSorin Basca</pre>
53*7e63c127SSorin Basca
54*7e63c127SSorin Basca
55*7e63c127SSorin Basca<h2>Running Quick Build without Tests</h2>
56*7e63c127SSorin Basca
57*7e63c127SSorin Basca<p>
58*7e63c127SSorin Basca  It is not recommended, however possible to the run build without any tests:
59*7e63c127SSorin Basca</p>
60*7e63c127SSorin Basca
61*7e63c127SSorin Basca<pre>
62*7e63c127SSorin Basca  mvn clean verify -DskipTests
63*7e63c127SSorin Basca</pre>
64*7e63c127SSorin Basca
65*7e63c127SSorin Basca
66*7e63c127SSorin Basca<h2>Compilation and testing with different JDKs</h2>
67*7e63c127SSorin Basca
68*7e63c127SSorin Basca<p>
69*7e63c127SSorin Basca  By default for compilation and execution of tests will be used JDK that runs
70*7e63c127SSorin Basca  Maven. Alternatively you can use JDK from
71*7e63c127SSorin Basca  <a href="http://maven.apache.org/guides/mini/guide-using-toolchains.html">Maven
72*7e63c127SSorin Basca  Toolchains</a> by setting property <code>jdk.version</code>.
73*7e63c127SSorin Basca</p>
74*7e63c127SSorin Basca
75*7e63c127SSorin Basca<p>
76*7e63c127SSorin Basca  Following table shows in which classfile version modules will be compiled to
77*7e63c127SSorin Basca  depending on version of JDK (empty cells = no compilation possible):
78*7e63c127SSorin Basca</p>
79*7e63c127SSorin Basca
80*7e63c127SSorin Basca<table class="coverage">
81*7e63c127SSorin Basca  <thead>
82*7e63c127SSorin Basca  <tr>
83*7e63c127SSorin Basca    <td>Modules</td>
84*7e63c127SSorin Basca    <td>JDK 5</td>
85*7e63c127SSorin Basca    <td>JDK 6</td>
86*7e63c127SSorin Basca    <td>JDK 7</td>
87*7e63c127SSorin Basca    <td>JDK 8</td>
88*7e63c127SSorin Basca    <td>JDK 9</td>
89*7e63c127SSorin Basca    <td>JDK 10</td>
90*7e63c127SSorin Basca    <td>JDK 11</td>
91*7e63c127SSorin Basca    <td>JDK 12</td>
92*7e63c127SSorin Basca    <td>JDK 13</td>
93*7e63c127SSorin Basca    <td>JDK 14</td>
94*7e63c127SSorin Basca    <td>JDK 15</td>
95*7e63c127SSorin Basca    <td>JDK 16</td>
96*7e63c127SSorin Basca  </tr>
97*7e63c127SSorin Basca  </thead>
98*7e63c127SSorin Basca  <tbody>
99*7e63c127SSorin Basca  <tr>
100*7e63c127SSorin Basca    <td>org.jacoco.core.test.validation.java14</td>
101*7e63c127SSorin Basca    <td></td>
102*7e63c127SSorin Basca    <td></td>
103*7e63c127SSorin Basca    <td></td>
104*7e63c127SSorin Basca    <td></td>
105*7e63c127SSorin Basca    <td></td>
106*7e63c127SSorin Basca    <td></td>
107*7e63c127SSorin Basca    <td></td>
108*7e63c127SSorin Basca    <td></td>
109*7e63c127SSorin Basca    <td></td>
110*7e63c127SSorin Basca    <td>14</td>
111*7e63c127SSorin Basca    <td>14</td>
112*7e63c127SSorin Basca    <td>14</td>
113*7e63c127SSorin Basca  </tr>
114*7e63c127SSorin Basca  <tr>
115*7e63c127SSorin Basca    <td>org.jacoco.core.test.validation.java8</td>
116*7e63c127SSorin Basca    <td></td>
117*7e63c127SSorin Basca    <td></td>
118*7e63c127SSorin Basca    <td></td>
119*7e63c127SSorin Basca    <td>8</td>
120*7e63c127SSorin Basca    <td>8</td>
121*7e63c127SSorin Basca    <td>8</td>
122*7e63c127SSorin Basca    <td>8</td>
123*7e63c127SSorin Basca    <td>8</td>
124*7e63c127SSorin Basca    <td>8</td>
125*7e63c127SSorin Basca    <td>8</td>
126*7e63c127SSorin Basca    <td>8</td>
127*7e63c127SSorin Basca    <td>8</td>
128*7e63c127SSorin Basca  </tr>
129*7e63c127SSorin Basca  <tr>
130*7e63c127SSorin Basca    <td>org.jacoco.core.test.validation.java7</td>
131*7e63c127SSorin Basca    <td></td>
132*7e63c127SSorin Basca    <td></td>
133*7e63c127SSorin Basca    <td>7</td>
134*7e63c127SSorin Basca    <td>7</td>
135*7e63c127SSorin Basca    <td>7</td>
136*7e63c127SSorin Basca    <td>7</td>
137*7e63c127SSorin Basca    <td>7</td>
138*7e63c127SSorin Basca    <td>7</td>
139*7e63c127SSorin Basca    <td>7</td>
140*7e63c127SSorin Basca    <td>7</td>
141*7e63c127SSorin Basca    <td>7</td>
142*7e63c127SSorin Basca    <td>7</td>
143*7e63c127SSorin Basca  </tr>
144*7e63c127SSorin Basca  <tr>
145*7e63c127SSorin Basca    <td>org.jacoco.core.test.validation.groovy</td>
146*7e63c127SSorin Basca    <td></td>
147*7e63c127SSorin Basca    <td></td>
148*7e63c127SSorin Basca    <td></td>
149*7e63c127SSorin Basca    <td>8</td>
150*7e63c127SSorin Basca    <td>8</td>
151*7e63c127SSorin Basca    <td>8</td>
152*7e63c127SSorin Basca    <td>8</td>
153*7e63c127SSorin Basca    <td>8</td>
154*7e63c127SSorin Basca    <td>8</td>
155*7e63c127SSorin Basca    <td>8</td>
156*7e63c127SSorin Basca    <td>8</td>
157*7e63c127SSorin Basca    <td>8</td>
158*7e63c127SSorin Basca  </tr>
159*7e63c127SSorin Basca  <tr>
160*7e63c127SSorin Basca    <td>org.jacoco.core.test.validation.kotlin</td>
161*7e63c127SSorin Basca    <td></td>
162*7e63c127SSorin Basca    <td>6</td>
163*7e63c127SSorin Basca    <td>6</td>
164*7e63c127SSorin Basca    <td>6</td>
165*7e63c127SSorin Basca    <td>6</td>
166*7e63c127SSorin Basca    <td>6</td>
167*7e63c127SSorin Basca    <td>6</td>
168*7e63c127SSorin Basca    <td>6</td>
169*7e63c127SSorin Basca    <td>6</td>
170*7e63c127SSorin Basca    <td>6</td>
171*7e63c127SSorin Basca    <td>6</td>
172*7e63c127SSorin Basca    <td>6</td>
173*7e63c127SSorin Basca  </tr>
174*7e63c127SSorin Basca  <tr>
175*7e63c127SSorin Basca    <td>all other modules</td>
176*7e63c127SSorin Basca    <td>5</td>
177*7e63c127SSorin Basca    <td>5</td>
178*7e63c127SSorin Basca    <td>5</td>
179*7e63c127SSorin Basca    <td>5</td>
180*7e63c127SSorin Basca    <td>6</td>
181*7e63c127SSorin Basca    <td>6</td>
182*7e63c127SSorin Basca    <td>6</td>
183*7e63c127SSorin Basca    <td>7</td>
184*7e63c127SSorin Basca    <td>7</td>
185*7e63c127SSorin Basca    <td>7</td>
186*7e63c127SSorin Basca    <td>7</td>
187*7e63c127SSorin Basca    <td>7</td>
188*7e63c127SSorin Basca  </tr>
189*7e63c127SSorin Basca  </tbody>
190*7e63c127SSorin Basca</table>
191*7e63c127SSorin Basca
192*7e63c127SSorin Basca<p>
193*7e63c127SSorin Basca  Alternatively you can specify bytecode version for all modules using property
194*7e63c127SSorin Basca  <code>bytecode.version</code>.
195*7e63c127SSorin Basca</p>
196*7e63c127SSorin Basca
197*7e63c127SSorin Basca<p>
198*7e63c127SSorin Basca  For example to use JDK 10 from Maven Toolchains and compile all modules
199*7e63c127SSorin Basca  into bytecode version 53 (Java 9):
200*7e63c127SSorin Basca</p>
201*7e63c127SSorin Basca
202*7e63c127SSorin Basca<pre>
203*7e63c127SSorin Basca  mvn clean verify -Djdk.version=10 -Dbytecode.version=9
204*7e63c127SSorin Basca</pre>
205*7e63c127SSorin Basca
206*7e63c127SSorin Basca<p>
207*7e63c127SSorin Basca  Also Eclipse Compiler for Java can be used for compilation:
208*7e63c127SSorin Basca</p>
209*7e63c127SSorin Basca
210*7e63c127SSorin Basca<pre>
211*7e63c127SSorin Basca  mvn clean verify -Decj
212*7e63c127SSorin Basca</pre>
213*7e63c127SSorin Basca
214*7e63c127SSorin Basca<p>
215*7e63c127SSorin Basca  Combining these options JaCoCo is regularly tested with the following setups:
216*7e63c127SSorin Basca</p>
217*7e63c127SSorin Basca
218*7e63c127SSorin Basca<ul>
219*7e63c127SSorin Basca  <li><code>mvn clean verify -Djdk.version=5 -Dbytecode.version=5</code></li>
220*7e63c127SSorin Basca  <li><code>mvn clean verify -Djdk.version=6 -Dbytecode.version=6</code></li>
221*7e63c127SSorin Basca  <li><code>mvn clean verify -Djdk.version=7 -Dbytecode.version=7</code></li>
222*7e63c127SSorin Basca  <li><code>mvn clean verify -Djdk.version=8 -Dbytecode.version=8</code></li>
223*7e63c127SSorin Basca  <li><code>mvn clean verify -Djdk.version=8 -Dbytecode.version=8 -Decj</code></li>
224*7e63c127SSorin Basca  <li><code>mvn clean verify -Djdk.version=9 -Dbytecode.version=9</code></li>
225*7e63c127SSorin Basca  <li><code>mvn clean verify -Djdk.version=10 -Dbytecode.version=10</code></li>
226*7e63c127SSorin Basca  <li><code>mvn clean verify -Djdk.version=11 -Dbytecode.version=11</code></li>
227*7e63c127SSorin Basca  <li><code>mvn clean verify -Djdk.version=12 -Dbytecode.version=12</code></li>
228*7e63c127SSorin Basca  <li><code>mvn clean verify -Djdk.version=13 -Dbytecode.version=13</code></li>
229*7e63c127SSorin Basca  <li><code>mvn clean verify -Djdk.version=14 -Dbytecode.version=14</code></li>
230*7e63c127SSorin Basca  <li><code>mvn clean verify -Djdk.version=15 -Dbytecode.version=15</code></li>
231*7e63c127SSorin Basca  <li><code>mvn clean verify -Djdk.version=16 -Dbytecode.version=16</code></li>
232*7e63c127SSorin Basca</ul>
233*7e63c127SSorin Basca
234*7e63c127SSorin Basca
235*7e63c127SSorin Basca</div>
236*7e63c127SSorin Basca<div class="footer">
237*7e63c127SSorin Basca  <span class="right"><a href="${jacoco.home.url}">JaCoCo</a> ${qualified.bundle.version}</span>
238*7e63c127SSorin Basca  <a href="license.html">Copyright</a> &copy; ${copyright.years} Mountainminds GmbH &amp; Co. KG and Contributors
239*7e63c127SSorin Basca</div>
240*7e63c127SSorin Basca
241*7e63c127SSorin Basca</body>
242*7e63c127SSorin Basca</html>
243