<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>
	<parent>
		<artifactId>org.eclipse.uomo.bundles</artifactId>
		<groupId>org.eclipse.uomo</groupId>
		<version>0.7.1</version>
	</parent>
	<artifactId>org.eclipse.uomo.util</artifactId>
	<name>UOMo Utilities</name>
	<packaging>eclipse-plugin</packaging>
	
	<!-- ======================================================= -->
    <!-- Build Settings -->
    <!-- ======================================================= -->
    <build>
        <plugins>
            <!-- ======================================================= -->
            <!-- Compilation -->
            <!-- ======================================================= -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>${project.build.javaVersion}</source>
					<target>${project.build.javaVersion}</target>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
            
            <!-- ======================================================= -->
            <!-- Packaging -->
            <!-- ======================================================= -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.2</version>
                  <executions>
		         <execution>
		           <goals>
		             <goal>test-jar</goal>
		           </goals>
		         </execution>
      			 </executions>
                <configuration>
                    <archive>
                        <manifestEntries>
                            <Implementation-Title>${project.name}</Implementation-Title>
                            <Implementation-Version>${project.version}
                            </Implementation-Version>
                            <!-- mode>development</mode> TODO call it stage? <SCM-Revision>${buildNumber}</SCM-Revision -->
                            <SCM-Revision>$Revision: 205 $</SCM-Revision>
                        </manifestEntries>
                        <manifestFile>META-INF/MANIFEST.MF</manifestFile>
                    </archive>
                </configuration>
            </plugin>
            
            <!-- ======================================================= -->
            <!-- Packaging (OSGi bundle) -->
            <!-- ======================================================= -->
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <version>2.2.0</version>
                <extensions>true</extensions>
                <configuration>
                    <instructions>
                        <Export-Package>org.eclipse.uomo.util.*</Export-Package>
                        <Private-Package>!*</Private-Package>
                    </instructions>
                </configuration>
            </plugin>
        </plugins>
    </build>
    
    <!-- ==================================================== -->
    <!-- Repositories. This is where Maven looks for dependencies. The Maven 
        repository is implicit and doesn't need to be specified. -->
    <!-- ==================================================== -->
<!--     <repositories>         -->
<!--         <repository> -->
<!--             <id>jboss</id> -->
<!--             <name>JBoss Repository</name> -->
<!--             <url>http://repository.jboss.org/maven2</url>             -->
<!--         </repository> -->
<!--     </repositories> -->
	
</project>