<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.github.abhinavmishra14</groupId>
	<artifactId>aws-s3-utils</artifactId>
	<version>1.0</version>
	<packaging>jar</packaging>
	<name>aws-s3-utils</name>
	<description>This project is a utility for performing operations on Amazon S3 bucket.</description>
    <url>https://github.com/abhinavmishra14/amazon-aws-s3-utils</url>
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<!-- Append copyright info into java docs -->
		<bottom>Copyright © 2015. Abhinav Kumar Mishra. All rights reserved.</bottom>
		<skipTests>true</skipTests>
	</properties>

	<licenses>
		<license>
			<name>The Apache License, Version 2.0</name>
			<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
		</license>
	</licenses>

	<developers>
		<developer>
			<name>Abhinav Kumar Mishra</name>
			<email>abhinavmishra14@gmail.com</email>
			<organizationUrl>http://javaworld-abhinav.blogspot.com</organizationUrl>
		</developer>
	</developers>

	<scm>
		<connection>scm:git:git@github.com:abhinavmishra14/amazon-aws-s3-utils.git</connection>
		<developerConnection>scm:git:git@github.com:abhinavmishra14/amazon-aws-s3-utils.git</developerConnection>
		<url>git@github.com:abhinavmishra14/amazon-aws-s3-utils.git</url>
	</scm>

	<dependencies>
		<dependency>
			<groupId>com.amazonaws</groupId>
			<artifactId>aws-java-sdk-s3</artifactId>
			<version>1.10.10</version>
		</dependency>
		<dependency>
			<groupId>net.java.dev.jets3t</groupId>
			<artifactId>jets3t</artifactId>
			<version>0.9.3</version>
		</dependency>

		<dependency>
			<groupId>commons-io</groupId>
			<artifactId>commons-io</artifactId>
			<version>2.4</version>
		</dependency>

		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>1.7.12</version>
		</dependency>

		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.7.12</version>
		</dependency>

		<!-- Test dependencies -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.mockito</groupId>
			<artifactId>mockito-all</artifactId>
			<version>1.10.19</version>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<issueManagement>
		<url>https://github.com/abhinavmishra14/amazon-aws-s3-utils/issues</url>
		<system>git</system>
	</issueManagement>

    <!--In order to configure Maven to deploy to the OSSRH Nexus Repository Manager with the Nexus Staging Maven plugin you have to configure it like this. 
        Since OSSRH is always running the latest available version of Sonatype Nexus Repository Manager, 
        it is best to use the latest version of the Nexus Staging Maven plugin. -->
	<distributionManagement>
	  <snapshotRepository>
	    <id>ossrh</id>
	    <url>https://oss.sonatype.org/content/repositories/snapshots</url>
	  </snapshotRepository>
	  <repository>
	    <id>ossrh</id>
	    <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
	  </repository>
	</distributionManagement>

   <repositories>
      <repository>
          <id>ossrh-releases</id>
          <url>https://oss.sonatype.org/content/groups/public</url>
          <snapshots>
              <enabled>false</enabled>
          </snapshots>
          <releases>
              <enabled>true</enabled>
          </releases>
      </repository>
      
      <repository>
         <id>ossrh-snapshots</id>
         <url>https://oss.sonatype.org/content/groups/staging</url>
         <snapshots>
             <enabled>true</enabled>
         </snapshots>
         <releases>
             <enabled>false</enabled>
         </releases>
     </repository>
   </repositories>
   
   <build>
		<plugins>
		    
			<!-- Project is JDK 1.7 compliant, so source and target version should 
				be 1.7 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.3</version>
				<configuration>
					<source>1.7</source>
					<target>1.7</target>
				</configuration>
			</plugin>
			
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-resources-plugin</artifactId>
				<version>2.4</version>
				<executions>
					<execution>
						<id>copy static resource files</id>
						<goals>
							<goal>resources</goal>
						</goals>
						<phase>generate-sources</phase>
					</execution>
				</executions>
			</plugin>

			<!-- JavaDocs plug-in -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-javadoc-plugin</artifactId>
				<version>2.10.3</version>
				<executions>
					<execution>
						<id>attach-javadocs</id>
						<goals>
							<goal>jar</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			
			<!-- Java sources plug-in-->		    
		    <plugin>
		      <groupId>org.apache.maven.plugins</groupId>
		      <artifactId>maven-source-plugin</artifactId>
		      <version>2.2.1</version>
		      <executions>
		        <execution>
		          <id>attach-sources</id>
		          <goals>
		            <goal>jar-no-fork</goal>
		          </goals>
		        </execution>
		      </executions>
		    </plugin>
			
			<!-- Java code coverage, This plug-in will throw exception if unit test 
				cases are skipped -->
			<plugin>
				<groupId>org.jacoco</groupId>
				<artifactId>jacoco-maven-plugin</artifactId>
				<version>0.7.6.201602180812</version>
				<configuration>
				    <!-- Sets the path to the file which contains the execution data. -->
					<destFile>${basedir}/target/coverage-reports/jacoco-unit.exec</destFile>
					<!-- Sets the path to the file which contains the execution data. -->
					<dataFile>${basedir}/target/coverage-reports/jacoco-unit.exec</dataFile>
					<!-- Sets the output directory for the code coverage report. -->
                    <!-- <outputDirectory>${project.reporting.outputDirectory}</outputDirectory> -->
				</configuration>
				<executions>
				    <!--
                        Prepares the property pointing to the JaCoCo runtime agent which
                        is passed as VM argument when Maven the Surefire plugin is executed.
                    -->
					<execution>
						<id>jacoco-initialize</id>
						<goals>
							<goal>prepare-agent</goal>
						</goals>
					</execution>
					<execution>
						<id>jacoco-site</id>
						<phase>package</phase>
						<goals>
							<goal>report</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

			<!-- PMD Integration, you can also run it directly using mvn pmd:pmd -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jxr-plugin</artifactId>
				<version>2.5</version>
				<executions>
					<execution>
						<phase>package</phase>
						<goals>
							<goal>jxr</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-pmd-plugin</artifactId>
				<version>3.6</version>
				<configuration>
					<!-- Run PMD on the tests. Default: false -->
					<includeTests>false</includeTests>
					
					<!-- Link the violation line numbers to the source xref. Links will be created 
						automatically if the jxr plugin is being used. Default: true -->
					<linkXRef>true</linkXRef>
					
					<!-- Set the output format type, in addition to the HTML report. Must be 
						one of: "none", "csv", "xml", "txt" or the full class name of the PMD renderer 
						to use. See the net.sourceforge.pmd.renderers package javadoc for available 
						renderers. XML is required if the pmd:check goal is being used. Default: xml-->
					<format>xml</format>
					
					<!-- A list of files to include from checking. Can contain Ant-style wildcards 
						and double wildcards. Defaults to **\/*.java.-->
					<includes>
						<include>com/**/*.java</include>
					</includes>
				
					<!-- A list of files to exclude from checking. Can contain Ant-style wildcards 
						and double wildcards. We are not excluding anything here. -->
				    <!-- <excludes>
				      <exclude></exclude>
				    </excludes> -->
				    
				    <!-- The output directory for the final HTML report.  -->
				    <outputDirectory>${project.reporting.outputDirectory}</outputDirectory>
				    
				    <!-- The output directory for the intermediate XML report. -->
				    <targetDirectory>${project.build.directory}</targetDirectory>
				    
					<rulesets>
					    <!-- Multiple rule set xmls can be included here. -->
						<ruleset>${basedir}/pmd_ruleset.xml</ruleset>
					</rulesets>
				</configuration>
				<executions>
					<execution>
						<phase>package</phase>
						<goals>
						    <!-- Creates a PMD report. -->
						    <goal>pmd</goal>
						   
						    <!-- Fail the build if there were any PMD violations in the source code. Uncomment if needed -->
							<!-- <goal>check</goal> -->
							
							<!-- Creates a report for PMD's copy paste detector tool -->
							<goal>cpd</goal>
							
							<!-- Fail the build if there were any CPD violations in the source code. Uncomment if needed -->
  							<!-- <goal>cpd-check</goal> -->
						</goals>
					</execution>
				</executions>
			</plugin>

			<!-- FindBugs Integration, you can also run it directly using mvn findbugs:findbugs -->
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>findbugs-maven-plugin</artifactId>
				<version>3.0.3</version>
				<configuration>
				    <!-- FindBugs will show what is doing during analysis.  -->
				    <debug>false</debug>
					<!--
	                    Enables analysis which takes more memory but finds more bugs.
	                    If you run out of memory, changes the value of the effort element
	                    to 'min'. Min|Default|Max are possible values.
                    -->
				    <effort>Min</effort>
				    <!-- Reports all bugs (other values are High|Normal|Low|Exp|Ignore) -->
        		    <threshold>Low</threshold>
        		    <xmlOutput>true</xmlOutput>
					<!-- Optional directory to save findbugs xdoc xml report -->
					<xmlOutputDirectory>${project.reporting.outputDirectory}</xmlOutputDirectory>
					
					<!-- Indicates to analyze only given java packages, We are allowing everything here. -->
					<!-- <onlyAnalyze>com.*</onlyAnalyze> -->		
								
					<failOnError>true</failOnError>
				</configuration>
				<executions>
					<execution>
						<phase>package</phase>
						<goals>
						    <!-- This goal will check code and generate report -->
							<goal>findbugs</goal>
							
							<!-- Fail the build if there were any findBugs violations in the source code. Uncomment if needed -->
							<!-- <goal>check</goal> -->
						</goals>
					</execution>
				</executions>
			</plugin>
		                
		    <!-- The Maven GPG plugin is used to sign the components with the following configuration -->
            <plugin>
		      <groupId>org.apache.maven.plugins</groupId>
		      <artifactId>maven-gpg-plugin</artifactId>
		      <version>1.5</version>
		      <executions>
		        <execution>
		          <id>sign-artifacts</id>
		          <phase>verify</phase>
		          <goals>
		            <goal>sign</goal>
		          </goals>
		        </execution>
		      </executions>
		    </plugin>

			<!-- The Nexus Staging Maven Plugin is the recommended way to deploy your 
		     components to OSSRH and release them to the Central Repository. -->
		    <plugin>
			  <groupId>org.sonatype.plugins</groupId>
			  <artifactId>nexus-staging-maven-plugin</artifactId>
			  <version>1.6.3</version>
			  <extensions>true</extensions>
			  <configuration>
			     <serverId>ossrh</serverId>
			     <nexusUrl>https://oss.sonatype.org/</nexusUrl>
			     <autoReleaseAfterClose>false</autoReleaseAfterClose>
			  </configuration>
			</plugin>
		</plugins>
	</build>
	
	<!-- Configuring plugins for reporting purpose. Reports will be generated using mvn site command -->
	<reporting>
       <plugins>
          <!-- Reporting plugin -->
	      <plugin>
	        <groupId>org.apache.maven.plugins</groupId>
	        <artifactId>maven-project-info-reports-plugin</artifactId>
	        <version>2.8.1</version>
	      </plugin>
	      
	      <!-- To publish JUnit test results -->
	      <plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-surefire-report-plugin</artifactId>
		  </plugin>
	    
	      <!-- To publish PMD reports-->
		   <plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jxr-plugin</artifactId>
				<version>2.5</version>
		   </plugin>

		    <plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-pmd-plugin</artifactId>
				<version>3.6</version>
				<configuration>
					<includes>
						<include>com/**/*.java</include>
					</includes>				    
				    <outputDirectory>${project.reporting.outputDirectory}</outputDirectory>
				    <targetDirectory>${project.build.directory}</targetDirectory>
					<rulesets>
						<ruleset>${basedir}/pmd_ruleset.xml</ruleset>
					</rulesets>
				</configuration>
			</plugin>

			<!-- To publish findBugs report -->
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>findbugs-maven-plugin</artifactId>
				<version>3.0.3</version>
				<configuration>
				    <debug>false</debug>
				    <effort>Min</effort>
        		    <threshold>Low</threshold>
        		    <xmlOutput>true</xmlOutput>
					<xmlOutputDirectory>${project.reporting.outputDirectory}</xmlOutputDirectory>
					<failOnError>true</failOnError>
				</configuration>
			</plugin>
			
			<!-- To publish Java code coverage -->
			<plugin>
				<groupId>org.jacoco</groupId>
				<artifactId>jacoco-maven-plugin</artifactId>
				<version>0.7.6.201602180812</version>
				<configuration>
					<destFile>${basedir}/target/coverage-reports/jacoco-unit.exec</destFile>
					<dataFile>${basedir}/target/coverage-reports/jacoco-unit.exec</dataFile>
                   <!--  <outputDirectory>${project.reporting.outputDirectory}</outputDirectory> -->
				</configuration>
			</plugin>
			
			<!-- To publish JavaDocs -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-javadoc-plugin</artifactId>
				<version>2.10.3</version>
			</plugin>
	  </plugins>
  </reporting>
  
  <profiles>
	<profile>
		<id>release</id>
		<build>
		  <plugins>
	          <!-- JavaDocs plug-in -->
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-javadoc-plugin</artifactId>
					<version>2.10.3</version>
					<executions>
						<execution>
							<id>attach-javadocs</id>
							<goals>
								<goal>jar</goal>
							</goals>
						</execution>
					</executions>
				</plugin>
				
				<!-- Java sources plug-in-->		    
			    <plugin>
			      <groupId>org.apache.maven.plugins</groupId>
			      <artifactId>maven-source-plugin</artifactId>
			      <version>2.2.1</version>
			      <executions>
			        <execution>
			          <id>attach-sources</id>
			          <goals>
			            <goal>jar-no-fork</goal>
			          </goals>
			        </execution>
			      </executions>
			    </plugin>
			    
			    <!-- The Maven GPG plugin is used to sign the components with the following configuration -->
	            <plugin>
			      <groupId>org.apache.maven.plugins</groupId>
			      <artifactId>maven-gpg-plugin</artifactId>
			      <version>1.5</version>
			      <executions>
			        <execution>
			          <id>sign-artifacts</id>
			          <phase>verify</phase>
			          <goals>
			            <goal>sign</goal>
			          </goals>
			        </execution>
			      </executions>
			    </plugin>
			    
			    <plugin>
				  <groupId>org.apache.maven.plugins</groupId>
				  <artifactId>maven-release-plugin</artifactId>
				  <version>2.5</version>
				  <configuration>
				    <autoVersionSubmodules>true</autoVersionSubmodules>
				    <useReleaseProfile>false</useReleaseProfile>
				    <releaseProfiles>release</releaseProfiles>
				    <goals>deploy nexus-staging:release</goals>
				  </configuration>
				</plugin>
		    </plugins>
		</build>
	</profile>
   </profiles>
	
</project>