<?xml version="1.0" encoding="UTF-8"?> <!-- ============LICENSE_START======================================================= ONAP CLAMP ================================================================================ Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. ================================================================================ 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. ============LICENSE_END============================================ =================================================================== ECOMP is a trademark and service mark of AT&T Intellectual Property. --> <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> <groupId>org.onap.clamp</groupId> <artifactId>clds</artifactId> <version>2.0.0-SNAPSHOT</version> <name>clamp</name> <parent> <groupId>org.onap.oparent</groupId> <artifactId>oparent</artifactId> <version>1.1.0-SNAPSHOT</version> </parent> <description> This project build the ONAP CLAMP JAR that contains CLAMP back-end code and its UI part. By Default "mvn clean install" command will execute also the unit tests and the integration tests. The integration tests require a docker engine running. If you want to skip the intergation test you can by doing: "mvn clean install -DskipITs=true" For Spring it's possible to specify the application.properties location "mvn clean install -Dspring.config.location=classpath:application-test.properties" The application.properties contains the location of the CLAMP parameters files: - org.onap.clamp.config.files.cldsReference=classpath:/clds/clds-reference.properties - org.onap.clamp.config.files.cldsPolicyConfig=classpath:/clds/clds-policy-config.properties - org.onap.clamp.config.files.cldsUsers=classpath:/clds/clds-users.json - org.onap.clamp.config.files.globalClds=classpath:/clds/globalClds.properties </description> <properties> <maven.build.timestamp.format>yyyy.MM.dd'T'hh.mm.ss'Z'</maven.build.timestamp.format> <clamp.project.version>${project.version}</clamp.project.version> <clamp.build.timestamp>${maven.build.timestamp}</clamp.build.timestamp> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <docker.mariadb.port.host>3306</docker.mariadb.port.host> <docker.http-cache.port.host>2080</docker.http-cache.port.host> <project.scm.id>git-server</project.scm.id> <java.version>1.8</java.version> <eelf.core.version>1.0.0</eelf.core.version> <camel.version>2.20.1</camel.version> <springboot.version>1.5.10.RELEASE</springboot.version> <sonar.language>java</sonar.language> <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin> <sonar.surefire.reportsPath>${project.build.directory}/surefire-reports</sonar.surefire.reportsPath> <sonar.jacoco.reportPath>${project.build.directory}/coverage-reports/jacoco.exec</sonar.jacoco.reportPath> <sonar.jacoco.itReportPath>${project.build.directory}/coverage-reports/jacoco-it.exec</sonar.jacoco.itReportPath> <sonar.jacoco.reportMissing.force.zero>true</sonar.jacoco.reportMissing.force.zero> <sonar.projectVersion>${project.version}</sonar.projectVersion> <docker.push.registry>localhost:5000</docker.push.registry> <skip.docker.build>true</skip.docker.build> <skip.docker.push>true</skip.docker.push> <skip.staging.artifacts>false</skip.staging.artifacts> <http.proxy></http.proxy> </properties> <distributionManagement> <repository> <id>ecomp-releases</id> <name>Clamp Release Repository</name> <url>https://nexus.onap.org/content/repositories/releases/</url> </repository> <snapshotRepository> <id>ecomp-snapshots</id> <name>Clamp Snapshot Repository</name> <url>https://nexus.onap.org/content/repositories/snapshots/</url> </snapshotRepository> <site> <id>ecomp-site</id> <url>dav:https://nexus.onap.org/content/sites/site/org/onap/clamp/${project.version}</url> </site> </distributionManagement> <repositories> <repository> <id>central</id> <name>Maven 2 repository 2</name> <url>http://repo2.maven.org/maven2/</url> </repository> <repository> <id>ecomp-releases</id> <name>ONAP Release Repository</name> <url>https://nexus.onap.org/content/repositories/releases/</url> </repository> <repository> <id>ecomp-staging</id> <name>ONAP Staging Repository</name> <url>https://nexus.onap.org/content/repositories/staging/</url> </repository> <repository> <id>ecomp-snapshots</id> <name>ONAP Snapshot Repository</name> <url>https://nexus.onap.org/content/repositories/snapshots/</url> <snapshots> <enabled>true</enabled> </snapshots> <releases> <enabled>false</enabled> </releases> </repository> <repository> <id>spring-repo</id> <name>Spring repo</name> <url>https://artifacts.alfresco.com/nexus/content/repositories/public/</url> </repository> <repository> <id>repository.jboss.org-public</id> <name>JBoss.org Maven repository</name> <url>https://repository.jboss.org/nexus/content/groups/public</url> </repository> </repositories> <dependencyManagement> <dependencies> <!-- Spring Boot BOM --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${springboot.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!-- Camel BOM --> <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-spring-boot-dependencies</artifactId> <version>${camel.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>com.att.eelf</groupId> <artifactId>eelf-core</artifactId> <version>${eelf.core.version}</version> </dependency> <!-- For CAMEL --> <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-jaxb-starter</artifactId> </dependency> <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-servlet-starter</artifactId> </dependency> <!-- Spring famework --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </dependency> <dependency> <groupId>com.paypal.springboot</groupId> <artifactId>resteasy-spring-boot-starter</artifactId> <version>2.3.4-RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>com.vaadin.external.google</groupId> <artifactId>android-json</artifactId> </exclusion> </exclusions> </dependency> <!-- Others dependencies --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.2.3</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.6</version> </dependency> <dependency> <groupId>com.googlecode.json-simple</groupId> <artifactId>json-simple</artifactId> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-vfs2</artifactId> <version>2.0</version> </dependency> <dependency> <groupId>joda-time</groupId> <artifactId>joda-time</artifactId> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </dependency> <dependency> <groupId>javax.ws.rs</groupId> <artifactId>javax.ws.rs-api</artifactId> <version>2.0</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency> <dependency> <groupId>javax.transaction</groupId> <artifactId>jta</artifactId> <version>1.1</version> </dependency> <dependency> <groupId>javax.persistence</groupId> <artifactId>persistence-api</artifactId> <version>1.0.2</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-annotations</artifactId> <version>3.5.6-Final</version> </dependency> <!-- <dependency> --> <!-- <groupId>org.apache.geronimo.specs</groupId> --> <!-- <artifactId>geronimo-jpa_2.0_spec</artifactId> --> <!-- <version>1.1</version> --> <!-- </dependency> --> <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> </dependency> <dependency> <groupId>org.onap.policy.engine</groupId> <artifactId>PolicyEngineAPI</artifactId> <version>1.1.0</version> <exclusions> <exclusion> <artifactId>log4j</artifactId> <groupId>log4j</groupId> </exclusion> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> <exclusion> <artifactId>apache-log4j-extras</artifactId> <groupId>log4j</groupId> </exclusion> <exclusion> <artifactId>jackson-databind</artifactId> <groupId>com.fasterxml.jackson.core</groupId> </exclusion> <exclusion> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </exclusion> <exclusion> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.onap.policy.common</groupId> <artifactId>ONAP-Logging</artifactId> <version>1.1.0</version> <exclusions> <exclusion> <artifactId>log4j</artifactId> <groupId>log4j</groupId> </exclusion> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> <exclusion> <artifactId>apache-log4j-extras</artifactId> <groupId>log4j</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.onap.policy.engine</groupId> <artifactId>PolicyEngineUtils</artifactId> <version>1.1.0</version> <exclusions> <exclusion> <artifactId>log4j</artifactId> <groupId>log4j</groupId> </exclusion> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> <exclusion> <artifactId>apache-log4j-extras</artifactId> <groupId>log4j</groupId> </exclusion> <exclusion> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </exclusion> <exclusion> <groupId>org.mariadb.jdbc</groupId> <artifactId>mariadb-java-client</artifactId> </exclusion> <exclusion> <groupId>com.att.nsa</groupId> <artifactId>dmaapClient</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.onap.policy.drools-applications</groupId> <artifactId>policy-yaml</artifactId> <version>1.1.0</version> <exclusions> <exclusion> <artifactId>log4j</artifactId> <groupId>log4j</groupId> </exclusion> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> <exclusion> <artifactId>apache-log4j-extras</artifactId> <groupId>log4j</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.onap.policy.drools-applications</groupId> <artifactId>sdc</artifactId> <version>1.1.0</version> <exclusions> <exclusion> <artifactId>log4j</artifactId> <groupId>log4j</groupId> </exclusion> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> <exclusion> <artifactId>apache-log4j-extras</artifactId> <groupId>log4j</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.onap.policy.drools-applications</groupId> <artifactId>aai</artifactId> <version>1.1.0</version> <exclusions> <exclusion> <artifactId>log4j</artifactId> <groupId>log4j</groupId> </exclusion> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> <exclusion> <artifactId>apache-log4j-extras</artifactId> <groupId>log4j</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency> <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-yaml</artifactId> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-csv</artifactId> <version>1.3</version> </dependency> <dependency> <groupId>com.sun.faces</groupId> <artifactId>jsf-api</artifactId> <version>2.1.7</version> </dependency> <dependency> <groupId>com.sun.faces</groupId> <artifactId>jsf-impl</artifactId> <version>2.1.7</version> </dependency> <!-- Remove the MYSQL connector and replace it by Mariadb --> <dependency> <groupId>org.mariadb.jdbc</groupId> <artifactId>mariadb-java-client</artifactId> <version>2.2.1</version> </dependency> </dependencies> <build> <finalName>clamp</finalName> <testResources> <testResource> <directory>src/test/resources</directory> <excludes> <exclude>**/*.jks</exclude> </excludes> <filtering>true</filtering> </testResource> <testResource> <directory>src/test/resources/https</directory> <includes> <include>**.jks</include> </includes> <filtering>false</filtering> <targetPath>https</targetPath> </testResource> </testResources> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> <resource> <directory>src/main/docker</directory> <includes> <include>**/*</include> </includes> <filtering>true</filtering> </resource> </resources> <plugins> <plugin> <groupId>org.codehaus.groovy.maven</groupId> <artifactId>gmaven-plugin</artifactId> <version>1.0</version> <executions> <execution> <phase>validate</phase> <goals> <goal>execute</goal> </goals> <configuration> <source>${project.basedir}/src/main/script/TagVersion.groovy</source> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.0.2</version> <executions> <execution> <id>jar-with-only-classes</id> <phase>package</phase> <goals> <goal>jar</goal> </goals> <configuration> <classifier>classes</classifier> <includes> <include>org/**</include> </includes> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>3.0.0</version> <executions> <execution> <goals> <goal>attach-artifact</goal> </goals> <phase>package</phase> <configuration> <artifacts> <artifact> <file>${project.build.directory}/clamp-classes.jar</file> <type>jar</type> <classifier>classes</classifier> </artifact> </artifacts> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${springboot.version}</version> <executions> <execution> <goals> <goal>repackage</goal> </goals> <phase>package</phase> </execution> </executions> </plugin> <plugin> <groupId>org.sonatype.plugins</groupId> <artifactId>nexus-staging-maven-plugin</artifactId> <version>1.6.7</version> <extensions>true</extensions> <configuration> <nexusUrl>https://nexus.onap.org</nexusUrl> <stagingProfileId>176c31dfe190a</stagingProfileId> <serverId>ecomp-staging</serverId> <skipNexusStagingDeployMojo>${skip.staging.artifacts}</skipNexusStagingDeployMojo> </configuration> </plugin> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.0.0</version> <configuration> <imageName>onap/clamp</imageName> <dockerDirectory>src/main/docker</dockerDirectory> <serverId>docker-hub</serverId> <imageTags> <imageTag>latest</imageTag> <imageTag>${project.docker.latesttagtimestamp.version}</imageTag> <imageTag>${project.docker.latesttag.version}</imageTag> </imageTags> <forceTags>true</forceTags> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>etc/config/**</include> </resource> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>etc/keystore/**</include> </resource> </resources> </configuration> <executions> <execution> <id>build-image</id> <phase>package</phase> <goals> <goal>build</goal> </goals> <configuration> <skipDockerBuild>${skip.docker.build}</skipDockerBuild> <buildArgs> <http_proxy>${env.HTTP_PROXY}</http_proxy> <https_proxy>${env.HTTPS_PROXY}</https_proxy> </buildArgs> </configuration> </execution> <execution> <id>tag-image-latest-timestamp</id> <phase>package</phase> <goals> <goal>tag</goal> </goals> <configuration> <image>onap/clamp</image> <newName>${docker.push.registry}/onap/clamp:${project.docker.latesttagtimestamp.version}</newName> <skipDockerTag>${skip.docker.push}</skipDockerTag> </configuration> </execution> <execution> <id>push-image-latest-timestamp</id> <phase>deploy</phase> <goals> <goal>push</goal> </goals> <configuration> <imageName>${docker.push.registry}/onap/clamp:${project.docker.latesttagtimestamp.version}</imageName> <skipDockerPush>${skip.docker.push}</skipDockerPush> </configuration> </execution> <execution> <id>tag-image-latest</id> <phase>package</phase> <goals> <goal>tag</goal> </goals> <configuration> <image>onap/clamp</image> <newName>${docker.push.registry}/onap/clamp:${project.docker.latesttag.version}</newName> <skipDockerTag>${skip.docker.push}</skipDockerTag> </configuration> </execution> <execution> <id>push-image-latest</id> <phase>deploy</phase> <goals> <goal>push</goal> </goals> <configuration> <imageName>${docker.push.registry}/onap/clamp:${project.docker.latesttag.version}</imageName> <skipDockerPush>${skip.docker.push}</skipDockerPush> </configuration> </execution> <execution> <id>tag-image</id> <phase>package</phase> <goals> <goal>tag</goal> </goals> <configuration> <image>onap/clamp</image> <newName>${docker.push.registry}/onap/clamp:latest</newName> <skipDockerTag>${skip.docker.push}</skipDockerTag> </configuration> </execution> <execution> <id>push-image</id> <phase>deploy</phase> <goals> <goal>push</goal> </goals> <configuration> <imageName>${docker.push.registry}/onap/clamp:latest</imageName> <skipDockerPush>${skip.docker.push}</skipDockerPush> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.19.1</version> <configuration> <forkCount>1</forkCount> <reuseForks>false</reuseForks> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-failsafe-plugin</artifactId> <version>2.16</version> <executions> <execution> <id>integration-tests</id> <goals> <goal>integration-test</goal> <goal>verify</goal> </goals> <configuration> <includes> <include>**/*ItCase.java</include> </includes> <forkCount>1</forkCount> <reuseForks>false</reuseForks> </configuration> </execution> </executions> </plugin> <plugin> <groupId>io.fabric8</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.16.5</version> <configuration> <verbose>true</verbose> <apiVersion>1.23</apiVersion> <images> <image> <name>mariadb:10.1.11</name> <alias>mariadb</alias> <run> <env> <MYSQL_ROOT_PASSWORD>strong_pitchou</MYSQL_ROOT_PASSWORD> </env> <hostname>mariadb</hostname> <volumes> <bind> <volume>${project.basedir}/extra/sql/:/docker-entrypoint-initdb.d</volume> <volume>${project.basedir}/extra/docker/mariadb/conf1:/etc/mysql/conf.d</volume> </bind> </volumes> <wait> <log>socket: '/var/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution</log> <time>600000</time> </wait> <ports> <port>${docker.mariadb.port.host}:3306</port> </ports> </run> </image> <image> <name>python:2</name> <alias>python</alias> <run> <hostname>python</hostname> <volumes> <bind> <volume>${project.basedir}/src/test/resources/http-cache/:/usr/src/http-cache-app</volume> <volume>${project.basedir}/src/test/resources/http-cache/sdc-example/:/usr/src/http-cache-app/data-cache</volume> </bind> </volumes> <wait> <tcp> <ports> <port>8080</port> </ports> <mode>direct</mode> </tcp> <time>120000</time> </wait> <ports> <port>${docker.http-cache.port.host}:8080</port> </ports> <workingDir>/usr/src/http-cache-app</workingDir> <cmd> <shell>./start_http_cache.sh ${http.proxy}</shell> </cmd> </run> </image> </images> <skip>${skipITs}</skip> </configuration> <executions> <execution> <id>docker-start-for-it</id> <phase>pre-integration-test</phase> <goals> <goal>start</goal> </goals> <configuration> <skip>${skipITs}</skip> </configuration> </execution> <execution> <id>docker-stop-for-it</id> <phase>post-integration-test</phase> <goals> <goal>stop</goal> </goals> <configuration> <skip>${skipITs}</skip> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.7.7.201606060606</version> <configuration> <dumpOnExit>true</dumpOnExit> <includes> <include>org.onap.clamp.*</include> </includes> </configuration> <executions> <execution> <id>pre-unit-test</id> <goals> <goal>prepare-agent</goal> </goals> <configuration> <destFile>${project.build.directory}/coverage-reports/jacoco.exec</destFile> <!-- <append>true</append> --> </configuration> </execution> <execution> <id>pre-integration-test</id> <phase>pre-integration-test</phase> <goals> <goal>prepare-agent</goal> </goals> <configuration> <destFile>${project.build.directory}/coverage-reports/jacoco-it.exec</destFile> <!-- <append>true</append> --> </configuration> </execution> <execution> <goals> <goal>merge</goal> </goals> <phase>post-integration-test</phase> <configuration> <fileSets> <fileSet implementation="org.apache.maven.shared.model.fileset.FileSet"> <directory>${project.build.directory}/coverage-reports</directory> <includes> <include>*.exec</include> </includes> </fileSet> </fileSets> <destFile>${project.build.directory}/jacoco-dev.exec</destFile> </configuration> </execution> </executions> </plugin> <!-- This plugin will be useful when we will have multi-modules project --> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>versions-maven-plugin</artifactId> <version>1.3.1</version> </plugin> </plugins> </build> <profiles> <profile> <id>docker</id> <properties> <skip.staging.artifacts>true</skip.staging.artifacts> <skip.docker.build>false</skip.docker.build> <skip.docker.tag>false</skip.docker.tag> <skip.docker.push>false</skip.docker.push> </properties> </profile> </profiles> </project>