 
    
  
                
                    
    
        The example uses javah to generate native header files which are then be part of the native build to create a Windows DLL
Note:
<project>
   ...
   <packaging>dll</packaging>
   
   <dependencies>
     <dependency>
       your jar which has jni interface.
     </dependency>
     <dependency>
       other native library ( .lib, .so, .a, .o, etc)
       to be linked in.
     </dependency>
     ...
   </dependencies>
   
   ...
   <build>   
     <plugins>
       <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>native-maven-plugin</artifactId>
         <extensions>true</extensions>
         <configuration>
           <!-- trigger javah execution -->         
           <javahClassNames>
             <javahClassName>class1</javahClassName>
             <javahClassName>class2</javahClassName>              
             <javahClassName>...</javahClassName>
           </javahClassNames>
           <!-- enable additional javah interface in dependencies list -->
           <javahSearchJNIFromDependencies>true</javahSearchJNIFromDependencies>
           <!-- 
            | Add jdk include directories to system include path
            | Override ${jkdIncludePath} If your jdk does not conform to Sun JDK layout
            -->
           <javahOS>win32</javahOS>
           <!-- setup compiler and linker environment according to msvc 6 vcvars32.bat -->
           <!-- without this setting, you will need to setup the environment outside   -->
           <!-- of Maven                                                               -->
           <envFactoryName>org.codehaus.mojo.natives.msvc.MSVC6EnvFactory</envFactoryName>
         
           <compilerProvider>msvc</compilerProvider>
           
           <compilerStartOptions>
             <compilerStartOption> /MD /W4 -O</compilerStartOption>
             <compilerStartOption>-D_WIN32_WINNT=0x0500 </compilerStartOption>
           </compilerStartOptions>
          
           <sources>
             <source>
               <-- relative to your project directory -->
               <directory>../src/main/native</directory>
               <fileNames>
                 <fileName>file1.c</fileName>
                 <fileName>file2.c</fileName>
                 <fileName>...</fileName>
               </fileNames>
             </source>
             <source>
               <directory>src/main/native</directory> 
               <fileNames>
                 <fileName>file3.c</fileName>
                 <fileName>file4.c</fileName>
                 <fileName>...</fileName>
               </fileNames>
             </source>          
            
             <!-- additional include path -->
             <source>
               <directory>...</directory>
             </source>          
             <!-- additional system include path -->
             <source>
               <directory>...</directory>
               <dependencyAnalysisParticipation>false</dependencyAnalysisParticipation>
             </source>          
           </sources>
           <!-- deploy the accompany .lib file as well -->          
           <linkerSecondaryOutputExtensions>lib</linkerSecondaryOutputExtensions >
          
           <linkerStartOptions>
             <linkerStartOption> /INCREMENTAL:NO /DLL user32.lib advapi32.lib oldnames.lib kernel32.lib </linkerStartOption>
           </linkerStartOptions>
         </configuration>
        
    </build>
    
    
</project>