Fixup javadoc links
[odlparent.git] / odlparent-lite / pom.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- vi: set et smarttab sw=2 tabstop=2: -->
3 <!--
4  Copyright (c) 2015 The Linux Foundation 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"
11   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
12   <modelVersion>4.0.0</modelVersion>
13
14   <!--
15       Note: This parent is not meant to be used by code artifacts. Please use
16             odlparent instead.
17   -->
18
19   <groupId>org.opendaylight.odlparent</groupId>
20   <artifactId>odlparent-lite</artifactId>
21   <version>13.1.0-SNAPSHOT</version>
22   <packaging>pom</packaging>
23   <name>ODL :: odlparent :: ${project.artifactId}</name>
24
25   <!-- Sufficient Metadata for Maven Central Repository deployment
26        These are default, some of which project inheriting from this POM may override (but don't have to, typically)
27        see http://central.sonatype.org/pages/requirements.html
28    -->
29   <url>${odl.site.url}/${project.groupId}/${stream}/${project.artifactId}/</url>
30   <description>${project.artifactId}</description>
31
32   <licenses>
33     <license>
34       <name>Eclipse Public License v1.0</name>
35       <url>https://www.eclipse.org/legal/epl-v10.html</url>
36     </license>
37   </licenses>
38
39   <organization>
40     <name>OpenDaylight</name>
41     <url>https://www.opendaylight.org</url>
42   </organization>
43
44   <issueManagement>
45     <system>JIRA</system>
46     <url>https://jira.opendaylight.org/</url>
47   </issueManagement>
48
49   <ciManagement>
50     <system>Jenkins</system>
51     <url>https://jenkins.opendaylight.org/releng/</url>
52   </ciManagement>
53
54   <scm>
55     <url>https://git.opendaylight.org/gerrit/</url>
56   </scm>
57
58   <developers>
59     <developer>
60       <id>*</id>
61       <name>Please consult the PROJECT_INFO.yaml, README* and/or CONTRIBUTORS which should be included with this JAR</name>
62       <url>https://www.opendaylight.org</url>
63       <email>discuss@lists.opendaylight.org</email>
64     </developer>
65   </developers>
66
67   <properties>
68     <nexusproxy>https://nexus.opendaylight.org/content</nexusproxy>
69
70     <!-- Variables required for Maven Site generation -->
71     <nexus.site.url>file:${user.dir}/target/staged-site</nexus.site.url>
72     <odl.site.url>https://nexus.opendaylight.org/content/sites/site/</odl.site.url>
73     <stream>latest</stream><!-- CI should pass in -Dstream={stream} -->
74
75     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
76     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
77
78     <!-- Java Versions -->
79     <maven.compiler.release>17</maven.compiler.release>
80
81     <!-- This version property instead of just direct version in pluginManagement is the exception that confirms the rule
82          and is required so that downstream users of the archetype-packaging extension can use this (and get the same version
83          as the maven-archetype-plugin), because there is no "extensionManagement" in Maven -->
84     <maven.archetype.plugin.version>3.2.1</maven.archetype.plugin.version>
85
86     <!-- This property allows deployments to be skipped in child modules -->
87     <maven.deploy.skip>false</maven.deploy.skip>
88
89     <!-- This property allows installations to be skipped in child modules -->
90     <maven.install.skip>false</maven.install.skip>
91
92     <!-- Opt-out from running maven-checkstyle-plugin at all. Defaults to false,
93          set to 'true' in pom.xml of project which desires to completely skip
94          execution. -->
95     <odlparent.checkstyle.skip>false</odlparent.checkstyle.skip>
96
97     <!-- Opt-out from running modernizer-maven-plugin at all. Defaults to false,
98          set to 'true' in pom.xml of project which desires to completely skip
99          execution. -->
100     <odlparent.modernizer.skip>false</odlparent.modernizer.skip>
101
102     <!-- Opt-out from running spotbugs-maven-plugin at all. Defaults to false,
103          set to 'true' in pom.xml of project which desires to completely skip
104          execution. -->
105     <odlparent.spotbugs.skip>false</odlparent.spotbugs.skip>
106
107     <!-- Used in neutron, ovsdb -->
108     <jacoco.version>0.8.11</jacoco.version>
109   </properties>
110
111   <build>
112     <pluginManagement>
113       <plugins>
114         <plugin>
115           <artifactId>maven-antrun-plugin</artifactId>
116           <version>3.1.0</version>
117         </plugin>
118         <plugin>
119           <artifactId>maven-archetype-plugin</artifactId>
120           <version>${maven.archetype.plugin.version}</version>
121         </plugin>
122         <plugin>
123           <artifactId>maven-assembly-plugin</artifactId>
124           <version>3.6.0</version>
125         </plugin>
126         <plugin>
127           <artifactId>maven-clean-plugin</artifactId>
128           <version>3.3.2</version>
129         </plugin>
130         <plugin>
131           <artifactId>maven-compiler-plugin</artifactId>
132           <version>3.12.1</version>
133         </plugin>
134         <plugin>
135           <artifactId>maven-dependency-plugin</artifactId>
136           <version>3.6.1</version>
137         </plugin>
138         <plugin>
139           <artifactId>maven-deploy-plugin</artifactId>
140           <version>3.1.1</version>
141           <configuration>
142             <skip>${maven.deploy.skip}</skip>
143           </configuration>
144         </plugin>
145         <plugin>
146           <artifactId>maven-enforcer-plugin</artifactId>
147           <version>3.4.1</version>
148         </plugin>
149         <plugin>
150           <artifactId>maven-help-plugin</artifactId>
151           <version>3.4.0</version>
152         </plugin>
153         <plugin>
154           <artifactId>maven-install-plugin</artifactId>
155           <version>3.1.1</version>
156           <configuration>
157             <skip>${maven.install.skip}</skip>
158           </configuration>
159         </plugin>
160         <plugin>
161           <artifactId>maven-javadoc-plugin</artifactId>
162           <version>3.6.3</version>
163           <configuration combine.children="append">
164             <!-- Keep things quiet except for warnings/errors -->
165             <quiet>true</quiet>
166
167             <tags>
168               <!-- https://bugs.openjdk.java.net/browse/JDK-8008632 -->
169               <tag>
170                 <name>apiNote</name>
171                 <placement>a</placement>
172                 <head>API Note:</head>
173               </tag>
174               <tag>
175                 <name>implSpec</name>
176                 <placement>a</placement>
177                 <head>Implementation Requirements:</head>
178               </tag>
179               <tag>
180                 <name>implNote</name>
181                 <placement>a</placement>
182                 <head>Implementation Note:</head>
183               </tag>
184
185               <!-- support for HelpMojo generated by the maven-plugin-plugin -->
186               <tag>
187                 <name>goal</name>
188                 <placement>t</placement>
189                 <head>Goal:</head>
190               </tag>
191               <tag>
192                 <name>requiresProject</name>
193                 <placement>t</placement>
194                 <head>Requires project:</head>
195               </tag>
196               <tag>
197                 <name>threadSafe</name>
198                 <placement>t</placement>
199                 <head>Threadsafe</head>
200               </tag>
201               <tag>
202                 <name>phase</name>
203                 <placement>t</placement>
204                 <head>Phase:</head>
205               </tag>
206             </tags>
207           </configuration>
208           <executions>
209             <execution>
210               <id>attach-javadocs</id>
211               <goals>
212                 <goal>jar</goal>
213               </goals>
214             </execution>
215           </executions>
216         </plugin>
217         <plugin>
218           <artifactId>maven-jar-plugin</artifactId>
219           <version>3.3.0</version>
220         </plugin>
221         <plugin>
222           <artifactId>maven-project-info-reports-plugin</artifactId>
223           <version>3.5.0</version>
224         </plugin>
225         <plugin>
226           <artifactId>maven-release-plugin</artifactId>
227           <version>3.0.1</version>
228         </plugin>
229         <plugin>
230           <artifactId>maven-resources-plugin</artifactId>
231           <version>3.3.1</version>
232         </plugin>
233         <plugin>
234           <artifactId>maven-site-plugin</artifactId>
235           <version>3.12.1</version>
236           <configuration>
237             <asciidoc>
238               <attributes>
239                 <imagesdir>./images</imagesdir>
240                 <imagesoutdir>${project.build.directory}/site/images</imagesoutdir>
241                 <icons>font</icons>
242                 <source-highlighter>coderay</source-highlighter>
243                 <coderay-css>style</coderay-css>
244               </attributes>
245               <requires>
246                 <require>asciidoctor-diagram</require>
247               </requires>
248             </asciidoc>
249           </configuration>
250           <dependencies>
251             <dependency>
252               <groupId>org.asciidoctor</groupId>
253               <artifactId>asciidoctor-maven-plugin</artifactId>
254               <version>2.2.6</version>
255             </dependency>
256             <dependency>
257               <groupId>org.asciidoctor</groupId>
258               <artifactId>asciidoctorj-diagram</artifactId>
259               <version>2.2.17</version>
260             </dependency>
261           </dependencies>
262         </plugin>
263         <plugin>
264           <groupId>org.codehaus.mojo</groupId>
265           <artifactId>build-helper-maven-plugin</artifactId>
266           <version>3.5.0</version>
267         </plugin>
268         <plugin>
269           <groupId>org.codehaus.mojo</groupId>
270           <artifactId>exec-maven-plugin</artifactId>
271           <version>3.2.0</version>
272         </plugin>
273         <plugin>
274           <groupId>org.codehaus.mojo</groupId>
275           <artifactId>jdepend-maven-plugin</artifactId>
276           <version>2.0</version>
277           <executions>
278             <execution>
279               <phase>site</phase>
280               <goals>
281                 <goal>generate-no-fork</goal>
282               </goals>
283             </execution>
284           </executions>
285         </plugin>
286         <plugin>
287           <groupId>org.codehaus.mojo</groupId>
288           <artifactId>versions-maven-plugin</artifactId>
289           <version>2.16.2</version>
290         </plugin>
291         <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
292         <plugin>
293           <groupId>org.eclipse.m2e</groupId>
294           <artifactId>lifecycle-mapping</artifactId>
295           <version>1.0.0</version>
296           <configuration>
297             <lifecycleMappingMetadata>
298               <pluginExecutions>
299                 <pluginExecution>
300                   <pluginExecutionFilter>
301                     <groupId>io.github.git-commit-id</groupId>
302                     <artifactId>git-commit-id-maven-plugin</artifactId>
303                     <versionRange>[5,)</versionRange>
304                     <goals>
305                       <goal>revision</goal>
306                     </goals>
307                   </pluginExecutionFilter>
308                   <action>
309                     <ignore></ignore>
310                   </action>
311                 </pluginExecution>
312                 <pluginExecution>
313                   <pluginExecutionFilter>
314                     <groupId>org.apache.maven.plugins</groupId>
315                     <artifactId>maven-dependency-plugin</artifactId>
316                     <versionRange>[2.10,)</versionRange>
317                     <goals>
318                       <goal>unpack</goal>
319                     </goals>
320                   </pluginExecutionFilter>
321                   <action>
322                     <ignore></ignore>
323                   </action>
324                 </pluginExecution>
325                 <pluginExecution>
326                   <pluginExecutionFilter>
327                     <groupId>org.apache.maven.plugins</groupId>
328                     <artifactId>maven-enforcer-plugin</artifactId>
329                     <versionRange>[1.0.0,)</versionRange>
330                     <goals>
331                       <goal>enforce</goal>
332                     </goals>
333                   </pluginExecutionFilter>
334                   <action>
335                     <ignore />
336                   </action>
337                 </pluginExecution>
338               </pluginExecutions>
339             </lifecycleMappingMetadata>
340           </configuration>
341         </plugin>
342         <plugin>
343           <groupId>org.jacoco</groupId>
344           <artifactId>jacoco-maven-plugin</artifactId>
345           <version>${jacoco.version}</version>
346         </plugin>
347         <plugin>
348           <groupId>org.cyclonedx</groupId>
349           <artifactId>cyclonedx-maven-plugin</artifactId>
350           <version>2.7.11</version>
351         </plugin>
352       </plugins>
353     </pluginManagement>
354
355     <plugins>
356       <plugin>
357         <artifactId>maven-enforcer-plugin</artifactId>
358         <executions>
359           <execution>
360             <id>enforce-maven</id>
361             <configuration>
362               <rules>
363                 <requireJavaVersion>
364                   <version>${maven.compiler.release}</version>
365                 </requireJavaVersion>
366                 <requireMavenVersion>
367                   <version>[3.8.3,)</version>
368                 </requireMavenVersion>
369                 <bannedDependencies>
370                   <excludes>
371                     <!-- https://nvd.nist.gov/vuln/detail/CVE-2021-44228: at least 2.15.0 -->
372                     <!-- https://nvd.nist.gov/vuln/detail/CVE-2021-45046: at least 2.16.0 -->
373                     <!-- https://nvd.nist.gov/vuln/detail/CVE-2021-45105: at least 2.17.0 -->
374                     <!-- https://nvd.nist.gov/vuln/detail/CVE-2021-44832: at least 2.17.1 -->
375                     <exclude>org.apache.logging.log4j:log4j-core:(,2.17.1)</exclude>
376                   </excludes>
377                 </bannedDependencies>
378               </rules>
379             </configuration>
380             <goals>
381               <goal>enforce</goal>
382             </goals>
383           </execution>
384         </executions>
385       </plugin>
386       <plugin>
387         <groupId>io.github.git-commit-id</groupId>
388         <artifactId>git-commit-id-maven-plugin</artifactId>
389         <version>7.0.0</version>
390         <executions>
391           <execution>
392             <id>get-git-infos</id>
393             <goals>
394               <goal>revision</goal>
395             </goals>
396           </execution>
397         </executions>
398         <configuration>
399           <failOnNoGitDirectory>false</failOnNoGitDirectory>
400           <generateGitPropertiesFile>true</generateGitPropertiesFile>
401           <generateGitPropertiesFilename>${project.build.outputDirectory}/META-INF/git.properties</generateGitPropertiesFilename>
402           <gitDescribe>
403             <skip>false</skip>
404             <always>true</always>
405             <tags>true</tags>
406           </gitDescribe>
407           <!-- trust the working directory -->
408           <offline>true</offline>
409         </configuration>
410       </plugin>
411
412       <!-- SBOM integration -->
413       <plugin>
414         <groupId>org.cyclonedx</groupId>
415         <artifactId>cyclonedx-maven-plugin</artifactId>
416         <executions>
417           <execution>
418             <!--
419               Run after 'package' but before 'verify' phases.
420
421               FIXME: We really want to say 'run as last package-phase execution.
422             -->
423             <phase>post-integration-test</phase>
424             <goals>
425               <goal>makeBom</goal>
426             </goals>
427             <configuration>
428               <verbose>false</verbose>
429             </configuration>
430           </execution>
431         </executions>
432       </plugin>
433     </plugins>
434   </build>
435
436   <profiles>
437     <profile>
438       <id>ide</id>
439       <activation>
440         <property>
441           <name>m2e.version</name>
442         </property>
443       </activation>
444       <build>
445         <!-- Put the IDE's build output in a folder other than target, so that IDE builds don't interact with Maven builds -->
446         <directory>target-ide</directory>
447       </build>
448     </profile>
449     <profile>
450         <!-- http://blog2.vorburger.ch/2016/06/improve-maven-build-speed-with-q.html
451              q = http://memory-alpha.wikia.com/wiki/Q ;)
452
453              The Quick profile is used during incremental local development, when you want to "just get that JAR built",
454              which is very handy e.g. for fast hot reloading cycles in Karaf with bundle watch.  It (intentionally!) skips
455              tests, quality checks etc. which are great and useful to run before finally submitting changes to Gerrit, and
456              which all must run on Gerrit, but which are overhead during ongoing fast iterative local development.
457
458              Note that the idea here is that your IDE will already have run quality checks such as e.g. Checkstyle
459              while you typed the code anyway.  Similarly, if you wrote a test, you'll probably already have compiled and run it
460              from your IDE, so when you want the OSGi bundle JAR for Karaf, ASAP, you typically don't want all that to run again.
461           -->
462       <id>q</id>
463       <properties>
464         <skipTests>true</skipTests>
465             <!-- But NOT <maven.test.skip>true, as that's for compiling, not running, tests;
466                  and that's usually quick.  Skipping test compilation with -Pq with maven.test.skip would be
467                  particularly confusing when used in a project with maven-jar-plugin <goal>test-jar, so don't.)  -->
468         <skipIT>true</skipIT>
469         <skipITs>true</skipITs>
470         <sft.skip>true</sft.skip>
471         <jacoco.skip>true</jacoco.skip>
472         <maven.javadoc.skip>true</maven.javadoc.skip>
473         <maven.source.skip>true</maven.source.skip>
474         <odlparent.checkstyle.skip>true</odlparent.checkstyle.skip>
475         <odlparent.modernizer.skip>true</odlparent.modernizer.skip>
476         <odlparent.spotbugs.skip>true</odlparent.spotbugs.skip>
477         <maven.site.skip>true</maven.site.skip>
478         <invoker.skip>true</invoker.skip>
479         <enforcer.skip>true</enforcer.skip>
480         <duplicate-finder.skip>true</duplicate-finder.skip>
481         <mdsal.skip.verbose>true</mdsal.skip.verbose> <!-- Bug 6236 -->
482         <maven.gitcommitid.skip>true</maven.gitcommitid.skip>
483         <cyclonedx.skip>true</cyclonedx.skip>
484       </properties>
485     </profile>
486     <profile>
487       <!-- http://blog2.vorburger.ch/2016/06/maven-install-into-additional.html
488            mvn [-o -Pq] install -DaddInstallRepositoryPath=.../karaf/system is used in development to directly
489            install artifacts such as bundles and KARs not just into the global shared ~/.m2/repository
490            but also into the isolated Maven repo of a Karaf distribution.
491        -->
492       <activation>
493         <property>
494           <name>addInstallRepositoryPath</name>
495         </property>
496       </activation>
497       <build>
498         <plugins>
499           <plugin>
500             <artifactId>maven-install-plugin</artifactId>
501             <executions>
502               <execution>
503                 <id>additional-install</id>
504                 <phase>install</phase>
505                 <goals>
506                   <goal>install-file</goal>
507                 </goals>
508                 <configuration>
509                   <file>${project.build.directory}/${project.build.finalName}.jar</file>
510                   <localRepositoryPath>${addInstallRepositoryPath}</localRepositoryPath>
511                 </configuration>
512               </execution>
513             </executions>
514           </plugin>
515         </plugins>
516       </build>
517     </profile>
518     <profile>
519       <!--
520           This profile is to ensure we only build javadocs reports
521           when we plan to deploy Maven site for our project.
522
523           It activates by checking for the existance of deploy-site.xml in the
524           user's current working directory. (Intent is that this is run from
525           the Project root directory)
526       -->
527       <id>maven-site</id>
528       <activation>
529         <file>
530           <exists>${user.dir}/deploy-site.xml</exists>
531         </file>
532       </activation>
533
534       <build>
535         <plugins>
536           <plugin>
537             <artifactId>maven-site-plugin</artifactId>
538
539             <executions>
540               <execution>
541                 <id>generate-site</id>
542                 <phase>install</phase>
543                 <goals>
544                   <goal>site</goal>
545                   <goal>attach-descriptor</goal>
546                 </goals>
547               </execution>
548             </executions>
549           </plugin>
550         </plugins>
551       </build>
552
553       <reporting>
554         <plugins>
555           <plugin>
556             <artifactId>maven-project-info-reports-plugin</artifactId>
557             <configuration>
558               <dependencyLocationsEnabled>false</dependencyLocationsEnabled>
559             </configuration>
560             <reportSets>
561               <reportSet>
562                 <reports>
563                   <report>index</report>
564                 </reports>
565               </reportSet>
566             </reportSets>
567           </plugin>
568           <plugin>
569             <artifactId>maven-javadoc-plugin</artifactId>
570             <reportSets>
571               <reportSet>
572                 <reports>
573                   <report>javadoc-no-fork</report>
574                   <report>test-javadoc-no-fork</report>
575                 </reports>
576               </reportSet>
577             </reportSets>
578           </plugin>
579         </plugins>
580       </reporting>
581     </profile>
582     <profile>
583       <!-- Javadocs with links -->
584       <id>javadoc-links</id>
585         <activation>
586           <file>
587             <exists>odl-javadoc-links-optin</exists>
588           </file>
589         </activation>
590       <build>
591         <plugins>
592           <plugin>
593             <artifactId>maven-javadoc-plugin</artifactId>
594             <configuration combine.children="append">
595               <links>
596                 <link>https://junit.org/junit5/docs/5.10.1/api/</link>
597                 <link>https://hamcrest.org/JavaHamcrest/javadoc/2.2/</link>
598                 <link>http://www.slf4j.org/apidocs/</link>
599                 <link>https://xerces.apache.org/xerces2-j/javadocs/api/</link>
600                 <link>https://guava.dev/releases/32.1.3-jre/api/docs/</link>
601                 <link>http://netty.io/4.1/api/</link>
602                 <link>https://commons.apache.org/proper/commons-lang/javadocs/api-release/</link>
603               </links>
604             </configuration>
605           </plugin>
606         </plugins>
607       </build>
608     </profile>
609
610     <profile>
611       <!-- Disable plugins which are not useful for sonar -->
612       <id>sonar-only</id>
613       <activation>
614         <property>
615           <name>sonar</name>
616         </property>
617       </activation>
618       <properties>
619         <checkstyle.skip>true</checkstyle.skip>
620         <duplicate-finder.skip>true</duplicate-finder.skip>
621         <sft.skip>true</sft.skip>
622         <maven.javadoc.skip>true</maven.javadoc.skip>
623         <maven.source.skip>true</maven.source.skip>
624       </properties>
625     </profile>
626   </profiles>
627
628   <distributionManagement>
629     <repository>
630       <id>opendaylight-release</id>
631       <url>${nexusproxy}/repositories/opendaylight.release/</url>
632     </repository>
633     <snapshotRepository>
634       <id>opendaylight-snapshot</id>
635       <url>${nexusproxy}/repositories/opendaylight.snapshot/</url>
636     </snapshotRepository>
637     <site>
638       <id>opendaylight-site</id>
639       <url>${nexus.site.url}/${project.artifactId}/</url>
640     </site>
641   </distributionManagement>
642 </project>