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