1 <?xml version="1.0" encoding="UTF-8"?>
3 * ========================LICENSE_START=================================
6 * Copyright (C) 2019-2023: Nordix Foundation
7 * Copyright (C) 2023-2024: OpenInfra Foundation Europe
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
20 * ========================LICENSE_END===================================
23 xmlns="http://maven.apache.org/POM/4.0.0"
24 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
25 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
26 <modelVersion>4.0.0</modelVersion>
28 <groupId>org.springframework.boot</groupId>
29 <artifactId>spring-boot-starter-parent</artifactId>
30 <version>3.2.5</version>
33 <groupId>org.o-ran-sc.nonrtric.plt</groupId>
34 <artifactId>a1policymanagementservice</artifactId>
35 <version>2.9.0-SNAPSHOT</version>
38 <name>The Apache Software License, Version 2.0</name>
39 <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
44 <id>onap-releases</id>
45 <name>onap-releases</name>
46 <url>https://nexus.onap.org/content/repositories/releases/</url>
50 <java.version>17</java.version>
51 <software.amazon.awssdk.version>2.20.12</software.amazon.awssdk.version>
52 <json.version>20231013</json.version>
53 <commons-io.version>2.14.0</commons-io.version>
54 <guava.version>32.0.1-jre</guava.version>
55 <surefire-maven-plugin.version>3.0.0-M8</surefire-maven-plugin.version>
56 <surefire-report-plugin.version>3.0.0-M8</surefire-report-plugin.version>
57 <maven-compiler-plugin.version>3.10.0</maven-compiler-plugin.version>
58 <docker-maven-plugin>0.43.0</docker-maven-plugin>
59 <sonar-maven-plugin.version>3.7.0.1746</sonar-maven-plugin.version>
60 <jacoco-maven-plugin.version>0.8.8</jacoco-maven-plugin.version>
61 <exec-maven-plugin.version>3.1.0</exec-maven-plugin.version>
65 <groupId>javax.validation</groupId>
66 <artifactId>validation-api</artifactId>
67 <version>2.0.1.Final</version>
70 <groupId>javax.annotation</groupId>
71 <artifactId>javax.annotation-api</artifactId>
72 <version>1.3.2</version>
75 <groupId>io.swagger.core.v3</groupId>
76 <artifactId>swagger-annotations</artifactId>
77 <version>2.2.15</version>
80 <groupId>org.openapitools</groupId>
81 <artifactId>jackson-databind-nullable</artifactId>
82 <version>0.2.4</version>
85 <groupId>org.springframework.boot</groupId>
86 <artifactId>spring-boot</artifactId>
89 <groupId>org.springframework</groupId>
90 <artifactId>spring-context</artifactId>
93 <groupId>org.springframework.boot</groupId>
94 <artifactId>spring-boot-autoconfigure</artifactId>
97 <groupId>org.springframework.boot</groupId>
98 <artifactId>spring-boot-starter-webflux</artifactId>
101 <groupId>org.aspectj</groupId>
102 <artifactId>aspectjweaver</artifactId>
105 <groupId>org.apache.tomcat.embed</groupId>
106 <artifactId>tomcat-embed-core</artifactId>
109 <groupId>com.google.guava</groupId>
110 <artifactId>guava</artifactId>
111 <version>${guava.version}</version>
114 <groupId>com.google.code.gson</groupId>
115 <artifactId>gson</artifactId>
116 <version>${gson.version}</version>
119 <groupId>org.json</groupId>
120 <artifactId>json</artifactId>
121 <version>${json.version}</version>
124 <groupId>org.projectlombok</groupId>
125 <artifactId>lombok</artifactId>
126 <scope>provided</scope>
129 <groupId>org.mapstruct</groupId>
130 <artifactId>mapstruct</artifactId>
131 <version>1.5.5.Final</version>
134 <groupId>org.mapstruct</groupId>
135 <artifactId>mapstruct-processor</artifactId>
136 <version>1.5.5.Final</version>
138 <!-- Actuator dependencies -->
140 <groupId>org.springframework.boot</groupId>
141 <artifactId>spring-boot-starter-actuator</artifactId>
142 <scope>runtime</scope>
145 <groupId>io.micrometer</groupId>
146 <artifactId>micrometer-registry-prometheus</artifactId>
149 <groupId>org.springframework.boot</groupId>
150 <artifactId>spring-boot-starter-aop</artifactId>
153 <groupId>software.amazon.awssdk</groupId>
154 <artifactId>s3</artifactId>
155 <version>${software.amazon.awssdk.version}</version>
157 <!-- For development help -->
159 <groupId>org.springframework.boot</groupId>
160 <artifactId>spring-boot-devtools</artifactId>
161 <optional>true</optional>
162 <scope>runtime</scope>
165 <groupId>org.springframework.boot</groupId>
166 <artifactId>spring-boot-configuration-processor</artifactId>
167 <optional>true</optional>
168 <scope>runtime</scope>
171 <groupId>org.springframework.boot</groupId>
172 <artifactId>spring-boot-starter-test</artifactId>
176 <groupId>org.awaitility</groupId>
177 <artifactId>awaitility</artifactId>
181 <groupId>io.projectreactor</groupId>
182 <artifactId>reactor-test</artifactId>
186 <groupId>org.junit.jupiter</groupId>
187 <artifactId>junit-jupiter-engine</artifactId>
191 <groupId>org.mockito</groupId>
192 <artifactId>mockito-junit-jupiter</artifactId>
196 <groupId>org.mockito</groupId>
197 <artifactId>mockito-core</artifactId>
201 <groupId>com.squareup.okhttp3</groupId>
202 <artifactId>mockwebserver</artifactId>
206 <groupId>commons-io</groupId>
207 <artifactId>commons-io</artifactId>
208 <version>${commons-io.version}</version>
212 <groupId>com.github.erosb</groupId>
213 <artifactId>everit-json-schema</artifactId>
214 <version>1.14.0</version>
218 <groupId>io.micrometer</groupId>
219 <artifactId>micrometer-tracing-bridge-otel</artifactId>
222 <groupId>io.opentelemetry</groupId>
223 <artifactId>opentelemetry-sdk-extension-jaeger-remote-sampler</artifactId>
226 <groupId>io.opentelemetry.instrumentation</groupId>
227 <artifactId>opentelemetry-spring-webflux-5.3</artifactId>
230 <groupId>io.opentelemetry.instrumentation</groupId>
231 <artifactId>opentelemetry-spring-boot-starter</artifactId>
233 <!-- For ObservationRegistryCustomizer -->
235 <groupId>org.springframework.boot</groupId>
236 <artifactId>spring-boot-actuator-autoconfigure</artifactId>
239 <dependencyManagement>
242 <groupId>io.opentelemetry</groupId>
243 <artifactId>opentelemetry-bom</artifactId>
244 <version>1.38.0</version>
246 <scope>import</scope>
249 <groupId>io.opentelemetry.instrumentation</groupId>
250 <artifactId>opentelemetry-instrumentation-bom-alpha</artifactId>
251 <version>2.4.0-alpha</version>
253 <scope>import</scope>
256 </dependencyManagement>
260 <groupId>org.springframework.boot</groupId>
261 <artifactId>spring-boot-maven-plugin</artifactId>
264 <groupId>org.apache.maven.plugins</groupId>
265 <artifactId>maven-surefire-plugin</artifactId>
266 <version>${surefire-maven-plugin.version}</version>
268 <skipTests>false</skipTests>
272 <artifactId>maven-failsafe-plugin</artifactId>
275 <groupId>org.codehaus.mojo</groupId>
276 <artifactId>build-helper-maven-plugin</artifactId>
279 <id>add-additional-source-dirs</id>
280 <phase>generate-sources</phase>
282 <goal>add-source</goal>
286 <source>${project.build.directory}/generated-sources/annotations/</source>
287 <source>${project.basedir}/add-src/main/java</source>
288 <source>${project.basedir}/add-src/main/resources</source>
293 <id>add-additional-testsource-dirs</id>
294 <phase>generate-sources</phase>
296 <goal>add-test-source</goal>
300 <source>${project.basedir}/add-src/test/java</source>
301 <source>${project.basedir}/add-src/test/resources</source>
308 <groupId>org.jacoco</groupId>
309 <artifactId>jacoco-maven-plugin</artifactId>
310 <version>${jacoco-maven-plugin.version}</version>
313 <id>default-prepare-agent</id>
315 <goal>prepare-agent</goal>
319 <id>default-report</id>
320 <phase>prepare-package</phase>
328 <groupId>io.swagger.codegen.v3</groupId>
329 <artifactId>swagger-codegen-maven-plugin</artifactId>
330 <version>3.0.46</version>
333 <id>generate-openapi-json</id>
334 <phase>prepare-package</phase>
336 <goal>generate</goal>
339 <inputSpec>${project.basedir}/api/pms-api.yaml</inputSpec>
340 <language>openapi</language>
341 <output>${project.basedir}/api</output>
343 <outputFile>pms-api.json</outputFile>
350 <groupId>org.openapitools</groupId>
351 <artifactId>openapi-generator-maven-plugin</artifactId>
352 <version>6.6.0</version>
355 <id>generate-openapi-html</id>
356 <phase>prepare-package</phase>
358 <goal>generate</goal>
361 <inputSpec>${project.basedir}/api/pms-api.json</inputSpec>
362 <generatorName>html2</generatorName>
363 <output>${project.basedir}/api/pms-api</output>
364 <skipOperationExample>false</skipOperationExample>
365 <strictSpec>false</strictSpec>
367 <appDescription>The O-RAN Non-RT RIC A1 Policy Management Service
368 provides a REST API for managing O-RAN A1 Policies.</appDescription>
369 <appName>ONAP CCSDK A1 Policy Management Service</appName>
370 <infoUrl>https://wiki.onap.org/display/DW/O-RAN+A1+Policies+in+ONAP</infoUrl>
371 <licenseInfo>Copyright (C) 2020-2023 Nordix Foundation. Licensed
372 under the Apache License, and Copyright (C) 2024 OpenInfra
373 Foundation Europe. All rights reserved.</licenseInfo>
374 <licenseUrl>http://www.apache.org/licenses/LICENSE-2.0</licenseUrl>
379 <id>generate-openapi-policy-api</id>
380 <phase>generate-sources</phase>
382 <goal>generate</goal>
385 <generatorName>spring</generatorName>
386 <inputSpec>${project.basedir}/api/pms-api.yaml</inputSpec>
387 <library>spring-boot</library>
388 <invokerPackage>org.onap.ccsdk.oran.a1policymanagementservice.controllers.v2</invokerPackage>
389 <apiPackage>org.onap.ccsdk.oran.a1policymanagementservice.controllers.api.v2</apiPackage>
390 <modelPackage>org.onap.ccsdk.oran.a1policymanagementservice.models.v2</modelPackage>
391 <generateApiTests>false</generateApiTests>
392 <generateModelTests>false</generateModelTests>
393 <generateSupportingFiles>false</generateSupportingFiles>
394 <skipValidateSpec>false</skipValidateSpec>
396 <interfaceOnly>true</interfaceOnly>
397 <useTags>true</useTags>
398 <reactive>true</reactive>
399 <dateLibrary>java8</dateLibrary>
401 <unhandledException>true</unhandledException>
402 <openApiNullable>false</openApiNullable>
403 <skipDefaultInterface>true</skipDefaultInterface>
408 <id>generate-policy-api-v3</id>
409 <phase>generate-sources </phase>
411 <goal>generate</goal>
414 <inputSpec>${project.basedir}/api/pms-api-v3.yaml</inputSpec>
415 <invokerPackage>org.onap.ccsdk.oran.a1policymanagementservice.controllers.v3</invokerPackage>
416 <apiPackage>org.onap.ccsdk.oran.a1policymanagementservice.controllers.api.v3</apiPackage>
417 <modelPackage>org.onap.ccsdk.oran.a1policymanagementservice.models.v3</modelPackage>
418 <generateApiTests>false</generateApiTests>
419 <generateModelTests>false</generateModelTests>
420 <generatorName>spring</generatorName>
421 <generateSupportingFiles>false</generateSupportingFiles>
422 <skipValidateSpec>false</skipValidateSpec>
423 <library>spring-boot</library>
425 <interfaceOnly>true</interfaceOnly>
426 <useTags>true</useTags>
427 <reactive>true</reactive>
428 <dateLibrary>java8</dateLibrary>
430 <unhandledException>true</unhandledException>
431 <openApiNullable>false</openApiNullable>
432 <skipDefaultInterface>true</skipDefaultInterface>
439 <artifactId>maven-resources-plugin</artifactId>
442 <id>copy-resource-configuration-files</id>
443 <phase>initialize</phase>
445 <goal>copy-resources</goal>
448 <overwrite>true</overwrite>
449 <verbose>true</verbose>
450 <outputDirectory>${project.basedir}/config</outputDirectory>
453 <directory>${project.basedir}/onap/oran/a1-policy-management/config</directory>
459 <id>copy-resource-openapi-files-fromsubmodule</id>
460 <phase>initialize</phase>
462 <goal>copy-resources</goal>
465 <verbose>true</verbose>
466 <overwrite>true</overwrite>
467 <outputDirectory>${project.basedir}/api</outputDirectory>
470 <directory>${project.basedir}/onap/oran/a1-policy-management/api</directory>
472 <include>pms-api.json</include>
473 <include>pms-api.yaml</include>
474 <include>pms-api-v3.yaml</include>
481 <id>copy-resource-doc-openapi</id>
482 <phase>package</phase>
484 <goal>copy-resources</goal>
487 <outputDirectory>${project.basedir}/docs/offeredapis/swagger</outputDirectory>
488 <overwrite>true</overwrite>
489 <verbose>true</verbose>
492 <directory>${project.basedir}/api</directory>
494 <include>pms-api.json</include>
495 <include>pms-api.yaml</include>
502 <id>copy-resource-openapi-html</id>
503 <phase>package</phase>
505 <goal>copy-resources</goal>
508 <verbose>true</verbose>
510 ${project.basedir}/docs/offeredapis/openapitoolgen/offeredapis/pms-api</outputDirectory>
513 <directory>${project.basedir}/api/pms-api</directory>
515 <include>pms-api.html</include>
516 <include>index.html</include>
525 <groupId>io.fabric8</groupId>
526 <artifactId>docker-maven-plugin</artifactId>
527 <version>${docker-maven-plugin}</version>
528 <inherited>false</inherited>
531 <id>generate-a1policymanagementservice-image</id>
532 <phase>package</phase>
537 <pullRegistry>${env.CONTAINER_PULL_REGISTRY}</pullRegistry>
541 o-ran-sc/nonrtric-plt-a1policymanagementservice:${project.version}</name>
543 <cleanup>try</cleanup>
544 <contextDir>${basedir}</contextDir>
545 <dockerFile>Dockerfile</dockerFile>
546 <filter>false</filter>
548 <JAR>${project.build.finalName}.jar</JAR>
551 <tag>${project.version}</tag>
559 <id>push-a1policymanagementservice-image</id>
565 <pullRegistry>${env.CONTAINER_PULL_REGISTRY}</pullRegistry>
566 <pushRegistry>${env.CONTAINER_PUSH_REGISTRY}</pushRegistry>
570 o-ran-sc/nonrtric-plt-a1policymanagementservice:${project.version}</name>
572 <contextDir>${basedir}</contextDir>
573 <dockerFile>Dockerfile</dockerFile>
574 <filter>false</filter>
576 <JAR>${project.build.finalName}.jar</JAR>
579 <tag>${project.version}</tag>
589 <!-- support sonar in multi-module project -->
591 <groupId>org.sonarsource.scanner.maven</groupId>
592 <artifactId>sonar-maven-plugin</artifactId>
593 <version>${sonar-maven-plugin.version}</version>
596 <groupId>org.codehaus.mojo</groupId>
597 <artifactId>exec-maven-plugin</artifactId>
598 <version>${exec-maven-plugin.version}</version>
601 <id>git submodule update</id>
602 <phase>validate</phase>
604 <executable>git</executable>
606 <argument>submodule</argument>
607 <argument>update</argument>
608 <argument>--init</argument>
609 <argument>--recursive</argument>
621 <system>JIRA</system>
622 <url>https://jira.o-ran-sc.org/</url>
627 <groupId>org.apache.maven.plugins</groupId>
628 <artifactId>maven-surefire-report-plugin</artifactId>
629 <version>${surefire-report-plugin.version}</version>