1 <?xml version="1.0" encoding="UTF-8"?>
3 ~ Copyright (c) 2016 Cisco and/or its affiliates.
5 ~ Licensed under the Apache License, Version 2.0 (the "License");
6 ~ you may not use this file except in compliance with the License.
7 ~ You may obtain a copy of the License at:
9 ~ http://www.apache.org/licenses/LICENSE-2.0
11 ~ Unless required by applicable law or agreed to in writing, software
12 ~ distributed under the License is distributed on an "AS IS" BASIS,
13 ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 ~ See the License for the specific language governing permissions and
15 ~ limitations under the License.
17 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
18 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
20 <modelVersion>4.0.0</modelVersion>
21 <groupId>io.fd.honeycomb.common</groupId>
22 <artifactId>honeycomb-parent</artifactId>
23 <name>${project.artifactId}</name>
24 <version>1.19.04-RC2</version>
25 <packaging>pom</packaging>
31 <nexusproxy>http://nexus.fd.io/content</nexusproxy>
32 <odl.nexusproxy>https://nexus.opendaylight.org/content</odl.nexusproxy>
34 <!-- Sonar configuration -->
35 <!-- Note: This list should match jacoco-maven-plugin's exclusion list below -->
36 <sonar.exclusions>**/gen/**,**/generated-sources/**,**/yang-gen**</sonar.exclusions>
37 <!-- https://github.com/SonarSource/sonar-scanning-examples/blob/master/sonarqube-scanner-maven/pom.xml#L24 -->
38 <!-- The destination file for the code coverage report has to be set to the same value
39 in the parent pom and in each module pom. Then JaCoCo will add up information in
40 the same report, so that, it will give the cross-module code coverage. -->
41 <!-- We store jacoco-it.exec in honeycomb-parent because it is built first,
42 so mvn clean won't remove aggregated report. -->
43 <sonar.jacoco.itReportPath>${maven.multiModuleProjectDirectory}/common/honeycomb-parent/target/jacoco-it.exec</sonar.jacoco.itReportPath>
45 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
46 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
48 <!-- ODL dependencies -->
49 <odl.yangtools.version>2.1.8</odl.yangtools.version>
50 <odl.mdsal.version>3.0.6</odl.mdsal.version>
51 <odl.mdsal.controller.version>1.9.0</odl.mdsal.controller.version>
52 <odl.mdsalmodel.version>0.13.2</odl.mdsalmodel.version>
53 <odl.netconf.version>1.6.0</odl.netconf.version>
54 <odl.restconf.version>1.9.0</odl.restconf.version>
55 <odl.salGenerator.version>0.13.2</odl.salGenerator.version>
56 <odl.bgpcep.version>0.11.0</odl.bgpcep.version>
57 <salGeneratorPath>target/generated-sources/mdsal-binding</salGeneratorPath>
59 <!-- common dependencies -->
60 <junit.version>4.12</junit.version>
61 <mockito.version>2.23.4</mockito.version>
62 <hamcrest.version>2.1</hamcrest.version>
63 <guava.version>23.6-jre</guava.version>
64 <jsr305.version>3.0.2</jsr305.version>
65 <slf4j.version>1.7.25</slf4j.version>
66 <jdt.version>2.2.200</jdt.version>
69 <checkstyle.plugin.version>3.0.0</checkstyle.plugin.version>
70 <checkstyle.version>8.18</checkstyle.version>
71 <maven.javadoc.version>3.0.1</maven.javadoc.version>
72 <jacoco.version>0.8.2</jacoco.version>
73 <enforcer.version>3.0.0-M2</enforcer.version>
74 <maven.compile.plugin.version>3.8.0</maven.compile.plugin.version>
75 <maven.bundle.version>4.1.0</maven.bundle.version>
78 <checkstyle.header.file>APACHE_HEADER.txt</checkstyle.header.file>
81 <!-- skip location check = makes site exec faster -->
82 <dependency.locations.enabled>false</dependency.locations.enabled>
83 <project.info.report.version>2.9</project.info.report.version>
84 <maven.resources.version>3.0.1</maven.resources.version>
85 <maven.site.version>3.4</maven.site.version>
87 <asciidoctor.maven.plugin.version>1.5.3</asciidoctor.maven.plugin.version>
88 <asciidoctorj.diagram.version>1.3.1</asciidoctorj.diagram.version>
91 <maven.groovy.version>1.6.2</maven.groovy.version>
92 <groovy.version>2.5.5</groovy.version>
93 <groovy.eclipse.compiler.version>3.3.0-01</groovy.eclipse.compiler.version>
94 <groovy.eclipse.batch.version>2.5.6-02</groovy.eclipse.batch.version>
96 <docs.base.url>https://nexus.fd.io/content/sites/site</docs.base.url>
97 <docs.hc.folder>io/fd/honeycomb</docs.hc.folder>
102 <url>https://fd.io</url>
107 <name>Apache License, Version 2.0</name>
108 <url>http://www.apache.org/licenses/LICENSE-2.0</url>
113 <system>JIRA</system>
114 <url>https://jira.fd.io/</url>
118 <system>Jenkins</system>
119 <url>https://jenkins.fd.io/</url>
125 <post>honeycomb-dev@fd.io</post>
126 <subscribe>https://lists.fd.io/mailman/listinfo/honeycomb-dev</subscribe>
127 <archive>https://lists.fd.io/pipermail/honeycomb-dev/</archive>
131 <dependencyManagement>
135 <groupId>org.opendaylight.yangtools</groupId>
136 <artifactId>yangtools-artifacts</artifactId>
137 <version>${odl.yangtools.version}</version>
139 <scope>import</scope>
142 <groupId>org.opendaylight.controller</groupId>
143 <artifactId>mdsal-artifacts</artifactId>
144 <version>${odl.mdsal.controller.version}</version>
146 <scope>import</scope>
149 <groupId>org.opendaylight.mdsal</groupId>
150 <artifactId>mdsal-artifacts</artifactId>
151 <version>${odl.mdsal.version}</version>
153 <scope>import</scope>
156 <groupId>org.opendaylight.netconf</groupId>
157 <artifactId>netconf-artifacts</artifactId>
158 <version>${odl.netconf.version}</version>
160 <scope>import</scope>
163 <groupId>org.opendaylight.netconf</groupId>
164 <artifactId>restconf-artifacts</artifactId>
165 <version>${odl.restconf.version}</version>
167 <scope>import</scope>
170 <groupId>org.opendaylight.mdsal.model</groupId>
171 <artifactId>mdsal-model-artifacts</artifactId>
172 <version>${odl.mdsalmodel.version}</version>
174 <scope>import</scope>
177 <groupId>org.opendaylight.bgpcep</groupId>
178 <artifactId>bgpcep-artifacts</artifactId>
179 <version>${odl.bgpcep.version}</version>
181 <scope>import</scope>
186 <groupId>com.google.guava</groupId>
187 <artifactId>guava</artifactId>
188 <version>${guava.version}</version>
191 <groupId>com.google.code.findbugs</groupId>
192 <artifactId>jsr305</artifactId>
193 <version>${jsr305.version}</version>
196 <groupId>org.slf4j</groupId>
197 <artifactId>slf4j-api</artifactId>
198 <version>${slf4j.version}</version>
201 <groupId>org.eclipse.jdt</groupId>
202 <artifactId>org.eclipse.jdt.annotation</artifactId>
203 <version>${jdt.version}</version>
206 <!-- Testing Dependencies -->
208 <groupId>junit</groupId>
209 <artifactId>junit</artifactId>
210 <version>${junit.version}</version>
213 <!-- Dont use mockito-all, it has problematic dependency on harmcrest
214 More details here - https://github.com/mockito/mockito/issues/324-->
216 <groupId>org.mockito</groupId>
217 <artifactId>mockito-core</artifactId>
218 <version>${mockito.version}</version>
222 <groupId>org.hamcrest</groupId>
223 <artifactId>hamcrest</artifactId>
224 <version>${hamcrest.version}</version>
228 </dependencyManagement>
235 <artifactId>maven-checkstyle-plugin</artifactId>
236 <version>${checkstyle.plugin.version}</version>
238 <!--TODO HONEYCOMB-155 enable fail on violation after issues are resolved + set in as errors in checkstyle xml-->
239 <failOnViolation>false</failOnViolation>
240 <failsOnError>true</failsOnError>
241 <consoleOutput>true</consoleOutput>
242 <includeTestResources>true</includeTestResources>
243 <includeTestSourceDirectory>true</includeTestSourceDirectory>
244 <includes>**\/*.java,**\/*.xml,**\/*.ini,**\/*.sh,**\/*.bat,**\/*.yang</includes>
245 <excludes>**\/target\/,
248 **\/src/main/yang-gen-config\/,
249 org/opendaylight/yang/gen/**,
250 **\/src/main/yang-gen-sal\/,
251 **\/src/main/xtend-gen\/,
253 **\/archetype-resources\/,
254 **\/.idea\/</excludes>
257 <!-- Override license check configuration to fit Honeycomb coding style-->
259 <id>check-license</id>
263 <phase>process-sources</phase>
265 <configLocation>honeycomb-checkstyle-license.xml</configLocation>
266 <outputFile>${project.build.directory}/checkstyle-license-result.xml</outputFile>
269 <!-- Add logging checks from yangtools -->
271 <id>check-logging</id>
275 <phase>process-sources</phase>
277 <configLocation>honeycomb-checkstyle-logging.xml</configLocation>
279 <sourceDirectory>${project.basedir}</sourceDirectory>
282 <outputFile>${project.build.directory}/checkstyle-logging-result.xml</outputFile>
285 <!-- Check HC's coding style -->
290 <phase>process-sources</phase>
292 <configLocation>honeycomb-checkstyle.xml</configLocation>
298 <groupId>io.fd.honeycomb.common</groupId>
299 <artifactId>honeycomb-checkstyle</artifactId>
300 <!-- Hardcoded version to prevent archetype generated projects to use their own project version -->
301 <version>1.19.04-RC2</version>
303 <!-- Necessary for logging checks -->
305 <groupId>org.opendaylight.yangtools</groupId>
306 <artifactId>checkstyle-logging</artifactId>
307 <version>${odl.yangtools.version}</version>
309 <!-- Needed by ODL's checkstyle-logging -->
311 <groupId>com.puppycrawl.tools</groupId>
312 <artifactId>checkstyle</artifactId>
313 <version>${checkstyle.version}</version>
317 <!-- Deactivate strict java8 checks -->
318 <!-- TODO HONEYCOMB-156 fix all the javadoc offenders of doclint -->
320 <groupId>org.apache.maven.plugins</groupId>
321 <artifactId>maven-javadoc-plugin</artifactId>
322 <version>${maven.javadoc.version}</version>
325 <additionalparam>-Xdoclint:none</additionalparam>
329 <id>attach-javadocs</id>
337 <!-- If Maven encounters a plugin with no version declaration, it will use the LATEST version.
338 which might not be compatible with Sonar server (fd.io uses 6.7.3 currently).
339 Therefore it is recommended to lock down version of Sonar plugin:
340 http://blog.sonatype.com/2008/04/maven-209-released/
343 <groupId>org.sonarsource.scanner.maven</groupId>
344 <artifactId>sonar-maven-plugin</artifactId>
345 <version>3.4.1.1170</version>
347 <!-- jacoco test coverage for sonar -->
349 <groupId>org.jacoco</groupId>
350 <artifactId>jacoco-maven-plugin</artifactId>
351 <version>${jacoco.version}</version>
354 <id>agent-for-ut</id>
356 <goal>prepare-agent</goal>
360 <id>agent-for-it</id>
362 <goal>prepare-agent-integration</goal>
373 <!-- Appends data to existing JaCoCo execution file. Required for IT coverage.
374 Will not affect UT which use separate files. -->
375 <append>true</append>
377 <exclude>**/gen/**</exclude>
378 <exclude>**/generated-sources/**</exclude>
379 <exclude>**/yang-gen/**</exclude>
383 <!-- Enforce maven version -->
385 <groupId>org.apache.maven.plugins</groupId>
386 <artifactId>maven-enforcer-plugin</artifactId>
387 <version>${enforcer.version}</version>
390 <id>enforce-maven</id>
393 <requireMavenVersion>
394 <version>3.1.1</version>
395 </requireMavenVersion>
404 <!-- Compile with google static analysis tool: error_prone -->
406 <groupId>org.apache.maven.plugins</groupId>
407 <artifactId>maven-compiler-plugin</artifactId>
408 <version>${maven.compile.plugin.version}</version>
410 <!-- Use google's error-prone static analysis-->
411 <!-- TODO reenable errorprone once it is able to be built using java 11 -->
412 <!--<compilerId>javac-with-errorprone</compilerId>-->
413 <forceJavacCompilerUse>true</forceJavacCompilerUse>
414 <showWarnings>true</showWarnings>
418 <!--<dependencies>-->
420 <!--<groupId>org.codehaus.plexus</groupId>-->
421 <!--<artifactId>plexus-compiler-javac-errorprone</artifactId>-->
422 <!--<version>2.8.5</version>-->
424 <!--<!– override plexus-compiler-javac-errorprone's dependency on-->
425 <!--Error Prone with the latest version –>-->
427 <!--<groupId>com.google.errorprone</groupId>-->
428 <!--<artifactId>error_prone_core</artifactId>-->
429 <!--<version>2.3.2</version>-->
431 <!--</dependencies>-->
434 <groupId>org.apache.felix</groupId>
435 <artifactId>maven-bundle-plugin</artifactId>
436 <version>${maven.bundle.version}</version>
437 <extensions>true</extensions>
441 <groupId>org.apache.maven.plugins</groupId>
442 <artifactId>maven-source-plugin</artifactId>
445 <id>attach-sources</id>
452 <!-- Site (from https://github.com/asciidoctor/asciidoctor-maven-examples/blob/master/asciidoc-maven-site-example/pom.xml) -->
453 <!-- + https://github.com/asciidoctor/asciidoctor-maven-plugin -->
455 <groupId>org.apache.maven.plugins</groupId>
456 <artifactId>maven-site-plugin</artifactId>
457 <version>${maven.site.version}</version>
459 <generateReports>true</generateReports>
460 <generateSitemap>true</generateSitemap>
461 <relativizeDecorationLinks>false</relativizeDecorationLinks>
462 <locales>en</locales>
463 <inputEncoding>UTF-8</inputEncoding>
464 <outputEncoding>UTF-8</outputEncoding>
465 <siteDirectory>${project.basedir}</siteDirectory>
466 <relativizeDecorationLinks>false</relativizeDecorationLinks>
469 <require>asciidoctor-diagram</require>
471 <!-- optional site-wide AsciiDoc attributes -->
473 <source-highlighter>coderay</source-highlighter>
474 <coderay-css>style</coderay-css>
476 <sectanchors>true</sectanchors>
478 <idseparator>-</idseparator>
481 <!-- Exclude partial docs that are included elsewhere -->
483 <asciidoc>**/_*.adoc</asciidoc>
488 <groupId>org.asciidoctor</groupId>
489 <artifactId>asciidoctor-maven-plugin</artifactId>
490 <version>${asciidoctor.maven.plugin.version}</version>
493 <groupId>org.asciidoctor</groupId>
494 <artifactId>asciidoctorj-diagram</artifactId>
495 <version>${asciidoctorj.diagram.version}</version>
500 <groupId>org.codehaus.gmavenplus</groupId>
501 <artifactId>gmavenplus-plugin</artifactId>
502 <version>${maven.groovy.version}</version>
504 <!-- Generate Readme.adoc if not present -->
506 <id>generate-adoc</id>
507 <phase>generate-resources</phase>
512 <!-- Generate module adoc documentation -->
516 import io.fd.honeycomb.common.scripts.ReadmeGenerator
517 ReadmeGenerator.checkReadme(project, properties, log)
523 <!-- Fix generated html -->
525 <id>fix-generated-site</id>
531 <!-- Site generates wrong link to Readme.html, trying to point to Readme.html at root -->
535 import io.fd.honeycomb.common.scripts.ReadmeGenerator
536 ReadmeGenerator.fixSite(project, properties, log)
542 <!-- copy generated schema pictures -->
544 <id>copy-generated-pictures</id>
550 <!-- Copies generated schema pictures from ascii-doctor folders to site folder-->
554 import io.fd.honeycomb.common.scripts.AsciiDocImgForwarder
555 AsciiDocImgForwarder.copyGeneratedImages(project, properties, log)
564 <groupId>org.codehaus.groovy</groupId>
565 <artifactId>groovy-all</artifactId>
567 <version>${groovy.version}</version>
570 <groupId>io.fd.honeycomb.doc</groupId>
571 <artifactId>asciidoc-scripts</artifactId>
572 <version>1.19.04-RC2</version>
580 <artifactId>maven-enforcer-plugin</artifactId>
583 <artifactId>maven-source-plugin</artifactId>
586 <artifactId>maven-javadoc-plugin</artifactId>
589 <artifactId>maven-checkstyle-plugin</artifactId>
592 <artifactId>maven-dependency-plugin</artifactId>
595 <artifactId>maven-compiler-plugin</artifactId>
598 <groupId>org.jacoco</groupId>
599 <artifactId>jacoco-maven-plugin</artifactId>
602 <groupId>org.apache.felix</groupId>
603 <artifactId>maven-bundle-plugin</artifactId>
606 <groupId>org.codehaus.gmavenplus</groupId>
607 <artifactId>gmavenplus-plugin</artifactId>
611 <!-- To support site push-->
614 <groupId>org.apache.maven.wagon</groupId>
615 <artifactId>wagon-webdav-jackrabbit</artifactId>
616 <version>2.9</version>
624 <groupId>org.apache.maven.plugins</groupId>
625 <artifactId>maven-project-info-reports-plugin</artifactId>
626 <version>${project.info.report.version}</version>
630 <report>index</report>
631 <report>summary</report>
632 <report>modules</report>
634 <report>dependencies</report>
635 <report>distribution-management</report>
636 <report>mailing-list</report>
637 <report>issue-tracking</report>
638 <report>license</report>
645 <groupId>org.apache.maven.plugins</groupId>
646 <artifactId>maven-javadoc-plugin</artifactId>
647 <version>${maven.javadoc.version}</version>
652 <report>javadoc-no-fork</report>
657 <additionalparam>-Xdoclint:none</additionalparam>
661 <groupId>org.apache.maven.plugins</groupId>
662 <artifactId>maven-resources-plugin</artifactId>
663 <version>${maven.resources.version}</version>
668 <distributionManagement>
670 <id>fdio-release</id>
671 <url>${nexusproxy}/repositories/fd.io.release/</url>
674 <id>fdio-snapshot</id>
675 <url>${nexusproxy}/repositories/fd.io.snapshot/</url>
676 </snapshotRepository>
679 <url>dav:${docs.base.url}/${docs.hc.folder}/${project.version}</url>
681 </distributionManagement>
684 <!-- Using only ODL stable releases -->
687 <enabled>true</enabled>
688 <updatePolicy>never</updatePolicy>
691 <enabled>false</enabled>
693 <id>opendaylight-mirror</id>
694 <name>opendaylight-mirror</name>
695 <url>${odl.nexusproxy}/repositories/public/</url>