You have to use com.github.maven-nar plugin for building the CPP application.
If you have multiple modules in CPP application ,you can define the parent pom. Define the group-id in the module tag of the parent pom.
-----------------------------------------------------------------------------------------------------
<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>com.amdocs.amcApiPar</groupId>
<artifactId>amcApiPar</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>amcApiParent</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<modules>
<module>com</module>
<module>mro</module>
<module>test</module>
<module>multiThreadTest</module>
<module>dm</module>
</modules>
</project>
If you want to create .so file then you have to define the library type as shared.
------------------------------------------------------------------------------------------------
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.amdocs.amcApiPar</groupId>
<artifactId>amcApiPar</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>com</groupId>
<artifactId>com</artifactId>
<packaging>nar</packaging>
<version>main</version>
<properties>
<skipTests>true</skipTests>
<base.dir>${env.HOME}/workspace/AMC_Build</base.dir>
<srcDir>${base.dir}/${env.BUILD_VERSION}/amcapi</srcDir>
<buildDir>${base.dir}/proj</buildDir>
<configDir>${buildDir}/amc_config</configDir>
<mopinftlDir>${buildDir}/mopinftl</mopinftlDir>
<proj.varient>V64</proj.varient>
<amcgdd.dir>${srcDir}/gdd</amcgdd.dir>
<ginftl.dir>${buildDir}/ginftl${env.BUILD_VERSION}${proj.varient}</ginftl.dir>
<infgn.dir>${srcDir}/infgn</infgn.dir>
<include.xerces-c2>${env.XERCES_HOME}/include</include.xerces-c2>
<usr>/usr</usr>
<lib.openssl>${env.OPENSSL_HOME}/lib</lib.openssl>
<lib.ace>${env.ACE_HOME}/lib</lib.ace>
<lib.local64>/usr/local64/lib</lib.local64>
<gamc.dir>${buildDir}/gamc${env.BUILD_VERSION}${proj.varient}</gamc.dir>
<lib.local>/usr/local/lib</lib.local>
<lib.usr>/usr/lib64</lib.usr>
<lib.xerces-c2>${env.XERCES_HOME}/lib</lib.xerces-c2>
<lib.xerces-c>xerces-c</lib.xerces-c>
<include.ace>${env.ACE_HOME}</include.ace>
<include.local64>/usr/local64/include</include.local64>
<include.openssl>${env.OPENSSL_HOME}/include</include.openssl>
</properties>
<build>
<defaultGoal>install</defaultGoal>
<plugins>
<plugin>
<groupId>com.github.maven-nar</groupId>
<artifactId>nar-maven-plugin</artifactId>
<version>3.1.0</version>
<extensions>true</extensions>
<configuration>
<layout>NarLayout20</layout>
<linker> <!-- Linkers-->
<name>icpc</name>
<options>
<option>-L${lib.openssl}</option>
<option>-L${lib.ace}</option>
<option>-L${lib.local64}</option>
<option>-L${gamc.dir}/lib</option>
<option>-L${lib.local}</option>
<option>-L${lib.usr}</option>
<option>-L${lib.xerces-c2}</option>
<option>-l${lib.xerces-c}</option>
</options>
</linker>
<cpp>
<name>icpc</name>
<sourceDirectory>${srcDir}</sourceDirectory>
<includes>
<include>**/mro/src/AMC_MroMainFunc.cpp</include>
<include>**/mro/src/AmcApis.cpp</include>
<include>**/log/src/*.cpp</include>
<include>**/com/src/*.cpp</include>
</includes>
<includePaths>
<!-- <includePath>${srcDir}/log/inc</includePath>
<includePath>${srcDir}/mro/inc</includePath>
<includePath>${srcDir}/com/inc</includePath>
<includePath>${srcDir}/shr</includePath>
<includePath>${srcDir}/pub</includePath>
<includePath>${configDir}/v${env.BUILD_VERSION}/pub</includePath>
<includePath>${mopinftlDir}/v${env.BUILD_VERSION}/pub</includePath>
<includePath>${buildDir}/gamc${env.BUILD_VERSION}${proj.varient}/cnt</includePath>
<includePath>${buildDir}/gamc${env.BUILD_VERSION}/amcapi</includePath>-->
<!--<includePath>${amcgdd.dir}</includePath>
<includePath>${amcgdd.dir}/cnt</includePath>
<includePath>${ginftl.dir}/cnt</includePath>
<includePath>${infgn.dir}</includePath>
<includePath>${include.xerces-c2}</includePath>
<includePath>${usr}</includePath>
<includePath>${usr}/include</includePath>
<includePath>/usr/lib/x86_64-redhat-linux5E/include</includePath>-->
<includePath>${srcDir}/com/inc</includePath>
<includePath>/devuser/mnc/mnc/bismayam/workspace/AMC_Build/main/amcapi/shr</includePath>
<includePath>/devuser/mnc/mnc/bismayam/workspace/AMC_Build/main/amcapi/pub</includePath>
<includePath>/devuser/mnc/mnc/bismayam/workspace/AMC_Build/main/amcapi/gdd</includePath>
<includePath>/devuser/mnc/mnc/bismayam/workspace/AMC_Build/main/amcapi/infgn</includePath>
<includePath>/devuser/mnc/mnc/bismayam/workspace/AMC_Build/main/amcapi/log/inc</includePath>
<includePath>/devuser/mnc/mnc/bismayam/workspace/AMC_Build/main/amcapi/mro/inc</includePath>
<includePath>${include.xerces-c2}</includePath>
<includePath>/usr/include</includePath>
<includePath>${include.ace}</includePath>
<includePath>/usr/lib/x86_64-redhat-linux5E/include</includePath>
<!--<includePath>${include.local64}</includePath>
<includePath>${include.openssl}</includePath>-->
</includePaths>
<!--Compiler args -->
<options>
<option>-c</option>
<option>-g</option>
<option>-DNO_LIANT</option>
<option>-DUNIX</option>
<option>-DXERCES_2</option>
<option>-D_USE_GMP</option>
<option>-pthread</option>
<option>-D__linux</option>
<option>-fPIC</option>
<option>-ansi</option>
<option>-D__ACE_INLINE__</option>
<option>-DAMC_COMP</option>
<option>-D__linux_</option>
<option>-D__osf__</option>
<option>-D__linux__</option>
</options>
<clearDefaultOptions/>
<compileOrder/>
</cpp>
<libraries>
<library>
<type>shared</type>
</library>
</libraries>
</configuration>
</plugin>
<plugin>
<groupId>com.coderplus.maven.plugins</groupId>
<artifactId>copy-rename-maven-plugin</artifactId>
<version>1.0.1</version>
<executions>
<execution>
<id>rename-file</id>
<phase>install</phase>
<goals>
<goal>rename</goal>
</goals>
<configuration>
<sourceFile>/devuser/mnc/mnc/bismayam/workspace/AMC_Build/main/amcapi/com/target/nar/lib/amd64-Linux-icpc/shared/libcom-main.so</sourceFile>
<destinationFile>/devuser/mnc/mnc/bismayam/workspace/AMC_Build/main/amcapi/com/target/libamcapi.so</destinationFile>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
If you want to create executable then define the library as executable.
-------------------------------------------------------------------------------------
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.amdocs.amcApiPar</groupId>
<artifactId>amcApiPar</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>mro</groupId>
<artifactId>amc_mro</artifactId>
<packaging>nar</packaging>
<version>main</version>
<properties>
<skipTests>true</skipTests>
<base.dir>${env.HOME}/workspace/AMC_Build</base.dir>
<srcDir>${base.dir}/${env.BUILD_VERSION}/amcapi</srcDir>
<buildDir>${base.dir}/proj</buildDir>
<configDir>${buildDir}/amc_config</configDir>
<mopinftlDir>${buildDir}/mopinftl</mopinftlDir>
<proj.varient>V64</proj.varient>
<amcgdd.dir>${srcDir}/gdd</amcgdd.dir>
<ginftl.dir>${buildDir}/ginftl${env.BUILD_VERSION}${proj.varient}</ginftl.dir>
<infgn.dir>${srcDir}/infgn</infgn.dir>
<include.xerces-c2>${env.XERCES_HOME}/include</include.xerces-c2>
<usr>/usr</usr>
<lib.openssl>${env.OPENSSL_HOME}/lib</lib.openssl>
<lib.ace>${env.ACE_HOME}/lib</lib.ace>
<lib.local64>/usr/local64/lib</lib.local64>
<gamc.dir>${buildDir}/gamc${env.BUILD_VERSION}${proj.varient}</gamc.dir>
<lib.local>/usr/local/lib</lib.local>
<lib.usr>/usr/lib64</lib.usr>
<lib.xerces-c2>${env.XERCES_HOME}/lib</lib.xerces-c2>
<lib.xerces-c>xerces-c</lib.xerces-c>
<include.ace>${env.ACE_HOME}</include.ace>
<include.local64>/usr/local64/include</include.local64>
<include.openssl>${env.OPENSSL_HOME}/include</include.openssl>
<lib.amcapi>/devuser/mnc/mnc/bismayam/workspace/AMC_Build/main/amcapi/com/target</lib.amcapi>
</properties>
<build>
<defaultGoal>install</defaultGoal>
<plugins>
<plugin>
<groupId>com.github.maven-nar</groupId>
<artifactId>nar-maven-plugin</artifactId>
<version>3.1.0</version>
<extensions>true</extensions>
<configuration>
<layout>NarLayout20</layout>
<linker>
<name>icpc</name>
<options>
<option>-L${lib.openssl}</option>
<option>-L${lib.ace}</option>
<option>-L${lib.local64}</option>
<option>-L${gamc.dir}/lib</option>
<option>-L${lib.local}</option>
<option>-L${lib.usr}</option>
<option>-L${lib.xerces-c2}</option>
<option>-L${lib.amcapi}</option>
<option>-l${lib.xerces-c}</option>
<option>-lamcapi</option>
<option>-lssl</option>
<option>-lcrypto</option>
</options>
</linker>
<cpp>
<name>icpc</name>
<sourceDirectory>${srcDir}</sourceDirectory>
<includes>
<include>**/log/src/amc1_Logger.cpp</include>
<include>**/mro/src/*.cpp</include>
</includes>
<excludes>
<exclude>**/mro/src/AMC_MroMainFunc.cpp</exclude>
<exclude>**/mro/src/AmcApis.cpp</exclude>
</excludes>
<includePaths>
<includePath>/devuser/mnc/mnc/bismayam/workspace/AMC_Build/main/amcapi/log/inc</includePath>
<includePath>/devuser/mnc/mnc/bismayam/workspace/AMC_Build/main/amcapi/mro/inc</includePath>
<includePath>/devuser/mnc/mnc/bismayam/workspace/AMC_Build/main/amcapi/dm/inc</includePath>
<includePath>/devuser/mnc/mnc/bismayam/workspace/AMC_Build/main/amcapi/com/inc</includePath>
<includePath>/devuser/mnc/mnc/bismayam/workspace/AMC_Build/main/amcapi/shr</includePath>
<includePath>/devuser/mnc/mnc/bismayam/workspace/AMC_Build/main/amcapi/pub</includePath>
<includePath>/devuser/mnc/mnc/bismayam/workspace/AMC_Build/main/amcapi/gdd</includePath>
<includePath>/devuser/mnc/mnc/bismayam/workspace/AMC_Build/main/amcapi/infgn</includePath>
<includePath>${include.xerces-c2}</includePath>
<includePath>/usr/include</includePath>
<includePath>${include.ace}</includePath>
<includePath>/usr/lib/x86_64-redhat-linux5E/include</includePath>
</includePaths>
<!--Compiler args -->
<options>
<option>-c</option>
<option>-g</option>
<option>-DNO_LIANT</option>
<option>-DUNIX</option>
<option>-DXERCES_2</option>
<option>-D_USE_GMP</option>
<option>-pthread</option>
<option>-D__linux</option>
<option>-fPIC</option>
<option>-ansi</option>
<option>-D__ACE_INLINE__</option>
<option>-DAMC_COMP</option>
<option>-D__linux_</option>
<option>-D__osf__</option>
<option>-D__linux__</option>
<option>-D_REENTRANT</option>
</options>
</cpp>
<libraries>
<library>
<type>executable</type>
</library>
</libraries>
</configuration>
</plugin>
<plugin>
<groupId>com.coderplus.maven.plugins</groupId>
<artifactId>copy-rename-maven-plugin</artifactId>
<version>1.0.1</version>
<executions>
<execution>
<id>rename-file</id>
<phase>install</phase>
<goals>
<goal>rename</goal>
</goals>
<configuration>
<sourceFile>/devuser/mnc/mnc/bismayam/workspace/AMC_Build/main/amcapi/mro/target/nar/bin/amd64-Linux-icpc/amc_mro</sourceFile>
<destinationFile>/devuser/mnc/mnc/bismayam/workspace/AMC_Build/main/amcapi/mro/target/amc_mro</destinationFile>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
To copy the resources .
-----------------------------
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<executions>
<execution>
<id>copy-mro-src</id>
<phase>process-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${bin.dir}</outputDirectory>
<resources>
<resource>
<directory>${src.dir}/mro/src</directory>
<includes>
<include>*.ksh</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
<execution>
<id>copy-amccore-pi</id>
<phase>process-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${bin.dir}</outputDirectory>
<resources>
<resource>
<directory>${base.dir}/${env.BUILD_VERSION}/amccore/pi/src</directory>
<includes>
<include>/*.sql</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</plugin>
Thank You.