<?xml version="1.0" encoding="UTF-8"?>
<!--
  ============LICENSE_START=======================================================
   Modifications Copyright (C) 2019 Nordix Foundation.
  ================================================================================
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.

  SPDX-License-Identifier: Apache-2.0
  ============LICENSE_END=========================================================
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<repositories>
    		<repository>
      			<id>onap-releases</id>
          		<name>onap-releases</name>
          		<url>https://nexus.onap.org/content/repositories/releases/</url>
    		</repository>
  	</repositories>

	<parent>
		<groupId>org.onap.ccsdk.parent</groupId>
		<artifactId>odlparent-lite</artifactId>
		<version>1.4.3</version>
		<relativePath/>
	</parent>

	<groupId>org.onap.sdnc.northbound</groupId>
	<artifactId>sdnc-northbound</artifactId>
	<version>1.7.3-SNAPSHOT</version>
	<packaging>pom</packaging>

	<name>sdnc-northbound</name>
	<description>The SDN-C Northbound APIs repo contains code for northbound API adaptors, typically MD-SAL applications</description>
	<url>https://wiki.onap.org</url>
	<organization>
		<name>ONAP</name>
	</organization>

	<modules>
		<module>features</module>
		<module>nonrt-ric-api</module>
	</modules>

	<scm>
		<connection>scm:git:ssh://git@${onap.git.host}/sdnc-northbound.git</connection>

		<developerConnection>scm:git:ssh://${onap.git.host}:${onap.git.port}/${onap.git.project}/sdnc-northbound.git</developerConnection>
		<url>${onap.git.protocol}://${onap.git.host}/projects/${onap.git.project}/repos/sdnc-northbound/browse</url>
	</scm>
	<issueManagement>
		<system>JIRA</system>
		<url>https://jira.onap.org/</url>
	</issueManagement>
	<ciManagement>
		<system>Jenkins</system>
		<url>https://jenkins.onap.org/</url>
	</ciManagement>
	<distributionManagement>
		<site>
			<id>sdnc-javadoc</id>
			<url>dav:https://${onap.nexus.host}:${onap.nexus.port}/repository/sdn-c-javadoc/${project.artifactId}/${project.version}</url>
		</site>
	</distributionManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>2.17</version>
				<configuration>
					<skipTests>false</skipTests>
				</configuration>
			</plugin>
		</plugins>
	</build>

	<profiles>
		<profile>
			<id>blackduck</id>
			<activation>
				<property>
					<name>blackduck-scan</name>
				</property>
			</activation>
			<build>
					<plugins>
						<plugin>
							<groupId>com.blackducksoftware.integration</groupId>
							<artifactId>hub-maven-plugin</artifactId>
							<version>1.4.0</version>
							<inherited>false</inherited>
							<configuration>
								<hubProjectName>${project.name}</hubProjectName>
								<outputDirectory>${project.basedir}</outputDirectory>
							</configuration>
							<executions>
								<execution>
									<id>create-bdio-file</id>
									<phase>package</phase>
									<goals>
										<goal>createHubOutput</goal>
									</goals>
								</execution>
							</executions>
						</plugin>
					</plugins>


			</build>

		</profile>

	</profiles>
</project>
