Remove mina-sshd declaration
[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>8.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.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>8.0.0-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.11</version>
338       </dependency>
339       <dependency>
340         <groupId>org.apache.commons</groupId>
341         <artifactId>commons-text</artifactId>
342         <version>1.9</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.22.0</version>
898       </dependency>
899       <dependency>
900           <groupId>org.eclipse.xtend</groupId>
901           <artifactId>org.eclipse.xtend.lib.macro</artifactId>
902           <version>2.22.0</version>
903       </dependency>
904       <dependency>
905           <groupId>org.eclipse.xtext</groupId>
906           <artifactId>org.eclipse.xtext.xbase.lib</artifactId>
907           <version>2.22.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       <!-- TrieMap library -->
978       <dependency>
979         <groupId>tech.pantheon.triemap</groupId>
980         <artifactId>bom</artifactId>
981         <version>1.2.0</version>
982         <scope>import</scope>
983         <type>pom</type>
984       </dependency>
985
986       <!-- Dropwizard metrics -->
987       <dependency>
988         <groupId>io.dropwizard.metrics</groupId>
989         <artifactId>metrics-bom</artifactId>
990         <version>4.1.9</version>
991         <scope>import</scope>
992         <type>pom</type>
993       </dependency>
994
995       <!-- JAXB for Java 11+, match this with Karaf -->
996       <dependency>
997         <groupId>jakarta.xml.bind</groupId>
998         <artifactId>jakarta.xml.bind-api</artifactId>
999         <version>2.3.2</version>
1000       </dependency>
1001       <dependency>
1002         <groupId>org.glassfish.jaxb</groupId>
1003         <artifactId>jaxb-runtime</artifactId>
1004         <version>2.3.2</version>
1005       </dependency>
1006     </dependencies>
1007   </dependencyManagement>
1008
1009   <dependencies>
1010     <!--
1011          We expect slf4j-api to be provided by the platform.
1012          Karaf provides it, other containers need to provide it themselves.
1013     -->
1014     <dependency>
1015       <groupId>org.slf4j</groupId>
1016       <artifactId>slf4j-api</artifactId>
1017       <scope>provided</scope>
1018     </dependency>
1019
1020     <!--
1021           Enable useful code quality annotations everywhere. Since these annotations
1022           are not required at runtime.
1023     -->
1024     <dependency>
1025       <groupId>org.eclipse.jdt</groupId>
1026       <artifactId>org.eclipse.jdt.annotation</artifactId>
1027       <scope>provided</scope>
1028     </dependency>
1029     <dependency>
1030       <groupId>com.github.spotbugs</groupId>
1031       <artifactId>spotbugs-annotations</artifactId>
1032       <scope>provided</scope>
1033       <optional>true</optional>
1034     </dependency>
1035     <dependency>
1036       <groupId>org.gaul</groupId>
1037       <artifactId>modernizer-maven-annotations</artifactId>
1038       <scope>provided</scope>
1039     </dependency>
1040
1041     <!--
1042           Testing output should be routed through slf4j-simple.
1043     -->
1044     <dependency>
1045       <groupId>org.slf4j</groupId>
1046       <artifactId>slf4j-simple</artifactId>
1047       <scope>test</scope>
1048     </dependency>
1049
1050     <!--
1051           Unit tests can use JUnit + Mockito + Hamcrest by default.
1052     -->
1053     <dependency>
1054       <groupId>org.hamcrest</groupId>
1055       <artifactId>hamcrest</artifactId>
1056       <scope>test</scope>
1057     </dependency>
1058     <dependency>
1059       <!-- This dependency needs to come before junit until we upgrade to JUnit 5. -->
1060       <groupId>org.hamcrest</groupId>
1061       <artifactId>hamcrest-library</artifactId>
1062       <scope>test</scope>
1063     </dependency>
1064     <dependency>
1065       <groupId>junit</groupId>
1066       <artifactId>junit</artifactId>
1067       <scope>test</scope>
1068     </dependency>
1069     <dependency>
1070       <groupId>org.mockito</groupId>
1071       <artifactId>mockito-core</artifactId>
1072       <scope>test</scope>
1073     </dependency>
1074   </dependencies>
1075
1076   <build>
1077     <pluginManagement>
1078       <plugins>
1079         <!-- Official maven plugins, alpha-sorted by artifactId.
1080              We do not need to specify the groupId. -->
1081         <plugin>
1082           <artifactId>maven-checkstyle-plugin</artifactId>
1083           <version>3.1.1</version>
1084           <dependencies>
1085             <dependency>
1086               <groupId>com.puppycrawl.tools</groupId>
1087               <artifactId>checkstyle</artifactId>
1088               <!-- This should match the dependency management on com.puppycrawl.tools:checkstyle above -->
1089               <version>8.34</version>
1090             </dependency>
1091             <dependency>
1092               <groupId>org.opendaylight.odlparent</groupId>
1093               <artifactId>checkstyle</artifactId>
1094               <version>8.0.0-SNAPSHOT</version>
1095             </dependency>
1096             <dependency>
1097               <groupId>com.github.sevntu-checkstyle</groupId>
1098               <artifactId>sevntu-checks</artifactId>
1099               <version>1.37.1</version>
1100             </dependency>
1101           </dependencies>
1102           <configuration>
1103             <configLocation>odl_checks.xml</configLocation>
1104             <suppressionsLocation>checkstyle-suppressions.xml</suppressionsLocation>
1105             <!-- <sourceDirectories> are needed so that checkstyle ignores the
1106                  generated sources directory -->
1107             <sourceDirectories>
1108               <directory>${project.build.sourceDirectory}</directory>
1109             </sourceDirectories>
1110             <includeResources>true</includeResources>
1111             <includeTestSourceDirectory>true</includeTestSourceDirectory>
1112             <includeTestResources>true</includeTestResources>
1113             <includes>**\/*.java, **\/*.xtend</includes>
1114             <excludes>
1115               org/opendaylight/yang/gen/**,
1116               **/protobuff/messages/**,
1117               **/thrift/gen/*.java,
1118               **/module-info.java
1119             </excludes>
1120             <failsOnError>false</failsOnError>
1121             <consoleOutput>true</consoleOutput>
1122           </configuration>
1123           <executions>
1124             <execution>
1125               <id>check-license</id>
1126               <goals>
1127                 <goal>check</goal>
1128               </goals>
1129               <phase>process-sources</phase>
1130               <configuration>
1131                 <configLocation>check-license.xml</configLocation>
1132                 <headerLocation>EPL-LICENSE.regexp.txt</headerLocation>
1133                 <includeResources>false</includeResources>
1134                 <includeTestSourceDirectory>true</includeTestSourceDirectory>
1135                 <includeTestResources>false</includeTestResources>
1136                 <sourceDirectories>
1137                   <directory>${project.build.sourceDirectory}</directory>
1138                 </sourceDirectories>
1139                 <excludes>
1140                   org/opendaylight/yang/gen/**,
1141                   **/protobuff/messages/**,
1142                   **/thrift/gen/*.java
1143                 </excludes>
1144                 <failsOnError>false</failsOnError>
1145                 <consoleOutput>true</consoleOutput>
1146               </configuration>
1147             </execution>
1148             <execution>
1149               <goals>
1150                 <goal>check</goal>
1151               </goals>
1152               <phase>process-sources</phase>
1153               <configuration>
1154                 <failOnViolation>${odlparent.checkstyle.enforce}</failOnViolation>
1155                 <skip>${odlparent.checkstyle.skip}</skip>
1156                 <propertyExpansion>checkstyle.violationSeverity=error</propertyExpansion>
1157               </configuration>
1158             </execution>
1159           </executions>
1160         </plugin>
1161         <plugin>
1162           <groupId>org.apache.maven.plugins</groupId>
1163           <artifactId>maven-pmd-plugin</artifactId>
1164           <version>3.13.0</version>
1165           <executions>
1166             <execution>
1167               <id>cpd</id>
1168               <phase>process-sources</phase>
1169               <goals>
1170                 <goal>cpd-check</goal>
1171               </goals>
1172               <configuration>
1173                 <failOnViolation>${pmd.cpd.fail}</failOnViolation>
1174                 <!-- 100 "tokens" here correspond to approx. 5-10 lines of code -->
1175                 <minimumTokens>101</minimumTokens>
1176                 <printFailingErrors>true</printFailingErrors>
1177                 <excludeRoots>
1178                   <!-- FIXME: this should be a wildcard, but PMD is brain-damaged and does
1179                               not understand path prefixes nor wildcards. Details are available
1180                               at http://stackoverflow.com/questions/15647771/pmd-exclude-not-working
1181                               Hence people introducing new generated sources have to include
1182                               PMD config too.
1183                    -->
1184                   <excludeRoot>${project.build.directory}/generated-sources</excludeRoot>
1185                   <excludeRoot>${project.build.directory}/generated-test-sources</excludeRoot>
1186                 </excludeRoots>
1187                 <linkXRef>false</linkXRef>
1188               </configuration>
1189             </execution>
1190           </executions>
1191         </plugin>
1192         <plugin>
1193           <artifactId>maven-compiler-plugin</artifactId>
1194           <version>3.8.1</version>
1195           <configuration>
1196             <showWarnings>true</showWarnings>
1197             <compilerArgs>
1198               <arg>-parameters</arg>
1199               <arg>-Xlint:deprecation</arg>
1200               <arg>-Xlint:unchecked</arg>
1201             </compilerArgs>
1202             <annotationProcessorPaths>
1203               <dependency>
1204                 <groupId>org.immutables</groupId>
1205                 <artifactId>value</artifactId>
1206                 <!-- Keep this version in sync with dependency declaration above -->
1207                 <version>2.7.5</version>
1208               </dependency>
1209               <dependency>
1210                 <groupId>org.kohsuke.metainf-services</groupId>
1211                 <artifactId>metainf-services</artifactId>
1212                 <!-- Keep this version in sync with dependency declaration above -->
1213                 <version>1.8</version>
1214               </dependency>
1215             </annotationProcessorPaths>
1216           </configuration>
1217         </plugin>
1218         <plugin>
1219           <artifactId>maven-failsafe-plugin</artifactId>
1220           <version>2.22.2</version>
1221         </plugin>
1222         <plugin>
1223           <artifactId>maven-invoker-plugin</artifactId>
1224           <version>3.2.1</version>
1225         </plugin>
1226         <plugin>
1227           <artifactId>maven-dependency-plugin</artifactId>
1228           <executions>
1229             <execution>
1230               <id>unpack-license</id>
1231               <phase>generate-resources</phase>
1232               <goals>
1233                 <goal>copy</goal>
1234               </goals>
1235               <configuration>
1236                 <artifactItems>
1237                   <artifactItem>
1238                     <groupId>org.opendaylight.odlparent</groupId>
1239                     <artifactId>odl-license</artifactId>
1240                     <version>8.0.0-SNAPSHOT</version>
1241                     <type>license</type>
1242                     <outputDirectory>${project.build.outputDirectory}</outputDirectory>
1243                     <destFileName>LICENSE</destFileName>
1244                     <overWrite>false</overWrite>
1245                   </artifactItem>
1246                 </artifactItems>
1247                 <silent>true</silent>
1248               </configuration>
1249             </execution>
1250           </executions>
1251         </plugin>
1252
1253         <plugin>
1254           <artifactId>maven-plugin-plugin</artifactId>
1255           <version>3.6.0</version>
1256         </plugin>
1257
1258         <plugin>
1259           <artifactId>maven-remote-resources-plugin</artifactId>
1260           <version>1.7.0</version>
1261         </plugin>
1262         <plugin>
1263           <artifactId>maven-resources-plugin</artifactId>
1264           <version>3.1.0</version>
1265         </plugin>
1266         <plugin>
1267           <artifactId>maven-shade-plugin</artifactId>
1268           <version>3.2.4</version>
1269         </plugin>
1270         <plugin>
1271           <artifactId>maven-source-plugin</artifactId>
1272           <version>3.2.1</version>
1273           <executions>
1274             <execution>
1275               <id>attach-sources</id>
1276               <phase>verify</phase>
1277               <goals>
1278                 <goal>jar-no-fork</goal>
1279               </goals>
1280             </execution>
1281           </executions>
1282         </plugin>
1283         <plugin>
1284           <artifactId>maven-surefire-plugin</artifactId>
1285           <version>2.22.2</version>
1286           <configuration>
1287             <redirectTestOutputToFile>${maven.test.redirectTestOutputToFile}</redirectTestOutputToFile>
1288             <trimStackTrace>false</trimStackTrace>
1289           </configuration>
1290         </plugin>
1291
1292         <!-- Third-party plugins, grouped by groupId, alpha-sorted by artifactId -->
1293         <plugin>
1294           <!-- Support Blueprint XML construction using annotations -->
1295           <groupId>org.apache.aries.blueprint</groupId>
1296           <artifactId>blueprint-maven-plugin</artifactId>
1297           <version>1.10.0</version>
1298           <!-- TODO remove dependencies when we bump from 1.10.0 to 1.11.0 (or 1.10.1);
1299              see https://jira.opendaylight.org/browse/ODLPARENT-167 & https://jira.apache.org/jira/browse/ARIES-1826 -->
1300           <dependencies>
1301             <dependency>
1302               <groupId>org.apache.xbean</groupId>
1303               <artifactId>xbean-finder-shaded</artifactId>
1304               <version>4.17</version>
1305             </dependency>
1306           </dependencies>
1307           <configuration>
1308             <scanPaths>
1309               <scanPath>${project.groupId}</scanPath>
1310             </scanPaths>
1311           </configuration>
1312           <executions>
1313             <execution>
1314               <goals>
1315                 <goal>blueprint-generate</goal>
1316               </goals>
1317             </execution>
1318           </executions>
1319         </plugin>
1320
1321         <plugin>
1322           <groupId>org.apache.felix</groupId>
1323           <artifactId>maven-bundle-plugin</artifactId>
1324           <version>4.2.1</version>
1325           <extensions>true</extensions>
1326           <configuration>
1327             <instructions>
1328               <!-- Note the '-' for git.properties.. this is required because git-commit-id-plugin has <failOnNoGitDirectory>false,
1329                    so that the build doesn't fail if there is no .../.git/ - so git.properties is effectively optional;
1330                    and so the '-' there is needed to make the maven-bundle-plugin if that resource is not present.  -->
1331               <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>
1332
1333               <!-- Based on https://dev.eclipse.org/mhonarc/lists/equinox-dev/msg01088.html we do want
1334                    to generate Import-Service and Export-Service headers. -->
1335               <_removeheaders>Import-Service,Export-Service</_removeheaders>
1336             </instructions>
1337           </configuration>
1338         </plugin>
1339
1340         <plugin>
1341           <groupId>org.apache.karaf.tooling</groupId>
1342           <artifactId>karaf-maven-plugin</artifactId>
1343           <version>${karaf.version}</version>
1344         </plugin>
1345
1346         <plugin>
1347           <groupId>org.apache.servicemix.tooling</groupId>
1348           <artifactId>depends-maven-plugin</artifactId>
1349           <version>1.4.0</version>
1350           <executions>
1351             <execution>
1352               <id>generate-depends-file</id>
1353               <goals>
1354                 <goal>generate-depends-file</goal>
1355               </goals>
1356             </execution>
1357           </executions>
1358         </plugin>
1359
1360         <plugin>
1361           <groupId>com.webcohesion.enunciate</groupId>
1362           <artifactId>enunciate-maven-plugin</artifactId>
1363           <!-- This must be aligned with the version of enunciate-core-annotations specified above -->
1364           <version>2.13.1</version>
1365         </plugin>
1366
1367         <plugin>
1368           <groupId>org.gaul</groupId>
1369           <artifactId>modernizer-maven-plugin</artifactId>
1370           <version>2.1.0</version>
1371           <configuration>
1372             <javaVersion>${odlparent.modernizer.target}</javaVersion>
1373             <failOnViolations>${odlparent.modernizer.enforce}</failOnViolations>
1374             <skip>${odlparent.modernizer.skip}</skip>
1375           </configuration>
1376
1377           <executions>
1378             <execution>
1379               <id>modernizer</id>
1380               <phase>verify</phase>
1381               <goals>
1382                 <goal>modernizer</goal>
1383               </goals>
1384             </execution>
1385           </executions>
1386         </plugin>
1387
1388         <plugin>
1389           <groupId>com.github.spotbugs</groupId>
1390           <artifactId>spotbugs-maven-plugin</artifactId>
1391           <version>3.1.12.2</version>
1392           <dependencies>
1393             <dependency>
1394               <groupId>com.github.spotbugs</groupId>
1395               <artifactId>spotbugs</artifactId>
1396               <version>3.1.12</version>
1397             </dependency>
1398             <dependency>
1399               <groupId>org.opendaylight.odlparent</groupId>
1400               <artifactId>spotbugs</artifactId>
1401               <version>8.0.0-SNAPSHOT</version>
1402             </dependency>
1403             <dependency>
1404               <!-- The SpotBugs Maven plugin uses SLF4J 1.8 beta 2 -->
1405               <groupId>org.slf4j</groupId>
1406               <artifactId>slf4j-simple</artifactId>
1407               <version>1.8.0-beta2</version>
1408             </dependency>
1409           </dependencies>
1410           <configuration>
1411             <plugins>
1412               <plugin>
1413                 <groupId>jp.skypencil.findbugs.slf4j</groupId>
1414                 <artifactId>bug-pattern</artifactId>
1415                 <version>1.5.0</version>
1416               </plugin>
1417             </plugins>
1418             <!--
1419               Enables analysis which takes more memory but finds more bugs.
1420               If you run out of memory, changes the value of the effort element
1421               to 'Low'.
1422             -->
1423             <effort>Max</effort>
1424             <!-- Reports all bugs (other values are medium and max) -->
1425             <threshold>Low</threshold>
1426             <!-- Build doesn't fail if problems are found -->
1427             <failOnError>${odlparent.spotbugs.enforce}</failOnError>
1428             <skip>${odlparent.spotbugs.skip}</skip>
1429             <!-- References the excluded rules -->
1430             <excludeFilterFile>spotbugs-exclude.xml</excludeFilterFile>
1431             <!-- Produces XML report -->
1432             <xmlOutput>true</xmlOutput>
1433             <!-- Configures the directory in which the XML report is created -->
1434             <findbugsXmlOutputDirectory>${project.build.directory}/spotbugs</findbugsXmlOutputDirectory>
1435           </configuration>
1436           <executions>
1437             <!--
1438               Ensures that SpotBugs inspects source code when project is compiled.
1439             -->
1440             <execution>
1441               <id>analyze-compile</id>
1442               <phase>compile</phase>
1443               <goals>
1444                 <goal>check</goal>
1445               </goals>
1446             </execution>
1447           </executions>
1448         </plugin>
1449         <plugin>
1450           <groupId>org.codehaus.mojo</groupId>
1451           <artifactId>properties-maven-plugin</artifactId>
1452           <version>1.0.0</version>
1453         </plugin>
1454         <plugin>
1455           <groupId>org.eclipse.xtend</groupId>
1456           <artifactId>xtend-maven-plugin</artifactId>
1457           <!-- NOTE: This version MUST be kept in sync with the Xtend version in <dependencyManagement> -->
1458           <version>2.22.0</version>
1459           <executions>
1460             <execution>
1461               <goals>
1462                 <goal>compile</goal>
1463                 <goal>testCompile</goal>
1464               </goals>
1465               <configuration>
1466                 <outputDirectory>${project.build.directory}/generated-sources/xtend</outputDirectory>
1467                 <testOutputDirectory>${project.build.directory}/generated-test-sources/xtend</testOutputDirectory>
1468               </configuration>
1469             </execution>
1470           </executions>
1471         </plugin>
1472         <plugin>
1473           <groupId>org.eclipse.m2e</groupId>
1474           <artifactId>lifecycle-mapping</artifactId>
1475           <version>1.0.0</version>
1476           <configuration>
1477             <lifecycleMappingMetadata>
1478               <pluginExecutions>
1479                 <pluginExecution>
1480                   <pluginExecutionFilter>
1481                     <groupId>org.apache.felix</groupId>
1482                     <artifactId>maven-bundle-plugin</artifactId>
1483                     <versionRange>[1.0,)</versionRange>
1484                     <goals>
1485                       <goal>manifest</goal>
1486                     </goals>
1487                   </pluginExecutionFilter>
1488                   <action>
1489                     <execute/>
1490                   </action>
1491                 </pluginExecution>
1492                 <pluginExecution>
1493                   <pluginExecutionFilter>
1494                     <groupId>org.apache.maven.plugins</groupId>
1495                     <artifactId>maven-enforcer-plugin</artifactId>
1496                     <versionRange>[1.0.0,)</versionRange>
1497                     <goals>
1498                       <goal>enforce</goal>
1499                     </goals>
1500                   </pluginExecutionFilter>
1501                   <action>
1502                     <ignore/>
1503                   </action>
1504                 </pluginExecution>
1505                 <pluginExecution>
1506                   <pluginExecutionFilter>
1507                     <groupId>org.apache.maven.plugins</groupId>
1508                     <artifactId>maven-dependency-plugin</artifactId>
1509                     <versionRange>[2.10,)</versionRange>
1510                     <goals>
1511                       <goal>copy</goal>
1512                     </goals>
1513                   </pluginExecutionFilter>
1514                   <action>
1515                     <ignore/>
1516                   </action>
1517                 </pluginExecution>
1518                 <pluginExecution>
1519                   <pluginExecutionFilter>
1520                     <groupId>org.apache.maven.plugins</groupId>
1521                     <artifactId>maven-pmd-plugin</artifactId>
1522                     <versionRange>[3.6,)</versionRange>
1523                     <goals>
1524                       <goal>cpd-check</goal>
1525                     </goals>
1526                   </pluginExecutionFilter>
1527                   <action>
1528                     <ignore/>
1529                   </action>
1530                 </pluginExecution>
1531                 <!-- The plugin will eventually be removed, remove this too at that point -->
1532                 <pluginExecution>
1533                   <pluginExecutionFilter>
1534                     <groupId>org.apache.maven.plugins</groupId>
1535                     <artifactId>maven-antrun-plugin</artifactId>
1536                     <versionRange>[1.8,)</versionRange>
1537                     <goals>
1538                       <goal>run</goal>
1539                     </goals>
1540                   </pluginExecutionFilter>
1541                   <action>
1542                     <ignore/>
1543                   </action>
1544                 </pluginExecution>
1545                 <pluginExecution>
1546                   <pluginExecutionFilter>
1547                     <groupId>org.apache.servicemix.tooling</groupId>
1548                     <artifactId>depends-maven-plugin</artifactId>
1549                     <versionRange>[1.2,)</versionRange>
1550                     <goals>
1551                       <goal>generate-depends-file</goal>
1552                     </goals>
1553                   </pluginExecutionFilter>
1554                   <action>
1555                     <execute/>
1556                   </action>
1557                 </pluginExecution>
1558                 <pluginExecution>
1559                   <pluginExecutionFilter>
1560                     <groupId>org.jacoco</groupId>
1561                     <artifactId>jacoco-maven-plugin</artifactId>
1562                     <versionRange>[0.7.0,)</versionRange>
1563                     <goals>
1564                       <goal>prepare-agent</goal>
1565                     </goals>
1566                   </pluginExecutionFilter>
1567                   <action>
1568                     <ignore/>
1569                   </action>
1570                 </pluginExecution>
1571
1572                 <pluginExecution>
1573                   <pluginExecutionFilter>
1574                     <groupId>org.ops4j.pax.exam</groupId>
1575                     <artifactId>maven-paxexam-plugin</artifactId>
1576                     <versionRange>[1.2.4,)</versionRange>
1577                     <goals>
1578                       <goal>generate-depends-file</goal>
1579                     </goals>
1580                   </pluginExecutionFilter>
1581                   <action>
1582                     <ignore/>
1583                   </action>
1584                 </pluginExecution>
1585
1586                 <pluginExecution>
1587                   <pluginExecutionFilter>
1588                     <groupId>org.basepom.maven</groupId>
1589                     <artifactId>
1590                       duplicate-finder-maven-plugin
1591                     </artifactId>
1592                     <versionRange>[1.2.1,)</versionRange>
1593                     <goals>
1594                       <goal>check</goal>
1595                     </goals>
1596                   </pluginExecutionFilter>
1597                   <action>
1598                     <ignore></ignore>
1599                   </action>
1600                 </pluginExecution>
1601               </pluginExecutions>
1602             </lifecycleMappingMetadata>
1603           </configuration>
1604         </plugin>
1605
1606         <plugin>
1607           <groupId>org.jacoco</groupId>
1608           <artifactId>jacoco-maven-plugin</artifactId>
1609           <configuration>
1610             <!-- Note: This exclusion list should match <sonar.exclusions>
1611                        property above -->
1612             <excludes>
1613               <exclude>**/gen/**</exclude>
1614               <exclude>**/generated-sources/**</exclude>
1615               <exclude>**/generated-test-sources/**</exclude>
1616               <exclude>**/yang-gen/**</exclude>
1617               <exclude>**/yang-gen-config/**</exclude>
1618               <exclude>**/yang-gen-sal/**</exclude>
1619               <exclude>**/yang-gen-code/**</exclude>
1620               <exclude>**/pax/**</exclude>
1621             </excludes>
1622           </configuration>
1623         </plugin>
1624
1625         <plugin>
1626           <groupId>org.ops4j.pax.exam</groupId>
1627           <artifactId>maven-paxexam-plugin</artifactId>
1628           <version>1.2.4</version>
1629         </plugin>
1630
1631         <!-- When updating this version, consider antl4-runtime above -->
1632         <plugin>
1633           <groupId>org.antlr</groupId>
1634           <artifactId>antlr4-maven-plugin</artifactId>
1635           <version>4.8-1</version>
1636         </plugin>
1637       </plugins>
1638     </pluginManagement>
1639
1640     <plugins>
1641       <plugin>
1642         <artifactId>maven-enforcer-plugin</artifactId>
1643         <executions>
1644           <execution>
1645             <id>enforce-banned-dependencies</id>
1646             <goals>
1647               <goal>enforce</goal>
1648             </goals>
1649             <configuration>
1650               <rules>
1651                 <bannedDependencies>
1652                   <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>
1653                   <excludes>
1654                     <exclude>org.mockito:mockito-all</exclude>
1655                     <exclude>com.google.code.findbugs:annotations</exclude>
1656                   </excludes>
1657                 </bannedDependencies>
1658               </rules>
1659               <fail>true</fail>
1660             </configuration>
1661           </execution>
1662         </executions>
1663       </plugin>
1664       <plugin>
1665         <groupId>org.basepom.maven</groupId>
1666         <artifactId>duplicate-finder-maven-plugin</artifactId>
1667         <version>1.4.0</version>
1668         <executions>
1669           <execution>
1670             <id>find-duplicate-classpath-entries</id>
1671             <phase>verify</phase>
1672             <goals>
1673               <goal>check</goal>
1674             </goals>
1675           </execution>
1676         </executions>
1677         <configuration>
1678             <!-- https://github.com/basepom/duplicate-finder-maven-plugin/wiki -->
1679             <failBuildInCaseOfConflict>false</failBuildInCaseOfConflict>
1680             <failBuildInCaseOfDifferentContentConflict>true</failBuildInCaseOfDifferentContentConflict>
1681             <failBuildInCaseOfEqualContentConflict>false</failBuildInCaseOfEqualContentConflict>
1682             <printEqualFiles>false</printEqualFiles>
1683             <quiet>true</quiet>
1684             <!-- In addition to https://github.com/basepom/duplicate-finder-maven-plugin/wiki/Default%20ignored%20elements,
1685                  as explained on https://github.com/basepom/duplicate-finder-maven-plugin/wiki/Ignoring%20Dependencies%20and%20Resources,
1686                  we use resources not dependencies (see https://github.com/basepom/duplicate-finder-maven-plugin/wiki/Classpath%20Exceptions)
1687                  also ignore: -->
1688             <ignoredResourcePatterns>
1689               <ignoredResourcePattern>org/opendaylight/blueprint/.*\.xml$</ignoredResourcePattern>
1690               <ignoredResourcePattern>OSGI-OPT/bnd.bnd$</ignoredResourcePattern>
1691               <ignoredResourcePattern>WEB-INF/web.xml</ignoredResourcePattern>
1692               <ignoredResourcePattern>README.*$</ignoredResourcePattern>
1693               <ignoredResourcePattern>.*\.html$</ignoredResourcePattern>
1694               <ignoredResourcePattern>reference.conf</ignoredResourcePattern>
1695             </ignoredResourcePatterns>
1696             <ignoredDependencies>
1697               <ignoredDependency>
1698                 <groupId>org.slf4j</groupId>
1699                 <artifactId>slf4j-simple</artifactId>
1700               </ignoredDependency>
1701               <ignoredDependency>
1702                 <groupId>org.opendaylight.odlparent</groupId>
1703                 <artifactId>opendaylight-karaf-empty</artifactId>
1704               </ignoredDependency>
1705             </ignoredDependencies>
1706         </configuration>
1707       </plugin>
1708       <plugin>
1709         <artifactId>maven-dependency-plugin</artifactId>
1710       </plugin>
1711       <plugin>
1712         <artifactId>maven-checkstyle-plugin</artifactId>
1713       </plugin>
1714       <plugin>
1715           <artifactId>maven-pmd-plugin</artifactId>
1716       </plugin>
1717       <plugin>
1718         <artifactId>maven-source-plugin</artifactId>
1719       </plugin>
1720       <plugin>
1721         <artifactId>maven-javadoc-plugin</artifactId>
1722       </plugin>
1723       <plugin>
1724         <groupId>org.gaul</groupId>
1725         <artifactId>modernizer-maven-plugin</artifactId>
1726       </plugin>
1727       <plugin>
1728         <groupId>com.github.spotbugs</groupId>
1729         <artifactId>spotbugs-maven-plugin</artifactId>
1730       </plugin>
1731
1732       <!-- Jacoco / Sonar -->
1733       <plugin>
1734         <groupId>org.jacoco</groupId>
1735         <artifactId>jacoco-maven-plugin</artifactId>
1736         <executions>
1737           <execution>
1738             <id>pre-unit-test</id>
1739             <goals>
1740               <goal>prepare-agent</goal>
1741             </goals>
1742           </execution>
1743           <execution>
1744             <id>report</id>
1745             <goals>
1746               <goal>report</goal>
1747             </goals>
1748           </execution>
1749         </executions>
1750       </plugin>
1751
1752       <plugin>
1753         <groupId>com.alexecollins.maven.plugin</groupId>
1754         <artifactId>script-maven-plugin</artifactId>
1755         <version>1.0.0</version>
1756         <executions>
1757            <execution>
1758              <phase>prepare-package</phase>
1759              <goals>
1760                <goal>execute</goal>
1761              </goals>
1762              <configuration>
1763                <script>
1764                  // BeanShell is 2005-ish and thus doesn't support generics, varargs, try-with-resources or lambdas, so:
1765                  // (If we do this kind of inline code in pom.xml more often, we shold have a new simple module in
1766                  //  odl-parent, which has *.java that we compile, and then just depend on it here and call one-line
1767                  //  static class methods only - it will be MUCH easier to write!)
1768                  void copy(File root, String glob, File target) {
1769                      java.nio.file.DirectoryStream dirStream = java.nio.file.Files.newDirectoryStream(root.toPath(), glob);
1770                      Iterator dirStreamIterator = dirStream.iterator();
1771                      while (dirStreamIterator.hasNext()) {
1772                          java.nio.file.Path path = dirStreamIterator.next();
1773                          java.nio.file.Files.copy(path, new File(target, path.toFile().getName()).toPath(),
1774                              new java.nio.file.CopyOption[] {
1775                                  java.nio.file.StandardCopyOption.REPLACE_EXISTING,
1776                                  java.nio.file.StandardCopyOption.COPY_ATTRIBUTES
1777                              }
1778                          );
1779                      }
1780                      dirStream.close();
1781                  }
1782
1783                  File gitRepoRootDir = project.basedir;
1784                  while (!new File(gitRepoRootDir, ".git").exists() &amp;&amp; gitRepoRootDir.getParentFile() != null) {
1785                      gitRepoRootDir = gitRepoRootDir.getParentFile();
1786                  }
1787
1788                  File target = new File(project.build.outputDirectory);
1789                  target.mkdirs();
1790                  copy(gitRepoRootDir, "README*", target);
1791                  copy(gitRepoRootDir, "CONTRIBUTING*", target);
1792                  copy(gitRepoRootDir, "PROJECT_INFO.yaml", target);
1793                </script>
1794              </configuration>
1795            </execution>
1796          </executions>
1797          <dependencies>
1798            <dependency>
1799              <groupId>org.apache-extras.beanshell</groupId>
1800              <artifactId>bsh</artifactId>
1801              <version>2.0b6</version>
1802            </dependency>
1803          </dependencies>
1804       </plugin>
1805     </plugins>
1806   </build>
1807
1808   <reporting>
1809     <plugins>
1810       <plugin>
1811         <artifactId>maven-checkstyle-plugin</artifactId>
1812         <version>3.1.0</version>
1813       </plugin>
1814
1815       <!-- FIXME: activate this
1816       <plugin>
1817         <artifactId>maven-project-info-reports-plugin</artifactId>
1818       </plugin-->
1819       <plugin>
1820         <groupId>org.codehaus.mojo</groupId>
1821         <artifactId>jdepend-maven-plugin</artifactId>
1822         <reportSets>
1823           <reportSet>
1824             <reports>
1825               <report>generate-no-fork</report>
1826             </reports>
1827           </reportSet>
1828         </reportSets>
1829       </plugin>
1830     </plugins>
1831   </reporting>
1832 </project>
1833