Realign jackson/woodstox declarations
[odlparent.git] / odlparent / pom.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- vi: set et smarttab sw=2 tabstop=2: -->
3 <!--
4  Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
5
6  This program and the accompanying materials are made available under the
7  terms of the Eclipse Public License v1.0 which accompanies this distribution,
8  and is available at http://www.eclipse.org/legal/epl-v10.html
9 -->
10 <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">
11   <modelVersion>4.0.0</modelVersion>
12
13   <parent>
14     <groupId>org.opendaylight.odlparent</groupId>
15     <artifactId>odlparent-lite</artifactId>
16     <version>7.0.0-SNAPSHOT</version>
17     <relativePath>../odlparent-lite</relativePath>
18   </parent>
19
20   <artifactId>odlparent</artifactId>
21   <packaging>pom</packaging>
22   <name>ODL :: odlparent :: ${project.artifactId}</name>
23
24   <scm>
25     <connection>scm:git:ssh://git.opendaylight.org:29418/odlparent.git</connection>
26     <developerConnection>scm:git:ssh://git.opendaylight.org:29418/odlparent.git</developerConnection>
27     <tag>HEAD</tag>
28     <url>https://wiki.opendaylight.org/view/ODL_Root_Parent:Main</url>
29   </scm>
30
31   <!-- Variables should only be used where genuinely useful (to avoid
32        repetition); in general versions should be specified in the
33        corresponding dependencyManagement or pluginManagement element, not as
34        a variable. Duplication within odlparent doesn't count if it can be
35        managed using maven-versions-plugin. -->
36   <properties>
37     <nexus.repository.release>opendaylight.release</nexus.repository.release>
38     <nexus.repository.snapshot>opendaylight.snapshot</nexus.repository.snapshot>
39
40     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
41     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
42
43     <!-- Java Versions -->
44     <maven.compiler.release>11</maven.compiler.release>
45
46     <!-- Used in controller, genius, infrautils, netconf, netvirt, ovsdb, serviceutils -->
47     <karaf.version>4.2.8</karaf.version>
48
49     <!-- Supporting Libraries -->
50     <!-- Only used internally -->
51     <bouncycastle.version>1.64</bouncycastle.version>
52
53     <!-- JaCoCo configuration, by default tied to Sonar configuration, but can be overridden separately
54          to allow projects to report Sonar values from the entire project. -->
55     <jacoco.destFile>${project.build.directory}/code-coverage/jacoco.exec</jacoco.destFile>
56     <jacoco.dataFile>${jacoco.destFile}</jacoco.dataFile>
57
58     <!-- Default Sonar configuration -->
59     <sonar-jacoco-listeners.version>3.8</sonar-jacoco-listeners.version>
60     <sonar.core.codeCoveragePlugin>jacoco</sonar.core.codeCoveragePlugin>
61     <sonar.jacoco.reportPath>${jacoco.destFile}</sonar.jacoco.reportPath>
62     <sonar.jacoco.itReportPath>${project.build.directory}/code-coverage/jacoco-it.exec</sonar.jacoco.itReportPath>
63
64     <!-- Note: This list should match jacoco-maven-plugin's exclusion list below -->
65     <sonar.exclusions>**/gen/**,**/generated-sources/**,**/generated-test-sources/**,**/yang-gen/**,**/yang-gen-config/**,**/yang-gen-sal/**,**/yang-gen-code/**,**/pax/**</sonar.exclusions>
66
67     <!-- Opt-in code quality checks -->
68     <pmd.cpd.fail>false</pmd.cpd.fail>                  <!-- Copy/paste detection -->
69     <duplicate-finder.skip>true</duplicate-finder.skip> <!-- Classpath duplicates -->
70
71     <!-- Redirect test output to files (overridable) -->
72     <maven.test.redirectTestOutputToFile>true</maven.test.redirectTestOutputToFile>
73
74     <!-- Opt-out from maven-checkstyle-plugin failing the build on violations. Defaults
75          to true. Set to 'false' in pom.xml of project which desires to not enforce
76          no reported violations. -->
77     <odlparent.checkstyle.enforce>true</odlparent.checkstyle.enforce>
78
79     <!-- Opt-in into modernizer-maven-plugin failing the build on violations. Defaults
80          to false. Set to 'true' in pom.xml of project which desires to enforce
81          no reported violations. -->
82     <odlparent.modernizer.enforce>false</odlparent.modernizer.enforce>
83
84     <!-- Target release for modernizer-maven-plugin. It defaults to '1.8',
85          meaning Java 8, but can be set to any version in pom.xml of project
86          which desires to override it (such as '1.11' for Java 11). -->
87     <odlparent.modernizer.target>1.8</odlparent.modernizer.target>
88
89     <!-- Opt-out from spotbugs-maven-plugin failing the build on violations. Defaults
90          to true. Set to 'false' in pom.xml of project which desires to not enforce
91          no reported violations. -->
92     <odlparent.spotbugs.enforce>true</odlparent.spotbugs.enforce>
93   </properties>
94
95   <dependencyManagement>
96     <dependencies>
97
98       <dependency>
99         <groupId>org.opendaylight.odlparent</groupId>
100         <artifactId>odlparent-artifacts</artifactId>
101         <version>7.0.0-SNAPSHOT</version>
102         <scope>import</scope>
103         <type>pom</type>
104       </dependency>
105
106       <!-- We import Karaf dependencies to ensure we converge by default on the versions used there -->
107       <dependency>
108         <groupId>org.apache.karaf.features</groupId>
109         <artifactId>framework</artifactId>
110         <version>${karaf.version}</version>
111         <scope>import</scope>
112         <type>pom</type>
113       </dependency>
114
115       <!-- Build tool dependencies (normally not here in <dependencies>,
116            but in a <dependency> in <pluginManagement> but for Checkstyle this
117            is required so that we can share the same version of Checkstyle
118            for both the Maven plugin below as well as  for custom Checkstyle
119            check rule projects, such as yangtools' checkstyle-logging) -->
120       <dependency>
121         <groupId>com.puppycrawl.tools</groupId>
122         <artifactId>checkstyle</artifactId>
123         <!-- This should match the plugin management on maven-checkstyle-plugin below -->
124         <version>8.29</version>
125       </dependency>
126
127       <!-- Testing Dependencies -->
128       <!-- JUnit, Hamcrest, Mockito and PowerMock need to be kept in sync -->
129       <dependency>
130         <groupId>junit</groupId>
131         <artifactId>junit</artifactId>
132         <!-- When bumping this version, remember to also change the JavaDoc link in odlparent-lite -->
133         <version>4.13</version>
134         <scope>test</scope>
135       </dependency>
136       <dependency>
137          <groupId>org.skyscreamer</groupId>
138          <artifactId>jsonassert</artifactId>
139          <version>1.5.0</version>
140          <scope>test</scope>
141       </dependency>
142       <dependency>
143         <groupId>org.mockito</groupId>
144         <artifactId>mockito-core</artifactId>
145         <version>3.3.3</version>
146         <scope>test</scope>
147       </dependency>
148       <dependency>
149         <groupId>org.mockito</groupId>
150         <artifactId>mockito-inline</artifactId>
151         <version>3.3.3</version>
152         <scope>test</scope>
153       </dependency>
154       <dependency>
155         <groupId>org.hamcrest</groupId>
156         <artifactId>hamcrest</artifactId>
157         <!-- When bumping this version, remember to also change the JavaDoc link in odlparent-lite -->
158         <version>2.2</version>
159         <scope>test</scope>
160       </dependency>
161       <dependency>
162         <groupId>org.hamcrest</groupId>
163         <artifactId>hamcrest-core</artifactId>
164         <version>2.2</version>
165         <scope>test</scope>
166       </dependency>
167       <dependency>
168         <groupId>org.hamcrest</groupId>
169         <artifactId>hamcrest-library</artifactId>
170         <version>2.2</version>
171         <scope>test</scope>
172       </dependency>
173       <dependency>
174         <groupId>com.google.truth</groupId>
175         <artifactId>truth</artifactId>
176         <!-- When bumping this version, remember to also change the JavaDoc link in odlparent-lite -->
177         <version>1.0.1</version>
178         <scope>test</scope>
179       </dependency>
180       <dependency>
181         <groupId>com.google.truth.extensions</groupId>
182         <artifactId>truth-java8-extension</artifactId>
183         <version>1.0.1</version>
184         <scope>test</scope>
185       </dependency>
186       <dependency>
187         <groupId>org.awaitility</groupId>
188         <artifactId>awaitility</artifactId>
189         <version>3.0.0</version>
190         <scope>test</scope>
191       </dependency>
192       <dependency>
193         <groupId>org.awaitility</groupId>
194         <artifactId>awaitility-proxy</artifactId>
195         <version>3.0.0</version>
196         <scope>test</scope>
197       </dependency>
198       <dependency>
199         <groupId>org.powermock</groupId>
200         <artifactId>powermock-api-mockito2</artifactId>
201         <version>2.0.6</version>
202         <scope>test</scope>
203       </dependency>
204       <dependency>
205         <groupId>org.powermock</groupId>
206         <artifactId>powermock-api-support</artifactId>
207         <version>2.0.6</version>
208         <scope>test</scope>
209       </dependency>
210       <dependency>
211         <groupId>org.powermock</groupId>
212         <artifactId>powermock-core</artifactId>
213         <version>2.0.6</version>
214         <scope>test</scope>
215       </dependency>
216       <dependency>
217         <groupId>org.powermock</groupId>
218         <artifactId>powermock-module-junit4</artifactId>
219         <version>2.0.6</version>
220         <scope>test</scope>
221       </dependency>
222       <dependency>
223         <groupId>org.powermock</groupId>
224         <artifactId>powermock-reflect</artifactId>
225         <version>2.0.6</version>
226         <scope>test</scope>
227       </dependency>
228
229       <!--
230            Annotation Processors
231        -->
232       <dependency>
233         <!-- Generates immutable implementations, builders, the works -->
234         <groupId>org.immutables</groupId>
235         <artifactId>value</artifactId>
236         <classifier>annotations</classifier>
237         <!-- Keep this version in sync with annotationProcessorPaths declaration below -->
238         <version>2.7.5</version>
239         <!-- Must be provided; scope=test here breaks APT in Eclipse :( -->
240         <scope>provided</scope>
241       </dependency>
242
243       <dependency>
244         <!-- Generates META-INF/services entries for ServiceLoader -->
245         <groupId>org.kohsuke.metainf-services</groupId>
246         <artifactId>metainf-services</artifactId>
247         <!-- Keep this version in sync with annotationProcessorPaths declaration below -->
248         <version>1.8</version>
249         <optional>true</optional>
250         <scope>provided</scope>
251       </dependency>
252
253       <!--
254            Supporting Libraries
255        -->
256       <dependency>
257         <groupId>org.slf4j</groupId>
258         <artifactId>jcl-over-slf4j</artifactId>
259         <version>1.7.28</version>
260       </dependency>
261       <dependency>
262         <groupId>org.slf4j</groupId>
263         <artifactId>slf4j-api</artifactId>
264         <version>1.7.28</version>
265       </dependency>
266       <dependency>
267         <groupId>org.slf4j</groupId>
268         <artifactId>slf4j-log4j12</artifactId>
269         <version>1.7.28</version>
270       </dependency>
271       <dependency>
272         <groupId>org.slf4j</groupId>
273         <artifactId>log4j-over-slf4j</artifactId>
274         <version>1.7.28</version>
275       </dependency>
276       <dependency>
277         <groupId>org.slf4j</groupId>
278         <artifactId>slf4j-simple</artifactId>
279         <version>1.7.28</version>
280         <scope>test</scope>
281       </dependency>
282       <dependency>
283         <groupId>ch.qos.logback</groupId>
284         <artifactId>logback-core</artifactId>
285         <version>1.2.3</version>
286       </dependency>
287       <dependency>
288         <groupId>ch.qos.logback</groupId>
289         <artifactId>logback-classic</artifactId>
290         <version>1.2.3</version>
291       </dependency>
292
293       <!-- log4j2 -->
294       <dependency>
295         <groupId>org.apache.logging.log4j</groupId>
296         <artifactId>log4j-bom</artifactId>
297         <version>2.13.1</version>
298         <scope>import</scope>
299         <type>pom</type>
300       </dependency>
301
302       <dependency>
303         <groupId>com.google.guava</groupId>
304         <artifactId>guava</artifactId>
305         <!-- When bumping this version, remember to also change the JavaDoc link in odlparent-lite -->
306         <version>28.2-jre</version>
307         <exclusions>
308           <exclusion>
309             <!-- Do not leak JSR305 onto the classpath by default -->
310             <groupId>com.google.code.findbugs</groupId>
311             <artifactId>jsr305</artifactId>
312           </exclusion>
313         </exclusions>
314       </dependency>
315       <dependency>
316         <groupId>com.google.guava</groupId>
317         <artifactId>guava-testlib</artifactId>
318         <!-- When bumping this version, remember to also change the JavaDoc link in odlparent-lite -->
319         <version>28.2-jre</version>
320         <scope>test</scope>
321         <exclusions>
322           <exclusion>
323             <!-- Do not leak JSR305 onto the classpath by default -->
324             <groupId>com.google.code.findbugs</groupId>
325             <artifactId>jsr305</artifactId>
326           </exclusion>
327         </exclusions>
328       </dependency>
329
330       <dependency>
331         <groupId>commons-beanutils</groupId>
332         <artifactId>commons-beanutils</artifactId>
333         <version>1.9.4</version>
334       </dependency>
335       <dependency>
336         <groupId>org.apache.commons</groupId>
337         <artifactId>commons-lang3</artifactId>
338         <!-- When bumping this version, remember to also change the JavaDoc link in odlparent-lite -->
339         <version>3.9</version>
340       </dependency>
341       <dependency>
342         <groupId>org.apache.commons</groupId>
343         <artifactId>commons-text</artifactId>
344         <version>1.8</version>
345       </dependency>
346       <dependency>
347         <groupId>commons-lang</groupId>
348         <artifactId>commons-lang</artifactId>
349         <!-- When bumping this version, remember to also change the JavaDoc link in odlparent-lite -->
350         <version>2.6</version>
351       </dependency>
352       <dependency>
353         <groupId>commons-codec</groupId>
354         <artifactId>commons-codec</artifactId>
355         <version>1.14</version>
356       </dependency>
357       <!-- Jersey for JAXRS -->
358       <dependency>
359         <groupId>javax.ws.rs</groupId>
360         <artifactId>javax.ws.rs-api</artifactId>
361         <version>2.0.1</version>
362       </dependency>
363       <dependency>
364         <groupId>org.glassfish.jersey</groupId>
365         <artifactId>jersey-bom</artifactId>
366         <version>2.25.1</version>
367         <type>pom</type>
368         <scope>import</scope>
369       </dependency>
370       <dependency>
371         <groupId>org.glassfish</groupId>
372         <artifactId>javax.json</artifactId>
373         <version>1.1.2</version>
374       </dependency>
375
376       <dependency>
377         <groupId>org.checkerframework</groupId>
378         <artifactId>checker-qual</artifactId>
379         <version>2.5.8</version>
380       </dependency>
381       <dependency>
382         <groupId>com.google.errorprone</groupId>
383         <artifactId>error_prone_annotations</artifactId>
384         <version>2.3.3</version>
385       </dependency>
386
387       <dependency>
388         <groupId>javax.activation</groupId>
389         <artifactId>activation</artifactId>
390         <version>1.1.1</version>
391       </dependency>
392       <dependency>
393         <groupId>javax.annotation</groupId>
394         <artifactId>javax.annotation-api</artifactId>
395         <version>1.3.1</version>
396         <optional>true</optional>
397       </dependency>
398       <dependency>
399         <groupId>xml-apis</groupId>
400         <artifactId>xml-apis</artifactId>
401         <version>1.4.01</version>
402       </dependency>
403
404       <!-- Plugin integration -->
405       <dependency>
406         <groupId>net.java.dev.stax-utils</groupId>
407         <artifactId>stax-utils</artifactId>
408         <version>20070216</version>
409       </dependency>
410       <dependency>
411         <groupId>org.sonatype.plexus</groupId>
412         <artifactId>plexus-build-api</artifactId>
413         <version>0.0.7</version>
414       </dependency>
415       <dependency>
416         <groupId>org.codehaus.plexus</groupId>
417         <artifactId>plexus-slf4j-logging</artifactId>
418         <version>1.1</version>
419       </dependency>
420
421       <!-- These three need to be consistent:
422         jackson-2.10.2 needs woodstox-6.0.3, but we really want 6.1.1 for JDK11 fixes.
423         woodstox-5.3+ needs stax2-api-4.2.x
424         -->
425       <dependency>
426         <groupId>org.codehaus.woodstox</groupId>
427         <artifactId>stax2-api</artifactId>
428         <version>4.2</version>
429       </dependency>
430       <dependency>
431         <groupId>com.fasterxml.woodstox</groupId>
432         <artifactId>woodstox-core</artifactId>
433         <version>6.1.1</version>
434       </dependency>
435       <dependency>
436         <groupId>com.fasterxml.jackson</groupId>
437         <artifactId>jackson-bom</artifactId>
438         <version>2.10.2</version>
439         <scope>import</scope>
440         <type>pom</type>
441       </dependency>
442
443       <dependency>
444         <groupId>com.github.spotbugs</groupId>
445         <artifactId>spotbugs-annotations</artifactId>
446         <version>3.1.12</version>
447         <scope>provided</scope>
448         <!-- Contains retention=RUNTIME annotations, which are not really needed -->
449         <optional>true</optional>
450         <exclusions>
451           <exclusion>
452             <groupId>com.google.code.findbugs</groupId>
453             <artifactId>jsr305</artifactId>
454           </exclusion>
455         </exclusions>
456       </dependency>
457
458       <dependency>
459         <groupId>org.eclipse.jdt</groupId>
460         <artifactId>org.eclipse.jdt.annotation</artifactId>
461         <version>2.2.400</version>
462         <scope>provided</scope>
463       </dependency>
464       <!-- We're staying on 2.8.5 for now, 2.8.6 has issues:
465            https://github.com/google/gson/issues/1601
466            https://github.com/google/gson/issues/1602
467            https://github.com/google/gson/issues/1608
468            https://github.com/google/gson/issues/1630
469       -->
470       <dependency>
471         <groupId>com.google.code.gson</groupId>
472         <artifactId>gson</artifactId>
473         <version>2.8.5</version>
474       </dependency>
475       <dependency>
476         <groupId>commons-fileupload</groupId>
477         <artifactId>commons-fileupload</artifactId>
478         <version>1.4</version>
479       </dependency>
480       <dependency>
481         <groupId>commons-io</groupId>
482         <artifactId>commons-io</artifactId>
483         <version>2.6</version>
484       </dependency>
485       <dependency>
486         <groupId>commons-net</groupId>
487         <artifactId>commons-net</artifactId>
488         <version>3.6</version>
489       </dependency>
490
491       <!-- Netty -->
492       <dependency>
493         <groupId>io.netty</groupId>
494         <artifactId>netty-all</artifactId>
495         <!-- If these are updated, the version in features.xml needs to be changed too -->
496         <!-- When bumping this version, remember to also change the JavaDoc link in odlparent-lite -->
497         <version>4.1.48.Final</version>
498       </dependency>
499       <dependency>
500         <groupId>io.netty</groupId>
501         <artifactId>netty-buffer</artifactId>
502         <version>4.1.48.Final</version>
503       </dependency>
504       <dependency>
505         <groupId>io.netty</groupId>
506         <artifactId>netty-codec</artifactId>
507         <version>4.1.48.Final</version>
508       </dependency>
509       <dependency>
510         <groupId>io.netty</groupId>
511         <artifactId>netty-codec-http</artifactId>
512         <version>4.1.48.Final</version>
513       </dependency>
514       <dependency>
515         <groupId>io.netty</groupId>
516         <artifactId>netty-common</artifactId>
517         <version>4.1.48.Final</version>
518       </dependency>
519       <dependency>
520         <groupId>io.netty</groupId>
521         <artifactId>netty-handler</artifactId>
522         <version>4.1.48.Final</version>
523       </dependency>
524       <dependency>
525         <groupId>io.netty</groupId>
526         <artifactId>netty-transport</artifactId>
527         <version>4.1.48.Final</version>
528       </dependency>
529       <!-- Here we need to define all available native epoll implementations; we can't limit ourselves to the build
530       platform and we can't require the build platform to have an implementation (e.g. OS X) -->
531       <dependency>
532         <groupId>io.netty</groupId>
533         <artifactId>netty-transport-native-epoll</artifactId>
534         <classifier>linux-x86_64</classifier>
535         <version>4.1.48.Final</version>
536       </dependency>
537       <dependency>
538         <groupId>javax.ws.rs</groupId>
539         <artifactId>jsr311-api</artifactId>
540         <version>1.1.1</version>
541       </dependency>
542       <dependency>
543         <groupId>javax.servlet</groupId>
544         <artifactId>javax.servlet-api</artifactId>
545         <version>3.1.0</version>
546       </dependency>
547       <dependency>
548         <groupId>org.apache.felix</groupId>
549         <artifactId>org.apache.felix.dependencymanager</artifactId>
550         <version>4.4.1</version>
551       </dependency>
552       <dependency>
553         <groupId>org.apache.felix</groupId>
554         <artifactId>org.apache.felix.dependencymanager.shell</artifactId>
555         <version>4.0.6</version>
556       </dependency>
557       <dependency>
558         <groupId>org.apache.felix</groupId>
559         <artifactId>org.apache.felix.metatype</artifactId>
560         <version>1.2.2</version>
561       </dependency>
562       <dependency>
563         <groupId>org.bouncycastle</groupId>
564         <artifactId>bcpkix-jdk15on</artifactId>
565         <version>${bouncycastle.version}</version>
566       </dependency>
567       <dependency>
568         <groupId>org.bouncycastle</groupId>
569         <artifactId>bcprov-jdk15on</artifactId>
570         <version>${bouncycastle.version}</version>
571       </dependency>
572       <dependency>
573         <groupId>org.bouncycastle</groupId>
574         <artifactId>bcprov-ext-jdk15on</artifactId>
575         <version>${bouncycastle.version}</version>
576       </dependency>
577
578       <dependency>
579         <groupId>com.webcohesion.enunciate</groupId>
580         <artifactId>enunciate-core-annotations</artifactId>
581         <!-- This must be aligned with the version of enunciate-maven-plugin specified below -->
582         <version>2.12.1</version>
583       </dependency>
584
585       <dependency>
586         <groupId>org.codehaus.jettison</groupId>
587         <artifactId>jettison</artifactId>
588         <version>1.4.0</version>
589       </dependency>
590       <dependency>
591         <groupId>org.eclipse.persistence</groupId>
592         <artifactId>org.eclipse.persistence.antlr</artifactId>
593         <version>2.7.5</version>
594       </dependency>
595       <dependency>
596         <groupId>org.eclipse.persistence</groupId>
597         <artifactId>org.eclipse.persistence.core</artifactId>
598         <version>2.7.5</version>
599       </dependency>
600       <dependency>
601         <groupId>org.eclipse.persistence</groupId>
602         <artifactId>org.eclipse.persistence.moxy</artifactId>
603         <version>2.7.5</version>
604       </dependency>
605       <dependency>
606         <groupId>javax.validation</groupId>
607         <artifactId>validation-api</artifactId>
608         <version>1.1.0.Final</version>
609       </dependency>
610       <dependency>
611         <groupId>org.javassist</groupId>
612         <artifactId>javassist</artifactId>
613         <version>3.27.0-GA</version>
614       </dependency>
615       <dependency>
616         <groupId>org.jboss.spec.javax.transaction</groupId>
617         <artifactId>jboss-transaction-api_1.1_spec</artifactId>
618         <version>1.0.1.Final</version>
619       </dependency>
620       <dependency>
621         <groupId>org.jolokia</groupId>
622         <artifactId>jolokia-osgi</artifactId>
623         <version>1.6.2</version>
624       </dependency>
625       <dependency>
626         <groupId>org.osgi</groupId>
627         <artifactId>osgi.cmpn</artifactId>
628         <version>6.0.0</version>
629         <scope>provided</scope>
630       </dependency>
631       <dependency>
632         <groupId>org.osgi</groupId>
633         <artifactId>org.osgi.core</artifactId>
634         <version>6.0.0</version>
635         <scope>provided</scope>
636       </dependency>
637       <dependency>
638         <groupId>org.osgi</groupId>
639         <!-- for https://bugs.opendaylight.org/show_bug.cgi?id=4290 -->
640         <artifactId>org.osgi.service.event</artifactId>
641         <version>1.3.1</version>
642       </dependency>
643       <dependency>
644         <groupId>org.apache.aries.quiesce</groupId>
645         <artifactId>org.apache.aries.quiesce.api</artifactId>
646         <version>1.0.0</version>
647       </dependency>
648       <dependency>
649         <groupId>org.ow2.asm</groupId>
650         <artifactId>asm</artifactId>
651         <version>7.0</version>
652       </dependency>
653
654       <!-- Configuration library -->
655       <!-- This needs to be kept in sync with the version used by akka -->
656       <dependency>
657         <groupId>com.typesafe</groupId>
658         <artifactId>config</artifactId>
659         <version>1.3.3</version>
660       </dependency>
661
662       <!-- Reactive Streams, used by Akka -->
663       <dependency>
664         <groupId>org.reactivestreams</groupId>
665         <artifactId>reactive-streams</artifactId>
666         <version>1.0.3</version>
667       </dependency>
668
669       <!-- Akka -->
670       <dependency>
671         <groupId>com.typesafe</groupId>
672         <artifactId>ssl-config-core_2.13</artifactId>
673         <version>0.3.8</version>
674       </dependency>
675       <dependency>
676         <groupId>com.typesafe.akka</groupId>
677         <artifactId>akka-actor_2.13</artifactId>
678         <!-- When bumping this version, remember to also change the JavaDoc link in odlparent-lite -->
679         <version>2.5.30</version>
680       </dependency>
681       <dependency>
682         <groupId>com.typesafe.akka</groupId>
683         <artifactId>akka-cluster_2.13</artifactId>
684         <version>2.5.30</version>
685       </dependency>
686       <dependency>
687         <groupId>com.typesafe.akka</groupId>
688         <artifactId>akka-osgi_2.13</artifactId>
689         <version>2.5.30</version>
690       </dependency>
691       <dependency>
692         <groupId>com.typesafe.akka</groupId>
693         <artifactId>akka-persistence_2.13</artifactId>
694         <version>2.5.30</version>
695       </dependency>
696       <dependency>
697         <groupId>com.typesafe.akka</groupId>
698         <artifactId>akka-persistence-tck_2.13</artifactId>
699         <version>2.5.30</version>
700         <scope>test</scope>
701       </dependency>
702       <dependency>
703         <groupId>com.typesafe.akka</groupId>
704         <artifactId>akka-protobuf_2.13</artifactId>
705         <version>2.5.30</version>
706       </dependency>
707       <dependency>
708         <groupId>com.typesafe.akka</groupId>
709         <artifactId>akka-remote_2.13</artifactId>
710         <version>2.5.30</version>
711       </dependency>
712       <dependency>
713         <groupId>com.typesafe.akka</groupId>
714         <artifactId>akka-slf4j_2.13</artifactId>
715         <version>2.5.30</version>
716       </dependency>
717       <dependency>
718         <groupId>com.typesafe.akka</groupId>
719         <artifactId>akka-stream_2.13</artifactId>
720         <version>2.5.30</version>
721       </dependency>
722       <dependency>
723         <groupId>com.typesafe.akka</groupId>
724         <artifactId>akka-testkit_2.13</artifactId>
725         <version>2.5.30</version>
726         <scope>test</scope>
727       </dependency>
728       <dependency>
729         <groupId>org.scala-lang.modules</groupId>
730         <artifactId>scala-java8-compat_2.13</artifactId>
731         <version>0.9.1</version>
732       </dependency>
733       <dependency>
734         <groupId>org.scala-lang.modules</groupId>
735         <artifactId>scala-parser-combinators_2.13</artifactId>
736         <version>1.1.2</version>
737       </dependency>
738       <dependency>
739         <groupId>org.uncommons.maths</groupId>
740         <artifactId>uncommons-maths</artifactId>
741         <version>1.2.2a</version>
742       </dependency>
743
744       <!-- Aeron, required by Akka -->
745       <dependency>
746         <groupId>org.agrona</groupId>
747         <artifactId>agrona</artifactId>
748         <version>0.9.33</version>
749       </dependency>
750       <dependency>
751         <groupId>io.aeron</groupId>
752         <artifactId>aeron-client</artifactId>
753         <version>1.15.3</version>
754       </dependency>
755       <dependency>
756         <groupId>io.aeron</groupId>
757         <artifactId>aeron-driver</artifactId>
758         <version>1.15.3</version>
759       </dependency>
760
761       <!-- Scala -->
762       <dependency>
763         <groupId>org.scala-lang</groupId>
764         <artifactId>scala-library</artifactId>
765         <version>2.13.1</version>
766       </dependency>
767       <dependency>
768         <groupId>org.scala-lang</groupId>
769         <artifactId>scala-reflect</artifactId>
770         <version>2.13.1</version>
771       </dependency>
772
773       <!-- LMAX Disruptor -->
774       <dependency>
775         <groupId>com.lmax</groupId>
776         <artifactId>disruptor</artifactId>
777         <version>3.4.2</version>
778       </dependency>
779
780       <!-- Add Pax Exam -->
781       <dependency>
782         <groupId>org.ops4j.pax.exam</groupId>
783         <artifactId>pax-exam</artifactId>
784         <version>4.13.3</version>
785         <scope>test</scope>
786       </dependency>
787       <dependency>
788         <groupId>org.ops4j.pax.exam</groupId>
789         <artifactId>pax-exam-container-forked</artifactId>
790         <version>4.13.3</version>
791         <scope>test</scope>
792       </dependency>
793       <dependency>
794         <groupId>org.ops4j.pax.exam</groupId>
795         <artifactId>pax-exam-container-karaf</artifactId>
796         <version>4.13.3</version>
797         <scope>test</scope>
798       </dependency>
799       <dependency>
800         <groupId>org.ops4j.pax.exam</groupId>
801         <artifactId>pax-exam-container-native</artifactId>
802         <version>4.13.3</version>
803         <scope>test</scope>
804       </dependency>
805       <dependency>
806         <groupId>org.ops4j.pax.exam</groupId>
807         <artifactId>pax-exam-extender-service</artifactId>
808         <version>4.13.3</version>
809         <scope>test</scope>
810       </dependency>
811       <dependency>
812         <groupId>org.ops4j.pax.exam</groupId>
813         <artifactId>pax-exam-inject</artifactId>
814         <version>4.13.3</version>
815         <scope>test</scope>
816       </dependency>
817       <dependency>
818         <groupId>org.ops4j.pax.exam</groupId>
819         <artifactId>pax-exam-invoker-junit</artifactId>
820         <version>4.13.3</version>
821         <scope>test</scope>
822       </dependency>
823       <dependency>
824         <groupId>org.ops4j.pax.exam</groupId>
825         <artifactId>pax-exam-features</artifactId>
826         <version>4.13.3</version>
827         <type>xml</type>
828         <scope>test</scope>
829       </dependency>
830       <dependency>
831         <groupId>org.ops4j.pax.exam</groupId>
832         <artifactId>pax-exam-junit4</artifactId>
833         <version>4.13.3</version>
834         <scope>test</scope>
835       </dependency>
836       <dependency>
837         <groupId>org.ops4j.pax.exam</groupId>
838         <artifactId>pax-exam-link-mvn</artifactId>
839         <version>4.13.3</version>
840         <scope>test</scope>
841       </dependency>
842       <dependency>
843         <groupId>org.ops4j.pax.exam</groupId>
844         <artifactId>pax-exam-link-assembly</artifactId>
845         <version>4.13.3</version>
846         <scope>test</scope>
847       </dependency>
848
849       <dependency>
850         <groupId>org.ops4j.pax.url</groupId>
851         <artifactId>pax-url-link</artifactId>
852         <version>2.5.4</version>
853         <scope>test</scope>
854       </dependency>
855       <dependency>
856         <groupId>org.ops4j.pax.url</groupId>
857         <artifactId>pax-url-aether</artifactId>
858         <version>2.5.4</version>
859         <scope>test</scope>
860       </dependency>
861       <dependency>
862         <groupId>org.ops4j.pax.url</groupId>
863         <artifactId>pax-url-wrap</artifactId>
864         <version>2.5.4</version>
865       </dependency>
866
867       <dependency>
868         <groupId>org.ops4j.pax.web</groupId>
869         <artifactId>pax-web-api</artifactId>
870         <!-- Note: keep this version synchronized with karaf -->
871         <version>7.2.14</version>
872       </dependency>
873
874       <dependency>
875         <groupId>org.springframework.osgi</groupId>
876         <artifactId>spring-osgi-mock</artifactId>
877         <version>1.2.1</version>
878         <scope>test</scope>
879       </dependency>
880
881       <dependency>
882         <groupId>org.xmlunit</groupId>
883         <artifactId>xmlunit-core</artifactId>
884         <version>2.6.3</version>
885         <scope>test</scope>
886       </dependency>
887       <dependency>
888         <groupId>org.xmlunit</groupId>
889         <artifactId>xmlunit-assertj</artifactId>
890         <version>2.6.3</version>
891         <scope>test</scope>
892       </dependency>
893       <dependency>
894         <groupId>org.xmlunit</groupId>
895         <artifactId>xmlunit-matchers</artifactId>
896         <version>2.6.3</version>
897         <scope>test</scope>
898       </dependency>
899       <!-- FIXME: remove this once we have migrated over -->
900       <dependency>
901         <groupId>org.xmlunit</groupId>
902         <artifactId>xmlunit-legacy</artifactId>
903         <version>2.6.3</version>
904         <scope>test</scope>
905       </dependency>
906
907       <!-- Annotations for modernizer-maven-plugin -->
908       <dependency>
909         <groupId>org.gaul</groupId>
910         <artifactId>modernizer-maven-annotations</artifactId>
911         <!-- This should match the plugin version below -->
912         <version>2.1.0</version>
913         <scope>provided</scope>
914       </dependency>
915
916       <dependency>
917         <groupId>org.eclipse.jetty</groupId>
918         <artifactId>jetty-bom</artifactId>
919         <version>9.4.22.v20191022</version>
920         <scope>import</scope>
921         <type>pom</type>
922       </dependency>
923
924       <dependency>
925         <groupId>com.h2database</groupId>
926         <artifactId>h2</artifactId>
927         <version>1.4.200</version>
928       </dependency>
929
930       <!-- Xtend http://xtend-lang.org
931            NOTE: When you increase the version here,
932            then remember to also increase it for the
933            xtend-maven-plugin below! (We don't want to
934            use a Maven property, in order not to "leak" that.)
935        -->
936       <dependency>
937           <groupId>org.eclipse.xtend</groupId>
938           <artifactId>org.eclipse.xtend.lib</artifactId>
939           <version>2.19.0</version>
940       </dependency>
941       <dependency>
942           <groupId>org.eclipse.xtend</groupId>
943           <artifactId>org.eclipse.xtend.lib.macro</artifactId>
944           <version>2.19.0</version>
945       </dependency>
946       <dependency>
947           <groupId>org.eclipse.xtext</groupId>
948           <artifactId>org.eclipse.xtext.xbase.lib</artifactId>
949           <version>2.19.0</version>
950       </dependency>
951
952       <!-- Annotations -->
953       <dependency>
954         <groupId>javax.inject</groupId>
955         <artifactId>javax.inject</artifactId>
956         <version>1</version>
957         <optional>true</optional>
958       </dependency>
959
960       <!-- jung, a graph library -->
961       <dependency>
962         <groupId>net.sf.jung</groupId>
963         <artifactId>jung-api</artifactId>
964         <version>2.1.1</version>
965       </dependency>
966       <dependency>
967         <groupId>net.sf.jung</groupId>
968         <artifactId>jung-algorithms</artifactId>
969         <version>2.1.1</version>
970       </dependency>
971       <dependency>
972         <groupId>net.sf.jung</groupId>
973         <artifactId>jung-graph-impl</artifactId>
974         <version>2.1.1</version>
975       </dependency>
976
977       <!-- Karaf console support -->
978       <dependency>
979         <groupId>org.apache.karaf.shell</groupId>
980         <artifactId>org.apache.karaf.shell.core</artifactId>
981         <version>${karaf.version}</version>
982         <scope>provided</scope>
983       </dependency>
984       <dependency>
985         <groupId>org.apache.karaf.shell</groupId>
986         <artifactId>org.apache.karaf.shell.console</artifactId>
987         <version>${karaf.version}</version>
988         <scope>provided</scope>
989       </dependency>
990
991       <!-- ThreeTen-Extra, date/time complements -->
992       <dependency>
993         <groupId>org.threeten</groupId>
994         <artifactId>threeten-extra</artifactId>
995         <version>1.5.0</version>
996       </dependency>
997
998       <!-- When updating this version, consider antl4-maven-plugin below -->
999       <dependency>
1000         <groupId>org.antlr</groupId>
1001         <artifactId>antlr4-runtime</artifactId>
1002         <version>4.8-1</version>
1003       </dependency>
1004       <!-- Aries' Blueprint version should be kept in sync to the version actually
1005            used by our ${karaf[4].version} ... please bump this when increasing that.
1006            TODO Find a smarter way to inherit this from a (TBD..) Karaf artifacts BOM! -->
1007       <dependency>
1008         <groupId>org.apache.aries.blueprint</groupId>
1009         <artifactId>org.apache.aries.blueprint.core</artifactId>
1010         <version>1.10.2</version>
1011       </dependency>
1012       <dependency>
1013         <groupId>org.apache.aries.blueprint</groupId>
1014         <artifactId>blueprint-maven-plugin-annotation</artifactId>
1015         <version>1.3.0</version>
1016         <optional>true</optional>
1017       </dependency>
1018
1019       <!-- Apache SSHD with netty -->
1020       <dependency>
1021         <groupId>org.apache.sshd</groupId>
1022         <artifactId>sshd-netty</artifactId>
1023         <version>2.3.0</version>
1024         <exclusions>
1025           <exclusion>
1026             <!-- We provide sshd-osgi instead -->
1027             <groupId>org.apache.sshd</groupId>
1028             <artifactId>sshd-core</artifactId>
1029           </exclusion>
1030         </exclusions>
1031       </dependency>
1032       <dependency>
1033         <groupId>org.apache.sshd</groupId>
1034         <artifactId>sshd-osgi</artifactId>
1035         <version>2.3.0</version>
1036       </dependency>
1037       <dependency>
1038         <groupId>net.i2p.crypto</groupId>
1039         <artifactId>eddsa</artifactId>
1040         <version>0.3.0</version>
1041       </dependency>
1042
1043       <!-- TrieMap library -->
1044       <dependency>
1045         <groupId>tech.pantheon.triemap</groupId>
1046         <artifactId>bom</artifactId>
1047         <version>1.1.0</version>
1048         <scope>import</scope>
1049         <type>pom</type>
1050       </dependency>
1051
1052       <!-- Dropwizard metrics -->
1053       <dependency>
1054         <groupId>io.dropwizard.metrics</groupId>
1055         <artifactId>metrics-bom</artifactId>
1056         <version>4.0.5</version>
1057         <scope>import</scope>
1058         <type>pom</type>
1059       </dependency>
1060
1061       <!-- JAXB for Java 11+, match this with Karaf -->
1062       <dependency>
1063         <groupId>javax.xml.bind</groupId>
1064         <artifactId>jaxb-api</artifactId>
1065         <version>2.3.0</version>
1066       </dependency>
1067       <dependency>
1068         <groupId>org.glassfish.jaxb</groupId>
1069         <artifactId>jaxb-runtime</artifactId>
1070         <version>2.3.1</version>
1071       </dependency>
1072     </dependencies>
1073   </dependencyManagement>
1074
1075   <dependencies>
1076     <!--
1077          We expect slf4j-api to be provided by the platform.
1078          Karaf provides it, other containers need to provide it themselves.
1079     -->
1080     <dependency>
1081       <groupId>org.slf4j</groupId>
1082       <artifactId>slf4j-api</artifactId>
1083       <scope>provided</scope>
1084     </dependency>
1085
1086     <!--
1087           Enable useful code quality annotations everywhere. Since these annotations
1088           are not required at runtime.
1089     -->
1090     <dependency>
1091       <groupId>org.eclipse.jdt</groupId>
1092       <artifactId>org.eclipse.jdt.annotation</artifactId>
1093       <scope>provided</scope>
1094     </dependency>
1095     <dependency>
1096       <groupId>com.github.spotbugs</groupId>
1097       <artifactId>spotbugs-annotations</artifactId>
1098       <scope>provided</scope>
1099       <optional>true</optional>
1100     </dependency>
1101     <dependency>
1102       <groupId>org.gaul</groupId>
1103       <artifactId>modernizer-maven-annotations</artifactId>
1104       <scope>provided</scope>
1105     </dependency>
1106
1107     <!--
1108           Testing output should be routed through slf4j-simple.
1109     -->
1110     <dependency>
1111       <groupId>org.slf4j</groupId>
1112       <artifactId>slf4j-simple</artifactId>
1113       <scope>test</scope>
1114     </dependency>
1115
1116     <!--
1117           Unit tests can use JUnit + Mockito + Hamcrest by default.
1118     -->
1119     <dependency>
1120       <groupId>org.hamcrest</groupId>
1121       <artifactId>hamcrest</artifactId>
1122       <scope>test</scope>
1123     </dependency>
1124     <dependency>
1125       <!-- This dependency needs to come before junit until we upgrade to JUnit 5. -->
1126       <groupId>org.hamcrest</groupId>
1127       <artifactId>hamcrest-library</artifactId>
1128       <scope>test</scope>
1129     </dependency>
1130     <dependency>
1131       <groupId>junit</groupId>
1132       <artifactId>junit</artifactId>
1133       <scope>test</scope>
1134     </dependency>
1135     <dependency>
1136       <groupId>org.mockito</groupId>
1137       <artifactId>mockito-core</artifactId>
1138       <scope>test</scope>
1139     </dependency>
1140   </dependencies>
1141
1142   <build>
1143     <pluginManagement>
1144       <plugins>
1145         <!-- Official maven plugins, alpha-sorted by artifactId.
1146              We do not need to specify the groupId. -->
1147         <plugin>
1148           <artifactId>maven-checkstyle-plugin</artifactId>
1149           <version>3.1.1</version>
1150           <dependencies>
1151             <dependency>
1152               <groupId>com.puppycrawl.tools</groupId>
1153               <artifactId>checkstyle</artifactId>
1154               <!-- This should match the dependency management on com.puppycrawl.tools:checkstyle above -->
1155               <version>8.29</version>
1156             </dependency>
1157             <dependency>
1158               <groupId>org.opendaylight.odlparent</groupId>
1159               <artifactId>checkstyle</artifactId>
1160               <version>7.0.0-SNAPSHOT</version>
1161             </dependency>
1162             <dependency>
1163               <groupId>com.github.sevntu-checkstyle</groupId>
1164               <artifactId>sevntu-checks</artifactId>
1165               <version>1.37.1</version>
1166             </dependency>
1167           </dependencies>
1168           <configuration>
1169             <configLocation>odl_checks.xml</configLocation>
1170             <suppressionsLocation>checkstyle-suppressions.xml</suppressionsLocation>
1171             <!-- <sourceDirectories> are needed so that checkstyle ignores the
1172                  generated sources directory -->
1173             <sourceDirectories>
1174               <directory>${project.build.sourceDirectory}</directory>
1175             </sourceDirectories>
1176             <includeResources>true</includeResources>
1177             <includeTestSourceDirectory>true</includeTestSourceDirectory>
1178             <includeTestResources>true</includeTestResources>
1179             <includes>**\/*.java, **\/*.xtend</includes>
1180             <excludes>
1181               org/opendaylight/yang/gen/**,
1182               **/protobuff/messages/**,
1183               **/thrift/gen/*.java,
1184               **/module-info.java
1185             </excludes>
1186             <failsOnError>false</failsOnError>
1187             <consoleOutput>true</consoleOutput>
1188           </configuration>
1189           <executions>
1190             <execution>
1191               <id>check-license</id>
1192               <goals>
1193                 <goal>check</goal>
1194               </goals>
1195               <phase>process-sources</phase>
1196               <configuration>
1197                 <configLocation>check-license.xml</configLocation>
1198                 <headerLocation>EPL-LICENSE.regexp.txt</headerLocation>
1199                 <includeResources>false</includeResources>
1200                 <includeTestSourceDirectory>true</includeTestSourceDirectory>
1201                 <includeTestResources>false</includeTestResources>
1202                 <sourceDirectories>
1203                   <directory>${project.build.sourceDirectory}</directory>
1204                 </sourceDirectories>
1205                 <excludes>
1206                   org/opendaylight/yang/gen/**,
1207                   **/protobuff/messages/**,
1208                   **/thrift/gen/*.java
1209                 </excludes>
1210                 <failsOnError>false</failsOnError>
1211                 <consoleOutput>true</consoleOutput>
1212               </configuration>
1213             </execution>
1214             <execution>
1215               <goals>
1216                 <goal>check</goal>
1217               </goals>
1218               <phase>process-sources</phase>
1219               <configuration>
1220                 <failOnViolation>${odlparent.checkstyle.enforce}</failOnViolation>
1221                 <skip>${odlparent.checkstyle.skip}</skip>
1222                 <propertyExpansion>checkstyle.violationSeverity=error</propertyExpansion>
1223               </configuration>
1224             </execution>
1225           </executions>
1226         </plugin>
1227         <plugin>
1228           <groupId>org.apache.maven.plugins</groupId>
1229           <artifactId>maven-pmd-plugin</artifactId>
1230           <version>3.13.0</version>
1231           <executions>
1232             <execution>
1233               <id>cpd</id>
1234               <phase>process-sources</phase>
1235               <goals>
1236                 <goal>cpd-check</goal>
1237               </goals>
1238               <configuration>
1239                 <failOnViolation>${pmd.cpd.fail}</failOnViolation>
1240                 <!-- 100 "tokens" here correspond to approx. 5-10 lines of code -->
1241                 <minimumTokens>101</minimumTokens>
1242                 <printFailingErrors>true</printFailingErrors>
1243                 <excludeRoots>
1244                   <!-- FIXME: this should be a wildcard, but PMD is brain-damaged and does
1245                               not understand path prefixes nor wildcards. Details are available
1246                               at http://stackoverflow.com/questions/15647771/pmd-exclude-not-working
1247                               Hence people introducing new generated sources have to include
1248                               PMD config too.
1249                    -->
1250                   <excludeRoot>${project.build.directory}/generated-sources</excludeRoot>
1251                   <excludeRoot>${project.build.directory}/generated-test-sources</excludeRoot>
1252                 </excludeRoots>
1253                 <linkXRef>false</linkXRef>
1254               </configuration>
1255             </execution>
1256           </executions>
1257         </plugin>
1258         <plugin>
1259           <artifactId>maven-compiler-plugin</artifactId>
1260           <version>3.8.1</version>
1261           <configuration>
1262             <showWarnings>true</showWarnings>
1263             <compilerArgs>
1264               <arg>-parameters</arg>
1265               <arg>-Xlint:deprecation</arg>
1266               <arg>-Xlint:unchecked</arg>
1267             </compilerArgs>
1268             <annotationProcessorPaths>
1269               <dependency>
1270                 <groupId>org.immutables</groupId>
1271                 <artifactId>value</artifactId>
1272                 <!-- Keep this version in sync with dependency declaration above -->
1273                 <version>2.7.5</version>
1274               </dependency>
1275               <dependency>
1276                 <groupId>org.kohsuke.metainf-services</groupId>
1277                 <artifactId>metainf-services</artifactId>
1278                 <!-- Keep this version in sync with dependency declaration above -->
1279                 <version>1.8</version>
1280               </dependency>
1281             </annotationProcessorPaths>
1282           </configuration>
1283         </plugin>
1284         <plugin>
1285           <artifactId>maven-failsafe-plugin</artifactId>
1286           <version>2.22.2</version>
1287         </plugin>
1288         <plugin>
1289           <artifactId>maven-invoker-plugin</artifactId>
1290           <version>3.2.0</version>
1291         </plugin>
1292         <plugin>
1293           <artifactId>maven-dependency-plugin</artifactId>
1294           <executions>
1295             <execution>
1296               <id>unpack-license</id>
1297               <phase>generate-resources</phase>
1298               <goals>
1299                 <goal>copy</goal>
1300               </goals>
1301               <configuration>
1302                 <artifactItems>
1303                   <artifactItem>
1304                     <groupId>org.opendaylight.odlparent</groupId>
1305                     <artifactId>odl-license</artifactId>
1306                     <version>7.0.0-SNAPSHOT</version>
1307                     <type>license</type>
1308                     <outputDirectory>${project.build.outputDirectory}</outputDirectory>
1309                     <destFileName>LICENSE</destFileName>
1310                     <overWrite>false</overWrite>
1311                   </artifactItem>
1312                 </artifactItems>
1313                 <silent>true</silent>
1314               </configuration>
1315             </execution>
1316           </executions>
1317         </plugin>
1318
1319         <plugin>
1320           <artifactId>maven-plugin-plugin</artifactId>
1321           <version>3.6.0</version>
1322         </plugin>
1323
1324         <plugin>
1325           <artifactId>maven-remote-resources-plugin</artifactId>
1326           <version>1.6.0</version>
1327         </plugin>
1328         <plugin>
1329           <artifactId>maven-resources-plugin</artifactId>
1330           <version>3.1.0</version>
1331         </plugin>
1332         <plugin>
1333           <artifactId>maven-shade-plugin</artifactId>
1334           <version>3.2.2</version>
1335         </plugin>
1336         <plugin>
1337           <artifactId>maven-source-plugin</artifactId>
1338           <version>3.2.1</version>
1339           <executions>
1340             <execution>
1341               <id>attach-sources</id>
1342               <phase>verify</phase>
1343               <goals>
1344                 <goal>jar-no-fork</goal>
1345               </goals>
1346             </execution>
1347           </executions>
1348         </plugin>
1349         <plugin>
1350           <artifactId>maven-surefire-plugin</artifactId>
1351           <version>2.22.2</version>
1352           <configuration>
1353             <redirectTestOutputToFile>${maven.test.redirectTestOutputToFile}</redirectTestOutputToFile>
1354             <trimStackTrace>false</trimStackTrace>
1355           </configuration>
1356         </plugin>
1357
1358         <!-- Third-party plugins, grouped by groupId, alpha-sorted by artifactId -->
1359         <plugin>
1360           <!-- Support Blueprint XML construction using annotations -->
1361           <groupId>org.apache.aries.blueprint</groupId>
1362           <artifactId>blueprint-maven-plugin</artifactId>
1363           <version>1.10.0</version>
1364           <!-- TODO remove dependencies when we bump from 1.10.0 to 1.11.0 (or 1.10.1);
1365              see https://jira.opendaylight.org/browse/ODLPARENT-167 & https://jira.apache.org/jira/browse/ARIES-1826 -->
1366           <dependencies>
1367             <dependency>
1368               <groupId>org.apache.xbean</groupId>
1369               <artifactId>xbean-finder-shaded</artifactId>
1370               <version>4.14</version>
1371             </dependency>
1372           </dependencies>
1373           <configuration>
1374             <scanPaths>
1375               <scanPath>${project.groupId}</scanPath>
1376             </scanPaths>
1377           </configuration>
1378           <executions>
1379             <execution>
1380               <goals>
1381                 <goal>blueprint-generate</goal>
1382               </goals>
1383             </execution>
1384           </executions>
1385         </plugin>
1386
1387         <plugin>
1388           <groupId>org.apache.felix</groupId>
1389           <artifactId>maven-bundle-plugin</artifactId>
1390           <version>4.2.1</version>
1391           <extensions>true</extensions>
1392           <configuration>
1393             <instructions>
1394               <!-- Note the '-' for git.properties.. this is required because git-commit-id-plugin has <failOnNoGitDirectory>false,
1395                    so that the build doesn't fail if there is no .../.git/ - so git.properties is effectively optional;
1396                    and so the '-' there is needed to make the maven-bundle-plugin if that resource is not present.  -->
1397               <Include-Resource>{maven-resources},${project.build.directory}/classes/LICENSE,META-INF/git.properties=-${project.build.directory}/classes/META-INF/git.properties,META-INF/services=-${project.build.directory}/classes/META-INF/services</Include-Resource>
1398
1399               <!-- Based on https://dev.eclipse.org/mhonarc/lists/equinox-dev/msg01088.html we do want
1400                    to generate Import-Service and Export-Service headers. -->
1401               <_removeheaders>Import-Service,Export-Service</_removeheaders>
1402             </instructions>
1403           </configuration>
1404         </plugin>
1405
1406         <plugin>
1407           <groupId>org.apache.karaf.tooling</groupId>
1408           <artifactId>karaf-maven-plugin</artifactId>
1409           <version>${karaf.version}</version>
1410         </plugin>
1411
1412         <plugin>
1413           <groupId>org.apache.servicemix.tooling</groupId>
1414           <artifactId>depends-maven-plugin</artifactId>
1415           <version>1.4.0</version>
1416           <executions>
1417             <execution>
1418               <id>generate-depends-file</id>
1419               <goals>
1420                 <goal>generate-depends-file</goal>
1421               </goals>
1422             </execution>
1423           </executions>
1424         </plugin>
1425
1426         <plugin>
1427           <groupId>com.webcohesion.enunciate</groupId>
1428           <artifactId>enunciate-maven-plugin</artifactId>
1429           <!-- This must be aligned with the version of enunciate-core-annotations specified above -->
1430           <version>2.12.1</version>
1431         </plugin>
1432
1433         <plugin>
1434           <groupId>org.gaul</groupId>
1435           <artifactId>modernizer-maven-plugin</artifactId>
1436           <version>2.1.0</version>
1437           <configuration>
1438             <javaVersion>${odlparent.modernizer.target}</javaVersion>
1439             <failOnViolations>${odlparent.modernizer.enforce}</failOnViolations>
1440             <skip>${odlparent.modernizer.skip}</skip>
1441           </configuration>
1442
1443           <executions>
1444             <execution>
1445               <id>modernizer</id>
1446               <phase>verify</phase>
1447               <goals>
1448                 <goal>modernizer</goal>
1449               </goals>
1450             </execution>
1451           </executions>
1452         </plugin>
1453
1454         <plugin>
1455           <groupId>com.github.spotbugs</groupId>
1456           <artifactId>spotbugs-maven-plugin</artifactId>
1457           <version>3.1.12.2</version>
1458           <dependencies>
1459             <dependency>
1460               <groupId>com.github.spotbugs</groupId>
1461               <artifactId>spotbugs</artifactId>
1462               <version>3.1.12</version>
1463             </dependency>
1464             <dependency>
1465               <groupId>org.opendaylight.odlparent</groupId>
1466               <artifactId>spotbugs</artifactId>
1467               <version>7.0.0-SNAPSHOT</version>
1468             </dependency>
1469             <dependency>
1470               <!-- The SpotBugs Maven plugin uses SLF4J 1.8 beta 2 -->
1471               <groupId>org.slf4j</groupId>
1472               <artifactId>slf4j-simple</artifactId>
1473               <version>1.8.0-beta2</version>
1474             </dependency>
1475           </dependencies>
1476           <configuration>
1477             <plugins>
1478               <plugin>
1479                 <groupId>jp.skypencil.findbugs.slf4j</groupId>
1480                 <artifactId>bug-pattern</artifactId>
1481                 <version>1.5.0</version>
1482               </plugin>
1483             </plugins>
1484             <!--
1485               Enables analysis which takes more memory but finds more bugs.
1486               If you run out of memory, changes the value of the effort element
1487               to 'Low'.
1488             -->
1489             <effort>Max</effort>
1490             <!-- Reports all bugs (other values are medium and max) -->
1491             <threshold>Low</threshold>
1492             <!-- Build doesn't fail if problems are found -->
1493             <failOnError>${odlparent.spotbugs.enforce}</failOnError>
1494             <skip>${odlparent.spotbugs.skip}</skip>
1495             <!-- References the excluded rules -->
1496             <excludeFilterFile>spotbugs-exclude.xml</excludeFilterFile>
1497             <!-- Produces XML report -->
1498             <xmlOutput>true</xmlOutput>
1499             <!-- Configures the directory in which the XML report is created -->
1500             <findbugsXmlOutputDirectory>${project.build.directory}/spotbugs</findbugsXmlOutputDirectory>
1501           </configuration>
1502           <executions>
1503             <!--
1504               Ensures that SpotBugs inspects source code when project is compiled.
1505             -->
1506             <execution>
1507               <id>analyze-compile</id>
1508               <phase>compile</phase>
1509               <goals>
1510                 <goal>check</goal>
1511               </goals>
1512             </execution>
1513           </executions>
1514         </plugin>
1515         <plugin>
1516           <groupId>org.codehaus.mojo</groupId>
1517           <artifactId>properties-maven-plugin</artifactId>
1518           <version>1.0.0</version>
1519         </plugin>
1520         <plugin>
1521           <groupId>org.eclipse.xtend</groupId>
1522           <artifactId>xtend-maven-plugin</artifactId>
1523           <!-- NOTE: This version MUST be kept in sync with the Xtend version in <dependencyManagement> -->
1524           <version>2.19.0</version>
1525           <executions>
1526             <execution>
1527               <goals>
1528                 <goal>compile</goal>
1529                 <goal>testCompile</goal>
1530               </goals>
1531               <configuration>
1532                 <outputDirectory>${project.build.directory}/generated-sources/xtend</outputDirectory>
1533                 <testOutputDirectory>${project.build.directory}/generated-test-sources/xtend</testOutputDirectory>
1534               </configuration>
1535             </execution>
1536           </executions>
1537         </plugin>
1538         <plugin>
1539           <groupId>org.eclipse.m2e</groupId>
1540           <artifactId>lifecycle-mapping</artifactId>
1541           <version>1.0.0</version>
1542           <configuration>
1543             <lifecycleMappingMetadata>
1544               <pluginExecutions>
1545                 <pluginExecution>
1546                   <pluginExecutionFilter>
1547                     <groupId>org.apache.felix</groupId>
1548                     <artifactId>maven-bundle-plugin</artifactId>
1549                     <versionRange>[1.0,)</versionRange>
1550                     <goals>
1551                       <goal>manifest</goal>
1552                     </goals>
1553                   </pluginExecutionFilter>
1554                   <action>
1555                     <execute/>
1556                   </action>
1557                 </pluginExecution>
1558                 <pluginExecution>
1559                   <pluginExecutionFilter>
1560                     <groupId>org.apache.maven.plugins</groupId>
1561                     <artifactId>maven-enforcer-plugin</artifactId>
1562                     <versionRange>[1.0.0,)</versionRange>
1563                     <goals>
1564                       <goal>enforce</goal>
1565                     </goals>
1566                   </pluginExecutionFilter>
1567                   <action>
1568                     <ignore/>
1569                   </action>
1570                 </pluginExecution>
1571                 <pluginExecution>
1572                   <pluginExecutionFilter>
1573                     <groupId>org.apache.maven.plugins</groupId>
1574                     <artifactId>maven-dependency-plugin</artifactId>
1575                     <versionRange>[2.10,)</versionRange>
1576                     <goals>
1577                       <goal>copy</goal>
1578                     </goals>
1579                   </pluginExecutionFilter>
1580                   <action>
1581                     <ignore/>
1582                   </action>
1583                 </pluginExecution>
1584                 <pluginExecution>
1585                   <pluginExecutionFilter>
1586                     <groupId>org.apache.maven.plugins</groupId>
1587                     <artifactId>maven-pmd-plugin</artifactId>
1588                     <versionRange>[3.6,)</versionRange>
1589                     <goals>
1590                       <goal>cpd-check</goal>
1591                     </goals>
1592                   </pluginExecutionFilter>
1593                   <action>
1594                     <ignore/>
1595                   </action>
1596                 </pluginExecution>
1597                 <!-- The plugin will eventually be removed, remove this too at that point -->
1598                 <pluginExecution>
1599                   <pluginExecutionFilter>
1600                     <groupId>org.apache.maven.plugins</groupId>
1601                     <artifactId>maven-antrun-plugin</artifactId>
1602                     <versionRange>[1.8,)</versionRange>
1603                     <goals>
1604                       <goal>run</goal>
1605                     </goals>
1606                   </pluginExecutionFilter>
1607                   <action>
1608                     <ignore/>
1609                   </action>
1610                 </pluginExecution>
1611                 <pluginExecution>
1612                   <pluginExecutionFilter>
1613                     <groupId>org.apache.servicemix.tooling</groupId>
1614                     <artifactId>depends-maven-plugin</artifactId>
1615                     <versionRange>[1.2,)</versionRange>
1616                     <goals>
1617                       <goal>generate-depends-file</goal>
1618                     </goals>
1619                   </pluginExecutionFilter>
1620                   <action>
1621                     <execute/>
1622                   </action>
1623                 </pluginExecution>
1624                 <pluginExecution>
1625                   <pluginExecutionFilter>
1626                     <groupId>org.jacoco</groupId>
1627                     <artifactId>jacoco-maven-plugin</artifactId>
1628                     <versionRange>[0.7.0,)</versionRange>
1629                     <goals>
1630                       <goal>prepare-agent</goal>
1631                     </goals>
1632                   </pluginExecutionFilter>
1633                   <action>
1634                     <ignore/>
1635                   </action>
1636                 </pluginExecution>
1637
1638                 <pluginExecution>
1639                   <pluginExecutionFilter>
1640                     <groupId>org.ops4j.pax.exam</groupId>
1641                     <artifactId>maven-paxexam-plugin</artifactId>
1642                     <versionRange>[1.2.4,)</versionRange>
1643                     <goals>
1644                       <goal>generate-depends-file</goal>
1645                     </goals>
1646                   </pluginExecutionFilter>
1647                   <action>
1648                     <ignore/>
1649                   </action>
1650                 </pluginExecution>
1651
1652                 <pluginExecution>
1653                   <pluginExecutionFilter>
1654                     <groupId>org.basepom.maven</groupId>
1655                     <artifactId>
1656                       duplicate-finder-maven-plugin
1657                     </artifactId>
1658                     <versionRange>[1.2.1,)</versionRange>
1659                     <goals>
1660                       <goal>check</goal>
1661                     </goals>
1662                   </pluginExecutionFilter>
1663                   <action>
1664                     <ignore></ignore>
1665                   </action>
1666                 </pluginExecution>
1667               </pluginExecutions>
1668             </lifecycleMappingMetadata>
1669           </configuration>
1670         </plugin>
1671
1672         <plugin>
1673           <groupId>org.jacoco</groupId>
1674           <artifactId>jacoco-maven-plugin</artifactId>
1675           <configuration>
1676             <!-- Note: This exclusion list should match <sonar.exclusions>
1677                        property above -->
1678             <excludes>
1679               <exclude>**/gen/**</exclude>
1680               <exclude>**/generated-sources/**</exclude>
1681               <exclude>**/generated-test-sources/**</exclude>
1682               <exclude>**/yang-gen/**</exclude>
1683               <exclude>**/yang-gen-config/**</exclude>
1684               <exclude>**/yang-gen-sal/**</exclude>
1685               <exclude>**/yang-gen-code/**</exclude>
1686               <exclude>**/pax/**</exclude>
1687             </excludes>
1688           </configuration>
1689         </plugin>
1690
1691         <plugin>
1692           <groupId>org.ops4j.pax.exam</groupId>
1693           <artifactId>maven-paxexam-plugin</artifactId>
1694           <version>1.2.4</version>
1695         </plugin>
1696
1697         <!-- When updating this version, consider antl4-runtime above -->
1698         <plugin>
1699           <groupId>org.antlr</groupId>
1700           <artifactId>antlr4-maven-plugin</artifactId>
1701           <version>4.8-1</version>
1702         </plugin>
1703       </plugins>
1704     </pluginManagement>
1705
1706     <plugins>
1707       <plugin>
1708         <artifactId>maven-enforcer-plugin</artifactId>
1709         <executions>
1710           <execution>
1711             <id>enforce-banned-dependencies</id>
1712             <goals>
1713               <goal>enforce</goal>
1714             </goals>
1715             <configuration>
1716               <rules>
1717                 <bannedDependencies>
1718                   <message>Please always use mockito-core instead of mockito-all (see https://bugs.opendaylight.org/show_bug.cgi?id=7662), and spotbugs:annotations instead of findbugs:annotations</message>
1719                   <excludes>
1720                     <exclude>org.mockito:mockito-all</exclude>
1721                     <exclude>com.google.code.findbugs:annotations</exclude>
1722                   </excludes>
1723                 </bannedDependencies>
1724               </rules>
1725               <fail>true</fail>
1726             </configuration>
1727           </execution>
1728         </executions>
1729       </plugin>
1730       <plugin>
1731         <groupId>org.basepom.maven</groupId>
1732         <artifactId>duplicate-finder-maven-plugin</artifactId>
1733         <version>1.3.0</version>
1734         <executions>
1735           <execution>
1736             <id>find-duplicate-classpath-entries</id>
1737             <phase>verify</phase>
1738             <goals>
1739               <goal>check</goal>
1740             </goals>
1741           </execution>
1742         </executions>
1743         <configuration>
1744             <!-- https://github.com/basepom/duplicate-finder-maven-plugin/wiki -->
1745             <failBuildInCaseOfConflict>false</failBuildInCaseOfConflict>
1746             <failBuildInCaseOfDifferentContentConflict>true</failBuildInCaseOfDifferentContentConflict>
1747             <failBuildInCaseOfEqualContentConflict>false</failBuildInCaseOfEqualContentConflict>
1748             <printEqualFiles>false</printEqualFiles>
1749             <quiet>true</quiet>
1750             <!-- In addition to https://github.com/basepom/duplicate-finder-maven-plugin/wiki/Default%20ignored%20elements,
1751                  as explained on https://github.com/basepom/duplicate-finder-maven-plugin/wiki/Ignoring%20Dependencies%20and%20Resources,
1752                  we use resources not dependencies (see https://github.com/basepom/duplicate-finder-maven-plugin/wiki/Classpath%20Exceptions)
1753                  also ignore: -->
1754             <ignoredResourcePatterns>
1755               <ignoredResourcePattern>org/opendaylight/blueprint/.*\.xml$</ignoredResourcePattern>
1756               <ignoredResourcePattern>OSGI-OPT/bnd.bnd$</ignoredResourcePattern>
1757               <ignoredResourcePattern>WEB-INF/web.xml</ignoredResourcePattern>
1758               <ignoredResourcePattern>README.*$</ignoredResourcePattern>
1759               <ignoredResourcePattern>.*\.html$</ignoredResourcePattern>
1760               <ignoredResourcePattern>reference.conf</ignoredResourcePattern>
1761             </ignoredResourcePatterns>
1762             <ignoredClassPatterns>
1763               <ignoredClassPattern>META-INF.versions.*$</ignoredClassPattern>
1764             </ignoredClassPatterns>
1765             <ignoredDependencies>
1766               <ignoredDependency>
1767                 <groupId>org.slf4j</groupId>
1768                 <artifactId>slf4j-simple</artifactId>
1769               </ignoredDependency>
1770               <ignoredDependency>
1771                 <groupId>org.opendaylight.odlparent</groupId>
1772                 <artifactId>opendaylight-karaf-empty</artifactId>
1773               </ignoredDependency>
1774             </ignoredDependencies>
1775         </configuration>
1776       </plugin>
1777       <plugin>
1778         <artifactId>maven-dependency-plugin</artifactId>
1779       </plugin>
1780       <plugin>
1781         <artifactId>maven-checkstyle-plugin</artifactId>
1782       </plugin>
1783       <plugin>
1784           <artifactId>maven-pmd-plugin</artifactId>
1785       </plugin>
1786       <plugin>
1787         <artifactId>maven-source-plugin</artifactId>
1788       </plugin>
1789       <plugin>
1790         <artifactId>maven-javadoc-plugin</artifactId>
1791       </plugin>
1792       <plugin>
1793         <groupId>org.gaul</groupId>
1794         <artifactId>modernizer-maven-plugin</artifactId>
1795       </plugin>
1796       <plugin>
1797         <groupId>com.github.spotbugs</groupId>
1798         <artifactId>spotbugs-maven-plugin</artifactId>
1799       </plugin>
1800
1801       <!-- Jacoco / Sonar -->
1802       <plugin>
1803         <groupId>org.jacoco</groupId>
1804         <artifactId>jacoco-maven-plugin</artifactId>
1805         <executions>
1806           <execution>
1807             <id>pre-unit-test</id>
1808             <goals>
1809               <goal>prepare-agent</goal>
1810             </goals>
1811           </execution>
1812           <execution>
1813             <id>report</id>
1814             <goals>
1815               <goal>report</goal>
1816             </goals>
1817           </execution>
1818         </executions>
1819       </plugin>
1820
1821       <plugin>
1822         <groupId>com.alexecollins.maven.plugin</groupId>
1823         <artifactId>script-maven-plugin</artifactId>
1824         <version>1.0.0</version>
1825         <executions>
1826            <execution>
1827              <phase>prepare-package</phase>
1828              <goals>
1829                <goal>execute</goal>
1830              </goals>
1831              <configuration>
1832                <script>
1833                  // BeanShell is 2005-ish and thus doesn't support generics, varargs, try-with-resources or lambdas, so:
1834                  // (If we do this kind of inline code in pom.xml more often, we shold have a new simple module in
1835                  //  odl-parent, which has *.java that we compile, and then just depend on it here and call one-line
1836                  //  static class methods only - it will be MUCH easier to write!)
1837                  void copy(File root, String glob, File target) {
1838                      java.nio.file.DirectoryStream dirStream = java.nio.file.Files.newDirectoryStream(root.toPath(), glob);
1839                      Iterator dirStreamIterator = dirStream.iterator();
1840                      while (dirStreamIterator.hasNext()) {
1841                          java.nio.file.Path path = dirStreamIterator.next();
1842                          java.nio.file.Files.copy(path, new File(target, path.toFile().getName()).toPath(),
1843                              new java.nio.file.CopyOption[] {
1844                                  java.nio.file.StandardCopyOption.REPLACE_EXISTING,
1845                                  java.nio.file.StandardCopyOption.COPY_ATTRIBUTES
1846                              }
1847                          );
1848                      }
1849                      dirStream.close();
1850                  }
1851
1852                  File gitRepoRootDir = project.basedir;
1853                  while (!new File(gitRepoRootDir, ".git").exists() &amp;&amp; gitRepoRootDir.getParentFile() != null) {
1854                      gitRepoRootDir = gitRepoRootDir.getParentFile();
1855                  }
1856
1857                  File target = new File(project.build.outputDirectory);
1858                  target.mkdirs();
1859                  copy(gitRepoRootDir, "README*", target);
1860                  copy(gitRepoRootDir, "CONTRIBUTING*", target);
1861                  copy(gitRepoRootDir, "PROJECT_INFO.yaml", target);
1862                </script>
1863              </configuration>
1864            </execution>
1865          </executions>
1866          <dependencies>
1867            <dependency>
1868              <groupId>org.apache-extras.beanshell</groupId>
1869              <artifactId>bsh</artifactId>
1870              <version>2.0b6</version>
1871            </dependency>
1872          </dependencies>
1873       </plugin>
1874     </plugins>
1875   </build>
1876
1877   <reporting>
1878     <plugins>
1879       <plugin>
1880         <artifactId>maven-checkstyle-plugin</artifactId>
1881         <version>3.1.0</version>
1882       </plugin>
1883
1884       <!-- FIXME: activate this
1885       <plugin>
1886         <artifactId>maven-project-info-reports-plugin</artifactId>
1887       </plugin-->
1888       <plugin>
1889         <groupId>org.codehaus.mojo</groupId>
1890         <artifactId>jdepend-maven-plugin</artifactId>
1891         <reportSets>
1892           <reportSet>
1893             <reports>
1894               <report>generate-no-fork</report>
1895             </reports>
1896           </reportSet>
1897         </reportSets>
1898       </plugin>
1899     </plugins>
1900   </reporting>
1901 </project>
1902