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.18.01-SNAPSHOT</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>1.2.1</odl.yangtools.version>
50 <odl.mdsal.version>2.3.1</odl.mdsal.version>
51 <odl.mdsal.controller.version>1.6.1</odl.mdsal.controller.version>
52 <odl.mdsalmodel.version>0.11.1</odl.mdsalmodel.version>
53 <odl.netconf.version>1.3.1</odl.netconf.version>
54 <odl.restconf.version>1.6.1</odl.restconf.version>
55 <odl.salGenerator.version>0.11.1</odl.salGenerator.version>
56 <odl.bgpcep.version>0.8.1</odl.bgpcep.version>
57 <salGeneratorPath>target/generated-sources/mdsal-binding</salGeneratorPath>
59 <!-- common dependencies -->
60 <junit.version>4.11</junit.version>
61 <mockito.version>2.2.9</mockito.version>
62 <hamcrest.version>1.3</hamcrest.version>
63 <guava.version>22.0</guava.version>
64 <jsr305.version>3.0.0</jsr305.version>
65 <slf4j.version>1.7.21</slf4j.version>
68 <checkstyle.plugin.version>2.17</checkstyle.plugin.version>
69 <checkstyle.version>7.1.2</checkstyle.version>
70 <maven.javadoc.version>2.10.3</maven.javadoc.version>
71 <jacoco.version>0.7.9</jacoco.version>
72 <enforcer.version>1.4</enforcer.version>
73 <maven.compile.plugin.version>3.5.1</maven.compile.plugin.version>
74 <maven.bundle.version>3.0.1</maven.bundle.version>
77 <checkstyle.header.file>APACHE_HEADER.txt</checkstyle.header.file>
80 <!-- skip location check = makes site exec faster -->
81 <dependency.locations.enabled>false</dependency.locations.enabled>
82 <project.info.report.version>2.9</project.info.report.version>
83 <maven.resources.version>3.0.1</maven.resources.version>
84 <maven.site.version>3.4</maven.site.version>
86 <asciidoctor.maven.plugin.version>1.5.3</asciidoctor.maven.plugin.version>
87 <asciidoctorj.diagram.version>1.3.1</asciidoctorj.diagram.version>
90 <maven.groovy.version>2.0</maven.groovy.version>
91 <groovy.version>2.4.7</groovy.version>
92 <groovy.eclipse.compiler.version>2.9.2-01</groovy.eclipse.compiler.version>
93 <groovy.eclipse.batch.version>2.4.3-01</groovy.eclipse.batch.version>
95 <docs.base.url>https://nexus.fd.io/content/sites/site</docs.base.url>
96 <docs.hc.folder>io/fd/honeycomb</docs.hc.folder>
101 <url>https://fd.io</url>
106 <name>Apache License, Version 2.0</name>
107 <url>http://www.apache.org/licenses/LICENSE-2.0</url>
112 <system>JIRA</system>
113 <url>https://jira.fd.io/</url>
117 <system>Jenkins</system>
118 <url>https://jenkins.fd.io/</url>
124 <post>honeycomb-dev@fd.io</post>
125 <subscribe>https://lists.fd.io/mailman/listinfo/honeycomb-dev</subscribe>
126 <archive>https://lists.fd.io/pipermail/honeycomb-dev/</archive>
130 <dependencyManagement>
134 <groupId>org.opendaylight.yangtools</groupId>
135 <artifactId>yangtools-artifacts</artifactId>
136 <version>${odl.yangtools.version}</version>
138 <scope>import</scope>
141 <groupId>org.opendaylight.controller</groupId>
142 <artifactId>mdsal-artifacts</artifactId>
143 <version>${odl.mdsal.controller.version}</version>
145 <scope>import</scope>
148 <groupId>org.opendaylight.mdsal</groupId>
149 <artifactId>mdsal-artifacts</artifactId>
150 <version>${odl.mdsal.version}</version>
152 <scope>import</scope>
155 <groupId>org.opendaylight.netconf</groupId>
156 <artifactId>netconf-artifacts</artifactId>
157 <version>${odl.netconf.version}</version>
159 <scope>import</scope>
162 <groupId>org.opendaylight.netconf</groupId>
163 <artifactId>restconf-artifacts</artifactId>
164 <version>${odl.restconf.version}</version>
166 <scope>import</scope>
169 <groupId>org.opendaylight.mdsal.model</groupId>
170 <artifactId>mdsal-model-artifacts</artifactId>
171 <version>${odl.mdsalmodel.version}</version>
173 <scope>import</scope>
176 <groupId>org.opendaylight.bgpcep</groupId>
177 <artifactId>bgpcep-artifacts</artifactId>
178 <version>${odl.bgpcep.version}</version>
180 <scope>import</scope>
185 <groupId>com.google.guava</groupId>
186 <artifactId>guava</artifactId>
187 <version>${guava.version}</version>
190 <groupId>com.google.code.findbugs</groupId>
191 <artifactId>jsr305</artifactId>
192 <version>${jsr305.version}</version>
195 <groupId>org.slf4j</groupId>
196 <artifactId>slf4j-api</artifactId>
197 <version>${slf4j.version}</version>
200 <!-- Testing Dependencies -->
202 <groupId>junit</groupId>
203 <artifactId>junit</artifactId>
204 <version>${junit.version}</version>
207 <!-- Dont use mockito-all, it has problematic dependency on harmcrest
208 More details here - https://github.com/mockito/mockito/issues/324-->
210 <groupId>org.mockito</groupId>
211 <artifactId>mockito-core</artifactId>
212 <version>${mockito.version}</version>
216 <groupId>org.hamcrest</groupId>
217 <artifactId>hamcrest-all</artifactId>
218 <version>${hamcrest.version}</version>
222 </dependencyManagement>
229 <artifactId>maven-checkstyle-plugin</artifactId>
230 <version>${checkstyle.plugin.version}</version>
232 <!--TODO HONEYCOMB-155 enable fail on violation after issues are resolved + set in as errors in checkstyle xml-->
233 <failOnViolation>false</failOnViolation>
234 <failsOnError>true</failsOnError>
235 <consoleOutput>true</consoleOutput>
236 <includeTestResources>true</includeTestResources>
237 <includeTestSourceDirectory>true</includeTestSourceDirectory>
238 <includes>**\/*.java,**\/*.xml,**\/*.ini,**\/*.sh,**\/*.bat,**\/*.yang</includes>
239 <excludes>**\/target\/,
242 **\/src/main/yang-gen-config\/,
243 org/opendaylight/yang/gen/**,
244 **\/src/main/yang-gen-sal\/,
245 **\/src/main/xtend-gen\/,
247 **\/archetype-resources\/,
248 **\/.idea\/</excludes>
251 <!-- Override license check configuration to fit Honeycomb coding style-->
253 <id>check-license</id>
257 <phase>process-sources</phase>
259 <configLocation>honeycomb-checkstyle-license.xml</configLocation>
260 <outputFile>${project.build.directory}/checkstyle-license-result.xml</outputFile>
263 <!-- Add logging checks from yangtools -->
265 <id>check-logging</id>
269 <phase>process-sources</phase>
271 <configLocation>honeycomb-checkstyle-logging.xml</configLocation>
272 <sourceDirectory>${project.basedir}</sourceDirectory>
273 <outputFile>${project.build.directory}/checkstyle-logging-result.xml</outputFile>
276 <!-- Check HC's coding style -->
281 <phase>process-sources</phase>
283 <configLocation>honeycomb-checkstyle.xml</configLocation>
289 <groupId>io.fd.honeycomb.common</groupId>
290 <artifactId>honeycomb-checkstyle</artifactId>
291 <!-- Hardcoded version to prevent archetype generated projects to use their own project version -->
292 <version>1.18.01-SNAPSHOT</version>
294 <!-- Necessary for logging checks -->
296 <groupId>org.opendaylight.yangtools</groupId>
297 <artifactId>checkstyle-logging</artifactId>
298 <version>${odl.yangtools.version}</version>
300 <!-- Needed by ODL's checkstyle-logging -->
302 <groupId>com.puppycrawl.tools</groupId>
303 <artifactId>checkstyle</artifactId>
304 <version>${checkstyle.version}</version>
308 <!-- Deactivate strict java8 checks -->
309 <!-- TODO HONEYCOMB-156 fix all the javadoc offenders of doclint -->
311 <groupId>org.apache.maven.plugins</groupId>
312 <artifactId>maven-javadoc-plugin</artifactId>
313 <version>${maven.javadoc.version}</version>
315 <additionalparam>-Xdoclint:none</additionalparam>
319 <id>attach-javadocs</id>
327 <!-- If Maven encounters a plugin with no version declaration, it will use the LATEST version.
328 which might not be compatible with Sonar server (fd.io uses 5.6 currently).
329 Therefore it is recommended to lock down version of Sonar plugin:
330 http://blog.sonatype.com/2008/04/maven-209-released/
333 <groupId>org.sonarsource.scanner.maven</groupId>
334 <artifactId>sonar-maven-plugin</artifactId>
335 <version>3.3.0.603</version>
337 <!-- jacoco test coverage for sonar -->
339 <groupId>org.jacoco</groupId>
340 <artifactId>jacoco-maven-plugin</artifactId>
341 <version>${jacoco.version}</version>
344 <id>agent-for-ut</id>
346 <goal>prepare-agent</goal>
350 <id>agent-for-it</id>
352 <goal>prepare-agent-integration</goal>
363 <!-- Appends data to existing JaCoCo execution file. Required for IT coverage.
364 Will not affect UT which use separate files. -->
365 <append>true</append>
367 <exclude>**/gen/**</exclude>
368 <exclude>**/generated-sources/**</exclude>
369 <exclude>**/yang-gen/**</exclude>
373 <!-- Enforce maven version -->
375 <groupId>org.apache.maven.plugins</groupId>
376 <artifactId>maven-enforcer-plugin</artifactId>
377 <version>${enforcer.version}</version>
380 <id>enforce-maven</id>
383 <requireMavenVersion>
384 <version>3.1.1</version>
385 </requireMavenVersion>
394 <!-- Compile with google static analysis tool: error_prone -->
396 <groupId>org.apache.maven.plugins</groupId>
397 <artifactId>maven-compiler-plugin</artifactId>
398 <version>${maven.compile.plugin.version}</version>
400 <!-- Use google's error-prone static analysis-->
401 <compilerId>javac-with-errorprone</compilerId>
402 <forceJavacCompilerUse>true</forceJavacCompilerUse>
403 <showWarnings>true</showWarnings>
409 <groupId>org.codehaus.plexus</groupId>
410 <artifactId>plexus-compiler-javac-errorprone</artifactId>
411 <version>2.5</version>
413 <!-- override plexus-compiler-javac-errorprone's dependency on
414 Error Prone with the latest version -->
416 <groupId>com.google.errorprone</groupId>
417 <artifactId>error_prone_core</artifactId>
418 <version>2.0.9</version>
423 <groupId>org.apache.felix</groupId>
424 <artifactId>maven-bundle-plugin</artifactId>
425 <version>${maven.bundle.version}</version>
426 <extensions>true</extensions>
430 <groupId>org.apache.maven.plugins</groupId>
431 <artifactId>maven-source-plugin</artifactId>
434 <id>attach-sources</id>
441 <!-- Site (from https://github.com/asciidoctor/asciidoctor-maven-examples/blob/master/asciidoc-maven-site-example/pom.xml) -->
442 <!-- + https://github.com/asciidoctor/asciidoctor-maven-plugin -->
444 <groupId>org.apache.maven.plugins</groupId>
445 <artifactId>maven-site-plugin</artifactId>
446 <version>${maven.site.version}</version>
448 <generateReports>true</generateReports>
449 <generateSitemap>true</generateSitemap>
450 <relativizeDecorationLinks>false</relativizeDecorationLinks>
451 <locales>en</locales>
452 <inputEncoding>UTF-8</inputEncoding>
453 <outputEncoding>UTF-8</outputEncoding>
454 <siteDirectory>${project.basedir}</siteDirectory>
455 <relativizeDecorationLinks>false</relativizeDecorationLinks>
458 <require>asciidoctor-diagram</require>
460 <!-- optional site-wide AsciiDoc attributes -->
462 <source-highlighter>coderay</source-highlighter>
463 <coderay-css>style</coderay-css>
465 <sectanchors>true</sectanchors>
467 <idseparator>-</idseparator>
470 <!-- Exclude partial docs that are included elsewhere -->
472 <asciidoc>**/_*.adoc</asciidoc>
477 <groupId>org.asciidoctor</groupId>
478 <artifactId>asciidoctor-maven-plugin</artifactId>
479 <version>${asciidoctor.maven.plugin.version}</version>
482 <groupId>org.asciidoctor</groupId>
483 <artifactId>asciidoctorj-diagram</artifactId>
484 <version>${asciidoctorj.diagram.version}</version>
489 <groupId>org.codehaus.gmaven</groupId>
490 <artifactId>groovy-maven-plugin</artifactId>
491 <version>${maven.groovy.version}</version>
493 <!-- Generate Readme.adoc if not present -->
495 <id>generate-adoc</id>
496 <phase>generate-resources</phase>
501 <!-- Generate module adoc documentation -->
503 io.fd.honeycomb.common.scripts.ReadmeGenerator.checkReadme(project, properties, log)
507 <!-- Fix generated html -->
509 <id>fix-generated-site</id>
515 <!-- Site generates wrong link to Readme.html, trying to point to Readme.html at root -->
517 io.fd.honeycomb.common.scripts.ReadmeGenerator.fixSite(project, properties, log)
521 <!-- copy generated schema pictures -->
523 <id>copy-generated-pictures</id>
529 <!-- Copies generated schema pictures from ascii-doctor folders to site folder-->
531 io.fd.honeycomb.common.scripts.AsciiDocImgForwarder.copyGeneratedImages(project, properties, log)
538 <groupId>io.fd.honeycomb.doc</groupId>
539 <artifactId>asciidoc-scripts</artifactId>
540 <version>1.18.01-SNAPSHOT</version>
548 <artifactId>maven-enforcer-plugin</artifactId>
551 <artifactId>maven-source-plugin</artifactId>
554 <artifactId>maven-javadoc-plugin</artifactId>
557 <artifactId>maven-checkstyle-plugin</artifactId>
560 <artifactId>maven-dependency-plugin</artifactId>
563 <artifactId>maven-compiler-plugin</artifactId>
566 <groupId>org.jacoco</groupId>
567 <artifactId>jacoco-maven-plugin</artifactId>
570 <groupId>org.apache.felix</groupId>
571 <artifactId>maven-bundle-plugin</artifactId>
574 <groupId>org.codehaus.gmaven</groupId>
575 <artifactId>groovy-maven-plugin</artifactId>
579 <!-- To support site push-->
582 <groupId>org.apache.maven.wagon</groupId>
583 <artifactId>wagon-webdav-jackrabbit</artifactId>
584 <version>2.9</version>
592 <groupId>org.apache.maven.plugins</groupId>
593 <artifactId>maven-project-info-reports-plugin</artifactId>
594 <version>${project.info.report.version}</version>
598 <report>index</report>
599 <report>summary</report>
600 <report>modules</report>
602 <report>dependencies</report>
603 <report>distribution-management</report>
604 <report>mailing-list</report>
605 <report>issue-tracking</report>
606 <report>license</report>
613 <groupId>org.apache.maven.plugins</groupId>
614 <artifactId>maven-javadoc-plugin</artifactId>
615 <version>${maven.javadoc.version}</version>
620 <report>javadoc-no-fork</report>
625 <additionalparam>-Xdoclint:none</additionalparam>
629 <groupId>org.apache.maven.plugins</groupId>
630 <artifactId>maven-resources-plugin</artifactId>
631 <version>${maven.resources.version}</version>
636 <distributionManagement>
638 <id>fdio-release</id>
639 <url>${nexusproxy}/repositories/fd.io.release/</url>
642 <id>fdio-snapshot</id>
643 <url>${nexusproxy}/repositories/fd.io.snapshot/</url>
644 </snapshotRepository>
647 <url>dav:${docs.base.url}/${docs.hc.folder}/${project.version}</url>
649 </distributionManagement>
652 <!-- Using only ODL stable releases -->
655 <enabled>true</enabled>
656 <updatePolicy>never</updatePolicy>
659 <enabled>false</enabled>
661 <id>opendaylight-mirror</id>
662 <name>opendaylight-mirror</name>
663 <url>${odl.nexusproxy}/repositories/public/</url>