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.3.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.29.15</software.amazon.awssdk.version>
52 <json.version>20240303</json.version>
53 <commons-io.version>2.16.1</commons-io.version>
54 <guava.version>33.3.0-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>
62 <localstack.version>1.20.1</localstack.version>
63 <junit.jupiter.version>1.20.3</junit.jupiter.version>
64 <gson.version>2.10.1</gson.version>
65 <javax.annotation-api.version>1.3.2</javax.annotation-api.version>
66 <everit-json-schema.version>1.14.4</everit-json-schema.version>
67 <jackson-databind-nullable.version>0.2.6</jackson-databind-nullable.version>
68 <validation-api.version>2.0.1.Final</validation-api.version>
69 <swagger-annotations.version>2.2.15</swagger-annotations.version>
70 <spring-boot-actuator-autoconfigure.version>3.3.2</spring-boot-actuator-autoconfigure.version>
71 <formatter-maven-plugin.version>2.22.0</formatter-maven-plugin.version>
72 <spotless-maven-plugin.version>2.35.0</spotless-maven-plugin.version>
73 <springdoc.version>2.0.2</springdoc.version>
74 <docker-maven-plugin>0.30.0</docker-maven-plugin>
75 <ccsdk.project.version>${project.version}</ccsdk.project.version>
76 <mapstruct.version>1.6.0</mapstruct.version>
77 <allowskiptests>false</allowskiptests>
81 <groupId>javax.validation</groupId>
82 <artifactId>validation-api</artifactId>
83 <version>${validation-api.version}</version>
86 <groupId>javax.annotation</groupId>
87 <artifactId>javax.annotation-api</artifactId>
88 <version>${javax.annotation-api.version}</version>
91 <groupId>io.swagger.core.v3</groupId>
92 <artifactId>swagger-annotations</artifactId>
93 <version>${swagger-annotations.version}</version>
96 <groupId>org.openapitools</groupId>
97 <artifactId>jackson-databind-nullable</artifactId>
98 <version>${jackson-databind-nullable.version}</version>
101 <groupId>org.springframework.boot</groupId>
102 <artifactId>spring-boot</artifactId>
105 <groupId>org.springframework</groupId>
106 <artifactId>spring-context</artifactId>
109 <groupId>org.springframework.boot</groupId>
110 <artifactId>spring-boot-autoconfigure</artifactId>
113 <groupId>org.springframework.boot</groupId>
114 <artifactId>spring-boot-starter-webflux</artifactId>
117 <groupId>org.springframework.boot</groupId>
118 <artifactId>spring-boot-starter-data-r2dbc</artifactId>
121 <groupId>org.postgresql</groupId>
122 <artifactId>postgresql</artifactId>
123 <scope>runtime</scope>
126 <groupId>org.postgresql</groupId>
127 <artifactId>r2dbc-postgresql</artifactId>
128 <scope>runtime</scope>
131 <groupId>org.flywaydb</groupId>
132 <artifactId>flyway-database-postgresql</artifactId>
133 <scope>runtime</scope>
136 <groupId>org.aspectj</groupId>
137 <artifactId>aspectjweaver</artifactId>
140 <groupId>org.apache.tomcat.embed</groupId>
141 <artifactId>tomcat-embed-core</artifactId>
144 <groupId>com.google.guava</groupId>
145 <artifactId>guava</artifactId>
146 <version>${guava.version}</version>
149 <groupId>com.google.code.gson</groupId>
150 <artifactId>gson</artifactId>
151 <version>${gson.version}</version>
154 <groupId>org.json</groupId>
155 <artifactId>json</artifactId>
156 <version>${json.version}</version>
159 <groupId>org.projectlombok</groupId>
160 <artifactId>lombok</artifactId>
161 <scope>provided</scope>
164 <groupId>org.mapstruct</groupId>
165 <artifactId>mapstruct</artifactId>
166 <version>1.5.5.Final</version>
169 <groupId>org.mapstruct</groupId>
170 <artifactId>mapstruct-processor</artifactId>
171 <version>1.5.5.Final</version>
173 <!-- Actuator dependencies -->
175 <groupId>org.springframework.boot</groupId>
176 <artifactId>spring-boot-starter-actuator</artifactId>
177 <scope>runtime</scope>
180 <groupId>io.micrometer</groupId>
181 <artifactId>micrometer-registry-prometheus</artifactId>
184 <groupId>org.springframework.boot</groupId>
185 <artifactId>spring-boot-starter-aop</artifactId>
188 <groupId>software.amazon.awssdk</groupId>
189 <artifactId>s3</artifactId>
190 <version>${software.amazon.awssdk.version}</version>
192 <!-- For development help -->
194 <groupId>org.springframework.boot</groupId>
195 <artifactId>spring-boot-devtools</artifactId>
196 <optional>true</optional>
197 <scope>runtime</scope>
200 <groupId>org.springframework.boot</groupId>
201 <artifactId>spring-boot-configuration-processor</artifactId>
202 <optional>true</optional>
203 <scope>runtime</scope>
206 <groupId>org.testcontainers</groupId>
207 <artifactId>junit-jupiter</artifactId>
208 <version>${junit.jupiter.version}</version>
212 <groupId>org.testcontainers</groupId>
213 <artifactId>localstack</artifactId>
214 <version>${localstack.version}</version>
218 <groupId>org.springframework.boot</groupId>
219 <artifactId>spring-boot-starter-test</artifactId>
223 <groupId>org.awaitility</groupId>
224 <artifactId>awaitility</artifactId>
228 <groupId>io.projectreactor</groupId>
229 <artifactId>reactor-test</artifactId>
233 <groupId>org.junit.jupiter</groupId>
234 <artifactId>junit-jupiter-engine</artifactId>
238 <groupId>org.mockito</groupId>
239 <artifactId>mockito-junit-jupiter</artifactId>
243 <groupId>org.mockito</groupId>
244 <artifactId>mockito-core</artifactId>
248 <groupId>com.squareup.okhttp3</groupId>
249 <artifactId>mockwebserver</artifactId>
253 <groupId>commons-io</groupId>
254 <artifactId>commons-io</artifactId>
255 <version>${commons-io.version}</version>
259 <groupId>com.github.erosb</groupId>
260 <artifactId>everit-json-schema</artifactId>
261 <version>${everit-json-schema.version}</version>
265 <groupId>io.micrometer</groupId>
266 <artifactId>micrometer-tracing-bridge-otel</artifactId>
269 <groupId>io.opentelemetry</groupId>
270 <artifactId>opentelemetry-sdk-extension-jaeger-remote-sampler</artifactId>
273 <groupId>io.opentelemetry.instrumentation</groupId>
274 <artifactId>opentelemetry-spring-webflux-5.3</artifactId>
277 <groupId>io.opentelemetry.instrumentation</groupId>
278 <artifactId>opentelemetry-spring-boot-starter</artifactId>
280 <!-- For ObservationRegistryCustomizer -->
282 <groupId>org.springframework.boot</groupId>
283 <artifactId>spring-boot-actuator-autoconfigure</artifactId>
284 <version>3.3.0</version>
287 <dependencyManagement>
290 <groupId>io.opentelemetry</groupId>
291 <artifactId>opentelemetry-bom</artifactId>
292 <version>1.41.0</version>
294 <scope>import</scope>
297 <groupId>io.opentelemetry.instrumentation</groupId>
298 <artifactId>opentelemetry-instrumentation-bom-alpha</artifactId>
299 <version>2.7.0-alpha</version>
301 <scope>import</scope>
304 </dependencyManagement>
308 <groupId>org.springframework.boot</groupId>
309 <artifactId>spring-boot-maven-plugin</artifactId>
312 <groupId>org.apache.maven.plugins</groupId>
313 <artifactId>maven-surefire-plugin</artifactId>
314 <version>${surefire-maven-plugin.version}</version>
316 <skipTests>${allowskiptests}</skipTests>
320 <artifactId>maven-failsafe-plugin</artifactId>
323 <groupId>org.codehaus.mojo</groupId>
324 <artifactId>build-helper-maven-plugin</artifactId>
327 <id>add-additional-source-dirs</id>
328 <phase>generate-sources</phase>
330 <goal>add-source</goal>
334 <source>${project.build.directory}/generated-sources/annotations/</source>
335 <source>${project.basedir}/add-src/main/java</source>
336 <source>${project.basedir}/add-src/main/resources</source>
341 <id>add-additional-testsource-dirs</id>
342 <phase>generate-sources</phase>
344 <goal>add-test-source</goal>
348 <source>${project.basedir}/add-src/test/java</source>
349 <source>${project.basedir}/add-src/test/resources</source>
356 <groupId>org.jacoco</groupId>
357 <artifactId>jacoco-maven-plugin</artifactId>
358 <version>${jacoco-maven-plugin.version}</version>
361 <id>default-prepare-agent</id>
363 <goal>prepare-agent</goal>
367 <id>default-report</id>
368 <phase>prepare-package</phase>
376 <groupId>org.openapitools</groupId>
377 <artifactId>openapi-generator-maven-plugin</artifactId>
378 <version>7.7.0</version>
381 <id>generate-openapi-json</id>
382 <phase>prepare-package</phase>
384 <goal>generate</goal>
387 <inputSpec>${project.basedir}/api/pms-api.yaml</inputSpec>
388 <generatorName>openapi</generatorName>
389 <output>${project.basedir}/api</output>
391 <outputFileName>pms-api.json</outputFileName>
396 <id>generate-openapi-json-v3</id>
397 <phase>prepare-package</phase>
399 <goal>generate</goal>
402 <inputSpec>${project.basedir}/api/pms-api-v3.yaml</inputSpec>
403 <generatorName>openapi</generatorName>
404 <output>${project.basedir}/api</output>
406 <outputFileName>pms-api-v3.json</outputFileName>
411 <id>generate-openapi-json-config-a1pms</id>
412 <phase>prepare-package</phase>
414 <goal>generate</goal>
417 <inputSpec>${project.basedir}/api/pms-api-v3.yaml</inputSpec>
418 <generatorName>openapi</generatorName>
419 <apisToGenerate>A1PolicyManagement</apisToGenerate>
420 <output>${project.basedir}/api</output>
422 <outputFileName>a1pms-api-v3.json</outputFileName>
427 <id>generate-openapi-html</id>
428 <phase>prepare-package</phase>
430 <goal>generate</goal>
433 <inputSpec>${project.basedir}/api/pms-api.json</inputSpec>
434 <generatorName>html2</generatorName>
435 <output>${project.basedir}/api/pms-api</output>
436 <skipOperationExample>false</skipOperationExample>
437 <strictSpec>false</strictSpec>
439 <appDescription>The O-RAN Non-RT RIC A1 Policy Management Service
440 provides a REST API for managing O-RAN A1 Policies.</appDescription>
441 <appName>ONAP CCSDK A1 Policy Management Service</appName>
442 <infoUrl>https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16444961/O-RAN+A1+Policies+in+ONAP</infoUrl>
443 <licenseInfo>Copyright (C) 2020-2023 Nordix Foundation. Licensed
444 under the Apache License, and Copyright (C) 2024 OpenInfra
445 Foundation Europe. All rights reserved.</licenseInfo>
446 <licenseUrl>http://www.apache.org/licenses/LICENSE-2.0</licenseUrl>
451 <id>generate-openapi-html-v3</id>
452 <phase>prepare-package</phase>
454 <goal>generate</goal>
457 <inputSpec>${project.basedir}/api/pms-api-v3.json</inputSpec>
458 <generatorName>html2</generatorName>
459 <output>${project.basedir}/api/pms-api/v3</output>
460 <skipOperationExample>false</skipOperationExample>
461 <strictSpec>false</strictSpec>
463 <appDescription>The O-RAN Non-RT RIC A1 Policy Management Service
464 provides a REST API for managing O-RAN A1 Policies.</appDescription>
465 <appName>ONAP CCSDK A1 Policy Management Service</appName>
466 <infoUrl>https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16444961/O-RAN+A1+Policies+in+ONAP</infoUrl>
467 <licenseInfo>Copyright (C) 2024 OpenInfra
468 Foundation Europe. All rights reserved.</licenseInfo>
469 <licenseUrl>http://www.apache.org/licenses/LICENSE-2.0</licenseUrl>
474 <id>generate-openapi-html-config-a1pms</id>
475 <phase>prepare-package</phase>
477 <goal>generate</goal>
480 <inputSpec>${project.basedir}/api/pms-api-v3.json</inputSpec>
481 <generatorName>html2</generatorName>
482 <output>${project.basedir}/api/pms-api/v3/custom</output>
483 <skipOperationExample>false</skipOperationExample>
484 <strictSpec>false</strictSpec>
485 <apisToGenerate>A1PolicyManagement</apisToGenerate>
487 <appDescription>The O-RAN Non-RT RIC A1 Policy Management Service
488 provides a REST API for managing O-RAN A1 Policies.</appDescription>
489 <appName>ONAP CCSDK A1 Policy Management Service</appName>
490 <infoUrl>https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16444961/O-RAN+A1+Policies+in+ONAP</infoUrl>
491 <licenseInfo>Copyright (C) 2024 OpenInfra
492 Foundation Europe. All rights reserved.</licenseInfo>
493 <licenseUrl>http://www.apache.org/licenses/LICENSE-2.0</licenseUrl>
498 <id>generate-openapi-policy-api</id>
499 <phase>generate-sources </phase>
501 <goal>generate</goal>
504 <generatorName>spring</generatorName>
505 <inputSpec>${project.basedir}/api/pms-api.yaml</inputSpec>
506 <library>spring-boot</library>
507 <invokerPackage>org.onap.ccsdk.oran.a1policymanagementservice.controllers.v2</invokerPackage>
508 <apiPackage>org.onap.ccsdk.oran.a1policymanagementservice.controllers.api.v2</apiPackage>
509 <modelPackage>org.onap.ccsdk.oran.a1policymanagementservice.models.v2</modelPackage>
510 <generateApiTests>false</generateApiTests>
511 <generateModelTests>false</generateModelTests>
512 <generateSupportingFiles>false</generateSupportingFiles>
513 <skipValidateSpec>false</skipValidateSpec>
515 <interfaceOnly>true</interfaceOnly>
516 <useTags>true</useTags>
517 <reactive>true</reactive>
518 <dateLibrary>java8</dateLibrary>
520 <unhandledException>true</unhandledException>
521 <openApiNullable>false</openApiNullable>
522 <skipDefaultInterface>true</skipDefaultInterface>
527 <id>generate-policy-api-v3</id>
528 <phase>generate-sources </phase>
530 <goal>generate</goal>
533 <inputSpec>${project.basedir}/api/pms-api-v3.yaml</inputSpec>
534 <invokerPackage>org.onap.ccsdk.oran.a1policymanagementservice.controllers.v3</invokerPackage>
535 <apiPackage>org.onap.ccsdk.oran.a1policymanagementservice.controllers.api.v3</apiPackage>
536 <modelPackage>org.onap.ccsdk.oran.a1policymanagementservice.models.v3</modelPackage>
537 <generateApiTests>false</generateApiTests>
538 <generateModelTests>false</generateModelTests>
539 <generatorName>spring</generatorName>
540 <generateSupportingFiles>false</generateSupportingFiles>
541 <skipValidateSpec>false</skipValidateSpec>
542 <library>spring-boot</library>
544 <interfaceOnly>true</interfaceOnly>
545 <useTags>true</useTags>
546 <reactive>true</reactive>
547 <dateLibrary>java8</dateLibrary>
549 <unhandledException>true</unhandledException>
550 <openApiNullable>false</openApiNullable>
551 <skipDefaultInterface>true</skipDefaultInterface>
558 <artifactId>maven-resources-plugin</artifactId>
561 <id>copy-resource-configuration-files</id>
562 <phase>initialize</phase>
564 <goal>copy-resources</goal>
567 <overwrite>true</overwrite>
568 <verbose>true</verbose>
569 <outputDirectory>${project.basedir}/config</outputDirectory>
572 <directory>${project.basedir}/onap/oran/a1-policy-management/config</directory>
578 <id>copy-resource-openapi-files-fromsubmodule</id>
579 <phase>initialize</phase>
581 <goal>copy-resources</goal>
584 <verbose>true</verbose>
585 <overwrite>true</overwrite>
586 <outputDirectory>${project.basedir}/api</outputDirectory>
589 <directory>${project.basedir}/onap/oran/a1-policy-management/api</directory>
591 <include>pms-api.json</include>
592 <include>pms-api.yaml</include>
593 <include>pms-api-v3.json</include>
594 <include>pms-api-v3.yaml</include>
595 <include>a1pms-api-v3.json</include>
596 <include>api/pms-api/index.html</include>
597 <include>api/pms-api/v3/index.html</include>
598 <include>api/pms-api/v3/custom/index.html</include>
605 <id>copy-resource-doc-openapi</id>
606 <phase>package</phase>
608 <goal>copy-resources</goal>
611 <outputDirectory>${project.basedir}/docs/offeredapis/swagger</outputDirectory>
612 <overwrite>true</overwrite>
613 <verbose>true</verbose>
616 <directory>${project.basedir}/api</directory>
618 <include>pms-api.json</include>
619 <include>pms-api.yaml</include>
620 <include>pms-api-v3.json</include>
621 <include>pms-api-v3.yaml</include>
622 <include>a1pms-api-v3.json</include>
629 <id>copy-resource-openapi-html</id>
630 <phase>package</phase>
632 <goal>copy-resources</goal>
635 <verbose>true</verbose>
637 ${project.basedir}/docs/offeredapis/openapitoolgen/offeredapis/pms-api</outputDirectory>
640 <directory>${project.basedir}/api/pms-api</directory>
642 <include>pms-api.html</include>
643 <include>index.html</include>
644 <include>v3/index.html</include>
645 <include>v3/custom/index.html</include>
654 <groupId>io.fabric8</groupId>
655 <artifactId>docker-maven-plugin</artifactId>
656 <version>${docker-maven-plugin}</version>
657 <inherited>false</inherited>
660 <id>generate-a1policymanagementservice-image</id>
661 <phase>package</phase>
666 <pullRegistry>${env.CONTAINER_PULL_REGISTRY}</pullRegistry>
670 o-ran-sc/nonrtric-plt-a1policymanagementservice:${project.version}</name>
672 <cleanup>try</cleanup>
673 <contextDir>${basedir}</contextDir>
674 <dockerFile>Dockerfile</dockerFile>
675 <filter>false</filter>
677 <JAR>${project.build.finalName}.jar</JAR>
680 <tag>${project.version}</tag>
688 <id>push-a1policymanagementservice-image</id>
694 <pullRegistry>${env.CONTAINER_PULL_REGISTRY}</pullRegistry>
695 <pushRegistry>${env.CONTAINER_PUSH_REGISTRY}</pushRegistry>
699 o-ran-sc/nonrtric-plt-a1policymanagementservice:${project.version}</name>
701 <contextDir>${basedir}</contextDir>
702 <dockerFile>Dockerfile</dockerFile>
703 <filter>false</filter>
705 <JAR>${project.build.finalName}.jar</JAR>
708 <tag>${project.version}</tag>
718 <!-- support sonar in multi-module project -->
720 <groupId>org.sonarsource.scanner.maven</groupId>
721 <artifactId>sonar-maven-plugin</artifactId>
722 <version>${sonar-maven-plugin.version}</version>
725 <groupId>org.codehaus.mojo</groupId>
726 <artifactId>exec-maven-plugin</artifactId>
727 <version>${exec-maven-plugin.version}</version>
730 <id>git submodule update</id>
731 <phase>validate</phase>
733 <executable>git</executable>
735 <argument>submodule</argument>
736 <argument>update</argument>
737 <argument>--init</argument>
738 <argument>--recursive</argument>
750 <system>JIRA</system>
751 <url>https://jira.o-ran-sc.org/</url>
756 <groupId>org.apache.maven.plugins</groupId>
757 <artifactId>maven-surefire-report-plugin</artifactId>
758 <version>${surefire-report-plugin.version}</version>