<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>
  <groupId>org.apache.abdera</groupId>
  <artifactId>abdera</artifactId>
  <packaging>pom</packaging>
  <name>Apache Abdera</name>  
  <version>1.2-SNAPSHOT</version>    
  <description>Atom Specification Implementation</description>
  <inceptionYear>2006</inceptionYear>
  <url>http://abdera.apache.org</url>
  
  <organization>
    <name>Apache Software Foundation</name>
    <url>http://www.apache.org/</url>
  </organization>
  
  <issueManagement>
    <system>JIRA</system>
    <url>https://issues.apache.org/jira/browse/ABDERA</url>
  </issueManagement>
  
  <mailingLists>
    <mailingList>
     <name>Abdera Developer List</name>
     <subscribe>dev-subscribe@abdera.apache.org</subscribe>
     <unsubscribe>dev-unsubscribe@abdera.apache.org</unsubscribe>
     <post>dev@abdera.apache.org</post>
     <archive>http://mail-archives.apache.org/mod_mbox/abdera-dev/</archive>
   </mailingList>
   <mailingList>
     <name>Abdera User List</name>
     <subscribe>user-subscribe@abdera.apache.org</subscribe>
     <unsubscribe>user-unsubscribe@abdera.apache.org</unsubscribe>
     <post>user@abdera.apache.org</post>
     <archive>http://mail-archives.apache.org/mod_mbox/abdera-user/</archive>
   </mailingList>
   <mailingList>
     <name>Abdera Source Control List</name>
     <subscribe>commits-subscribe@abdera.apache.org</subscribe>
     <unsubscribe>commits-unsubscribe@abdera.apache.org</unsubscribe>
     <archive>http://mail-archives.apache.org/mod_mbox/abdera-commits/</archive>
   </mailingList>
  </mailingLists>
  
  <licenses>
    <license>
      <name>The Apache Software License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>
  
  <scm>
    <connection>scm:svn:http://svn.apache.org/repos/asf/abdera/java/tags/abdera-1.0</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/abdera/java/tags/abdera-1.0</developerConnection>
    <url>http://svn.apache.org/repos/asf/abdera/java/tags/abdera-1.0</url>
  </scm>
  
  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>2.7</version>
        <configuration>
          <source>1.5</source>				
          <links>
            <link>http://java.sun.com/j2se/1.5.0/docs/api/</link>
          </links>
          <aggregate>true</aggregate>
          <excludePackageNames>org.apache.abdera.util,org.apache.abdera.ext.*.impl,org.apache.abdera.parser.**,org.apache.abdera.security.**</excludePackageNames>
        </configuration>
      </plugin>
      
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jxr-plugin</artifactId>
        <version>2.2</version>
        <configuration>
          <aggregate>true</aggregate>
        </configuration>
      </plugin>
      
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-report-plugin</artifactId>
        <version>2.6</version>
      </plugin>
      
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>cobertura-maven-plugin</artifactId>
        <version>2.4</version>
      </plugin>
    </plugins>
  </reporting>
  
  <build>
 
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.3.2</version>
        <configuration>
          <source>1.5</source>
          <target>1.5</target>
        </configuration>
      </plugin>
      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>2.2</version>  
          <configuration>
              <archive>
                  <manifestEntries>
                      <Specification-Title>${project.name}</Specification-Title>
                      <Specification-Vendor>The Apache Software Foundation</Specification-Vendor>
                      <Specification-Version>${project.version}</Specification-Version>
                      <Implementation-Title>${project.name}</Implementation-Title>
                      <Implementation-Vendor-Id>org.apache</Implementation-Vendor-Id>
                      <Implementation-Vendor>The Apache Software Foundation</Implementation-Vendor>
                      <Implementation-Version>${project.version}</Implementation-Version>
                  </manifestEntries>
               </archive>
          </configuration>
      </plugin>
      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <version>2.1</version>
          <configuration>
              <tagBase>https://svn.apache.org/repos/asf/abdera/java/tags</tagBase>
              <useReleaseProfile>false</useReleaseProfile>
              <preparationGoals>clean install</preparationGoals>
              <goals>deploy</goals>
              <arguments>-Pdeploy</arguments>
              <autoVersionSubmodules>true</autoVersionSubmodules>
          </configuration>
      </plugin>
      <plugin>
          <artifactId>maven-remote-resources-plugin</artifactId>
          <version>1.0</version>  
          <executions>
              <execution>
                  <id>compile</id>
                  <goals>
                      <goal>process</goal>
                  </goals>
                  <configuration>
                      <resourceBundles>
                          <resourceBundle>org.apache:apache-jar-resource-bundle:1.3</resourceBundle>
                      </resourceBundles>
                      <supplementalModels>
                          <supplementalModel>${topDir}/etc/notice-supplements.xml</supplementalModel>
                      </supplementalModels>
                      <properties>
                          <projectName>Apache Abdera</projectName>
                      </properties>
                  </configuration>
              </execution>
          </executions>
      </plugin>
      
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>cobertura-maven-plugin</artifactId>
        <version>2.4</version>
        <executions>
          <execution>
            <goals>
              <goal>clean</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>2.1.2</version>
        <executions>
          <execution>
            <id>attach-sources</id>
            <phase>verify</phase>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
	<plugin>
		<groupId>org.apache.felix</groupId>
		<artifactId>maven-bundle-plugin</artifactId>
		<version>2.1.0</version>
		<extensions>true</extensions>
		<inherited>true</inherited>
		<configuration>
			<instructions>
				<Export-Package>${abdera.osgi.exports}</Export-Package>
				<Import-Package>${abdera.osgi.imports}</Import-Package>
				<Embed-Dependency>${abdera.osgi.embed.dependencies}</Embed-Dependency>
	            <_versionpolicy>[$(version;==;$(@)),$(version;+;$(@)))</_versionpolicy>
			</instructions>
	        <versions>
	            <abdera.osgi.version.clean>${project.version}</abdera.osgi.version.clean>
	        </versions>
		</configuration>
	    <executions>
	        <execution>
	            <phase>generate-sources</phase>
	            <goals>
	                <goal>cleanVersions</goal>
	            </goals>
	        </execution>
		</executions>
	</plugin>
    </plugins>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.6</version>
          <configuration>
            <excludes>
              <exclude>**/*TestSuite*</exclude>
              <exclude>**/*$*</exclude>
              <exclude>**/TestAdapter*</exclude>
            </excludes>
          </configuration>
        </plugin>
        <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-gpg-plugin</artifactId>
        <version>1.1</version>
        <executions>
          <execution>
            <id>sign-artifacts</id>
            <phase>verify</phase>
            <goals>
              <goal>sign</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <version>0.6</version>
      </plugin> 
      
        <plugin>
          <groupId>com.google.code.maven-license-plugin</groupId>
          <artifactId>maven-license-plugin</artifactId>
          <version>1.4.0</version>  
          <configuration>
            <basedir>${basedir}</basedir>
            <header>${basedir}/etc/license.txt</header>
            <quiet>false</quiet>
            <failIfMissing>true</failIfMissing>
          </configuration>
        </plugin>


      </plugins>
    </pluginManagement>
  </build>
  
  <profiles>
    <profile>
      <id>java6</id>
      <reporting>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
              <source>1.6</source>
              <target>1.6</target>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>2.7</version>
            <configuration>
              <source>1.6</source>        
              <links>
                <link>http://java.sun.com/javase/6/docs/api/</link>
              </links>
              <aggregate>true</aggregate>
              <excludePackageNames>org.apache.abdera.util,org.apache.abdera.ext.*.impl,org.apache.abdera.parser.**,org.apache.abdera.security.**</excludePackageNames>
            </configuration>
          </plugin>
        </plugins>
      </reporting>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
              <source>1.6</source>
              <target>1.6</target>
            </configuration>
          </plugin>
        </plugins>
      </build>
    
    </profile>
  	<profile>
  		<id>deploy</id>
  		<modules>
  			<module>distribution</module>
  		</modules>
  	</profile>
  	<profile>
  		<id>no-online-tests</id>
  		<activation>
  			<property>
  				<name>offline-tests</name>
  				<value>false</value>
  			</property>
  		</activation>
  		<build>
  			<plugins>
  				<plugin>
  					<artifactId>maven-surefire-plugin</artifactId>
  					<configuration>
  						<excludes>
  							<exclude>**/*TestSuite*</exclude>
  							<exclude>**/*$*</exclude>
  							<exclude>**/*TestAdapter*</exclude>
  							<exclude>**/FeedValidatorTest.java</exclude>
  							<exclude>**/DSigThirdPartyVerifyTest.java</exclude>
  							<exclude>**/AtomConformanceTest.java</exclude>
  						</excludes>
  					</configuration>
  				</plugin>
  			</plugins>
  		</build>
  	</profile>
  </profiles>


  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.8.1</version>  
        <scope>test</scope>
      </dependency>
      
      <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.0.4</version>  
      </dependency>
      
      <dependency>
        <groupId>commons-httpclient</groupId>
        <artifactId>commons-httpclient</artifactId>
        <version>3.1</version>  
      </dependency>
         
      <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.4</version>  
      </dependency>
      
      <dependency>
        <groupId>org.apache.ws.commons.axiom</groupId>
        <artifactId>axiom-api</artifactId>
        <version>1.2.10</version>  
      </dependency>

      <dependency>
        <groupId>org.apache.ws.commons.axiom</groupId>
        <artifactId>axiom-impl</artifactId>
        <version>1.2.10</version>  

      <exclusions>
        <exclusion>
          <groupId>javax.mail</groupId>
          <artifactId>mail</artifactId>
        </exclusion>
        <exclusion>
          <groupId>stax</groupId>
          <artifactId>stax-api</artifactId>
        </exclusion>
      </exclusions>
      </dependency>
      
      <dependency>
        <groupId>org.codehaus.woodstox</groupId>
        <artifactId>wstx-asl</artifactId>
        <version>3.2.6</version>  
        <scope>runtime</scope>	    
        <exclusions>
          <exclusion>
            <groupId>stax</groupId>
            <artifactId>stax-api</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      
      <dependency>
        <groupId>org.apache.geronimo.specs</groupId>
        <artifactId>geronimo-activation_1.0.2_spec</artifactId>
        <version>1.1</version>  
      </dependency>
      
      <dependency>
        <groupId>jaxen</groupId>
        <artifactId>jaxen</artifactId>
        <version>1.1.1</version>  
        <exclusions>
          <exclusion>
            <groupId>jdom</groupId>
            <artifactId>jdom</artifactId>
          </exclusion>
          <exclusion>
            <groupId>xom</groupId>
            <artifactId>xom</artifactId>
          </exclusion>          
          <exclusion>
            <groupId>dom4j</groupId>
            <artifactId>dom4j</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      
      <dependency>
        <groupId>xml-security</groupId>
        <artifactId>xmlsec</artifactId>
        <version>1.3.0</version>  
      </dependency>
      
      <dependency>
        <groupId>xerces</groupId>
        <artifactId>xercesImpl</artifactId>
        <version>2.9.1</version>  
      </dependency>
            
      <dependency>
        <groupId>xml-apis</groupId>
        <artifactId>xml-apis</artifactId>
        <version>1.3.04</version>  
      </dependency>
      
      <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>  
      </dependency>
      
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-all</artifactId>
        <version>1.8.5</version>
        <scope>test</scope>
      </dependency>
      
    </dependencies>
  </dependencyManagement>
  
  <modules>
    <module>bundle</module>
    <module>core</module>
    <module>dependencies/i18n</module>
    <module>parser</module>
    <module>security</module>
    <module>server</module>
    <module>client</module>
    <module>adapters</module>
    <module>extensions</module>
    <module>spring</module>
    <module>examples</module>
  </modules>
  
  <distributionManagement>
    <snapshotRepository>
      <id>apache.snapshots</id>
      <name>Apache Development Snapshot Repository</name>
      <url>scp://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>
    </snapshotRepository>

    <repository>
      <id>apache.releases</id>
      <name>Apache Release Distribution Repository</name>
      <url>scp://people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository</url>
    </repository>
  </distributionManagement>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <jetty.version>6.1.24</jetty.version>
    <easymock.version>3.0</easymock.version>
    <topDir>${basedir}</topDir>
    <abdera.osgi.imports>${abdera.osgi.abdera.imports},${abdera.osgi.default.imports}</abdera.osgi.imports>
	<abdera.osgi.exports>${abdera.osgi.default.exports};version=${project.version};-noimport:=true</abdera.osgi.exports>
    <abdera.osgi.abdera.imports>org.apache.abdera.*;version="[$(version;===;${abdera.osgi.version.clean}),$(version;==+;${abdera.osgi.version.clean}))"</abdera.osgi.abdera.imports>
    <abdera.osgi.default.imports>*</abdera.osgi.default.imports>
	<abdera.osgi.default.exports>org.apache.abdera.*</abdera.osgi.default.exports>
	<abdera.osgi.embed.dependencies></abdera.osgi.embed.dependencies>
  </properties>
  
</project>
