<?xml version="1.0" encoding="utf-8"?>
<!--
	Project Object Model (POM) for Maven
	If you are behind a proxy try the following command:
		'mvn -Dhttp.proxyHost=10.253.1.158 -Dhttp.proxyPort=8080 validate'
	Instead of 'validate' you can use also another goal. The following goals
	should work (see also iX 2/2006, p.77):
		validate
		generate-sources
		install
	
	Some other useful goals are:
	    jar
	    source:jar
	    source:test-jar
	
	PS: If you want to update the maven plugins use the option -U.

	see http://maven.apache.org/guides/introduction/introduction-to-the-pom.html
	see http://maven.apache.org/pom.htm
	
    (c)reated 22-Mar-09 by ob@aosd.de
-->
<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">

  <!-- 
      The Basics
      must be set if you want to upload it to the Central Repository
      see http://maven.apache.org/guides/mini/guide-central-repository-upload.html
   -->
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.patterntesting</groupId>
    <artifactId>patterntesting-libs</artifactId>
    <version>2.0.1</version>
  </parent>
  <artifactId>patterntesting-concurrent</artifactId>
  <packaging>jar</packaging>
  <name>patterntesting-concurrent</name>
  <description>PatternTesting Concurrent (patterntesting-concurrent) is a collection
    of useful thread aspects. It has support for testing, for
    sychnronization and for concurrent programming.
    Some of the ideas used in this library comes from reading
    Brian Goetz's book "Java Concurrency in Practice".</description>

  <!-- 
      General Properties
      (see parent POM)
   -->
  <properties>
    <patterntesting.site.artifact.dir>${patterntesting.site.dir}/concurrent/</patterntesting.site.artifact.dir>
  </properties>

  <!-- 
	  L I B R A R I E S
	  see http://www.ibiblio.org/maven2/ for available libraries
   -->
  <dependencies>
    <dependency>
      <groupId>org.patterntesting</groupId>
      <artifactId>patterntesting-tools</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <!-- Build Settings -->
  <build>
    <plugins>
      <!--
          AspectJ compiler
          @see http://www.mail-archive.com/user@mojo.codehaus.org/msg00157.html
          @see http://mail-archives.apache.org/mod_mbox/maven-users/200601.mbox/%3CB39B8F0E-BB20-44DB-96B3-3C7FCB85B594@gmail.com%3E
          @see http://mojo.codehaus.org/aspectj-maven-plugin/differentTestAndCompile.html
       -->
      <plugin>
        <groupId>${aspectj.maven.plugin.groupId}</groupId>
        <artifactId>aspectj-maven-plugin</artifactId>
        <configuration>
          <source>${maven.compile.source}</source>
          <target>${maven.compile.target}</target>
          <complianceLevel>${maven.compile.complianceLevel}</complianceLevel>
          <ajdtBuildDefFile>build.ajproperties</ajdtBuildDefFile>
          <aspectLibraries>
            <aspectLibrary>
              <groupId>org.patterntesting</groupId>
              <artifactId>patterntesting-rt</artifactId>
            </aspectLibrary>
          </aspectLibraries>
        </configuration>
        <executions>
          <execution>
            <id>compile</id>
            <goals>
              <goal>compile</goal>
            </goals>
            <configuration>
              <ajdtBuildDefFile>build.ajproperties</ajdtBuildDefFile>
            </configuration>
          </execution>
          <execution>
            <id>test-compile</id>
            <goals>
              <goal>test-compile</goal>
            </goals>
            <configuration>
              <ajdtBuildDefFile>src/test/build.ajproperties</ajdtBuildDefFile>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <!-- see http://maven.apache.org/plugins/maven-surefire-plugin/examples/inclusion-exclusion.html -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
      </plugin>
      <!-- see http://maven.apache.org/plugins/maven-source-plugin/usage.html -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <executions>
          <execution>
            <id>attach-sources</id>
            <goals>
              <goal>jar</goal>
            </goals>
            <phase>verify</phase>
          </execution>
        </executions>
      </plugin>
      <!-- 
          provide it as bundle
          see http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html
       -->
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <extensions>true</extensions>
        <configuration>
          <instructions>
            <Import-Package>*</Import-Package>
            <Export-Package>patterntesting.concurrent,
              patterntesting.concurrent.*</Export-Package>
            <Private-Package>patterntesting.concurrent.experimental,
              patterntesting.concurrent.junit.internal</Private-Package>
          </instructions>
        </configuration>
        <executions>
          <execution>
            <id>bundle-manifest</id>
            <goals>
              <goal>manifest</goal>
            </goals>
            <phase>process-classes</phase>
          </execution>
        </executions>
      </plugin>
      <!--
          see "Adding OSGi metadata to existing projects without changing the packaging type"
          (http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html)
       -->
      <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <archive>
            <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
          </archive>
        </configuration>
      </plugin>
    </plugins>
    <extensions>
      <!-- Enabling the use of FTP -->
      <extension>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-ftp</artifactId>
      </extension>
    </extensions>
  </build>
  <url>http://patterntesting.org/release/concurrent/</url>

  <inceptionYear>2009</inceptionYear>
  <!-- see http://maven.apache.org/pom.html#Licenses -->
  <licenses>
    <license>
      <name>The Apache Software License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
    </license>
  </licenses>

  <developers>
    <developer>
      <id>oboehm</id>
      <name>Oliver Boehm</name>
      <email>ob@aosd.de</email>
      <url>http://www.aosd.de/</url>
      <organization>agentes AG</organization>
      <organizationUrl>http://www.agentes.de</organizationUrl>
      <roles>
        <role>Java Developer</role>
      </roles>
    </developer>
  </developers>

  <scm>
    <connection>scm:cvs:pserver:anonymous@patterntesting.cvs.sourceforge.net:/cvsroot/patterntesting:PatternTesting10/patterntesting-concurrent</connection>
    <url>http://patterntesting.cvs.sourceforge.net/viewvc/patterntesting/PatternTesting10/patterntesting-concurrent/</url>
    <tag>patterntesting-1_3_0</tag>
  </scm>

  <!-- 
      Deployment
      see "Better Builds with Maven", p. 74
      see http://maven.apache.org/plugins/maven-deploy-plugin/
  -->
  <distributionManagement>
    <!--
        Deployment of the Web-Site 
        (try 'mvn site-deploy' to deploy it)
    -->
    <site>
      <id>ftp-patterntesting.org</id>
      <name>PatternTesting Website</name>
      <url>${patterntesting.site.url}/${project.version}/concurrent/</url>
    </site>
  </distributionManagement>

  <profiles>

    <!-- 
        For local deployment of the reports you need the ${patterntesting.site.dir}.
        This is not on all hosts (e.g. not on the cloudbees host) available.
     -->
    <profile>
      <id>local-site</id>
      <activation>
        <file>
          <exists>${patterntesting.site.dir}</exists>
        </file>
      </activation>
      <build>
        <plugins>
          <!--
              copy reports
              
              ask Ant to do some jobs for us
              @see http://maven.apache.org/plugins/maven-antrun-plugin/usage.html
              @see http://maven.apache.org/settings.html / Properties
           -->
          <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
              <execution>
                <goals>
                  <goal>run</goal>
                </goals>
                <phase>site</phase>
                <configuration>
                  <tasks description="copy reports to local site" name="install.reports">
                    <!--
                      Place any ant task here. You can add anything
                      you can add between <target> and </target> in a
                      build.xml.
                    -->
                    <echo>copying reports...</echo>
                    <copy todir="${patterntesting.site.dir}/concurrent/" verbose="false">
                      <fileset dir="target/site"></fileset>
                    </copy>
                  </tasks>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!-- 
        If you want an uber JAR with all dependant libs you can use this profile here.
        It is not in the default profile because for patterntesting-rt an uber JAR is
        already generated. This reduces the dependency to "patterntesting-rt-uberjar.jar"
        and "patterntesting-concurrent.jar".
     -->
    <profile>
      <id>uberjar</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <executions>
              <execution>
                <goals>
                  <goal>shade</goal>
                </goals>
                <phase>package</phase>
                <configuration>
                  <shadedArtifactAttached>true</shadedArtifactAttached>
                  <shadedClassifierName>uberjar</shadedClassifierName>
                  <artifactSet>
                    <excludes>
                      <exclude>junit:junit</exclude>
                    </excludes>
                  </artifactSet>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

  </profiles>

</project>
