<?xml version="1.0" encoding="UTF-8"?>
  <!--
    Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for
    additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not
    use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
    applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
  -->
<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>
  
  <parent>
    <groupId>org.apache.sling</groupId>
    <artifactId>sling</artifactId>
    <version>11-SNAPSHOT</version>
    <relativePath>../../parent/pom.xml</relativePath>
  </parent>
   
  <groupId>org.apache.sling.samples</groupId>
  <artifactId>org.apache.sling.samples.accessmanager.ui</artifactId>
  <packaging>bundle</packaging>
  <version>0.9-SNAPSHOT</version>
  <name>Apache Sling Access Manager UI sample</name>
  <description>
    Sample Sling UI for access management operations.
  </description>
  
  <scm>
    <connection>scm:svn:http://svn.apache.org/repos/asf/sling/trunk/samples/accessmanager-ui</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/sling/trunk/samples/accessmanager-ui</developerConnection>
    <url>http://svn.apache.org/viewvc/sling/trunk/samples/accessmanager-ui</url>
  </scm>

  <pluginRepositories>
    <!-- for yui-compressor-maven-plugin -->
    <pluginRepository>
      <name>oss.sonatype.org</name>
      <id>oss.sonatype.org</id>
      <url>http://oss.sonatype.org/content/groups/public</url>
    </pluginRepository>
  </pluginRepositories>
  
  <build>
    <plugins>
      <!--  use the yui-compressor to minify the js and css files -->
      <plugin>
        <groupId>net.alchim31.maven</groupId>
        <artifactId>yuicompressor-maven-plugin</artifactId>
        <executions>
          <execution>
            <phase>process-resources</phase>
            <goals>
              <goal>compress</goal>
            </goals>
          </execution>
        </executions>        
        <configuration>
          <sourceDirectory>${basedir}/src/main/resources</sourceDirectory>
          <outputDirectory>${basedir}/src/main/resources</outputDirectory>
          <suffix>.min</suffix>
          <excludes>
            <exclude>**/*.min.*</exclude>
          </excludes>
          <!-- 
          <aggregations>
            <aggregation>
              <insertNewLine>true</insertNewLine>
              <output>${basedir}/src/main/resources/js/usermgmt/usermgmt.all.min.js</output>
              <includes>
                <include>jquery/jquery-1.5.1.min.js</include>
                <include>jquery/jquery-ui-1.8.11.custom.min.js</include>
                <include>jquery/jquery-validate/jquery.validate.min.js</include>
                <include>accessmanager.min.js</include>
              </includes>
            </aggregation>
            <aggregation>
              <insertNewLine>true</insertNewLine>
              <output>${basedir}/src/main/resources/js/usermgmt/usermgmt.all.js</output>
              <includes>
                <include>jquery/jquery-1.5.1.min.js</include>
                <include>jquery/jquery-ui-1.8.11.custom.min.js</include>
                <include>jquery/jquery-validate/jquery.validate.js</include>
                <include>accessmanager.js</include>
              </includes>
            </aggregation>
          </aggregations>
           -->
        </configuration>
      </plugin>
    
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-scr-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <extensions>true</extensions>
        <configuration>
          <instructions>
            <Export-Package>
            </Export-Package>
            <Sling-Bundle-Resources>
                /images,
                /css/accessmanager,
                /js/accessmanager,
                /libs/sling/accessmanager,
                /libs/sling/servlet
            </Sling-Bundle-Resources>
            <Sling-Initial-Content>
                SLING-INF/i18n;overwrite:=false;uninstall:=false;path:=/etc/i18n/org.apache.sling.samples.accessmanager.ui
            </Sling-Initial-Content>
          </instructions>
        </configuration>
      </plugin>
    </plugins>
  </build>
  
  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <configuration>
          <excludePackageNames></excludePackageNames>
        </configuration>
      </plugin>
    </plugins>
  </reporting>
  
  <dependencies>
  </dependencies>  
</project>
