<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>
    <artifactId>jewelcli</artifactId>
    <packaging>jar</packaging>
    <parent>
        <groupId>com.lexicalscope.jewelcli</groupId>
        <artifactId>jewelcli-parent</artifactId>
        <version>0.8.9</version>
    </parent>
    <name>JewelCli</name>
    <description>JewelCli uses an annotated interface definition to automatically parse and present command line arguments</description>
    <inceptionYear>2006</inceptionYear>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <project.build.outputEncoding>UTF-8</project.build.outputEncoding>
        <maven.compiler.source>1.6</maven.compiler.source>
        <maven.compiler.target>1.6</maven.compiler.target>
    </properties>
    <issueManagement>
        <url>https://github.com/lexicalscope/jewelcli/issues</url>
    </issueManagement>
    <scm>
        <connection>scm:git:git@github.com:lexicalscope/jewelcli.git</connection>
        <url>https://github.com/lexicalscope/jewelcli</url>
        <developerConnection>scm:git:git@github.com:lexicalscope/jewelcli.git</developerConnection>
    </scm>
    <url>http://jewelcli.lexicalscope.com/</url>
    <mailingLists>
        <mailingList>
            <name>Discussion List</name>
            <subscribe>jewelcli+subscribe@googlegroups.com</subscribe>
            <unsubscribe>jewelcli+unsubscribe@googlegroups.com</unsubscribe>
            <post>jewelcli@googlegroups.com</post>
            <archive>http://groups.google.com/group/jewelcli</archive>
        </mailingList>
    </mailingLists>    
    <reporting>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>2.8</version>
                <reportSets>
                    <reportSet>
                        <id>html</id>
                        <configuration>
                            <show>public</show>
                        </configuration>
                        <reports>
                            <report>javadoc</report>
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jxr-plugin</artifactId>
                <version>2.1</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-report-plugin</artifactId>
                <version>2.9</version>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>taglist-maven-plugin</artifactId>
                <version>2.4</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-project-info-reports-plugin</artifactId>
                <version>2.4</version>
                <reportSets>
                    <reportSet>
                        <reports>
                            <report>index</report>
                            <report>dependencies</report>
                            <report>project-team</report>
                            <report>mailing-list</report>
                            <report>issue-tracking</report>
                            <report>license</report>
                            <report>scm</report>
                            <report>summary</report>
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-changelog-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <type>range</type>
                    <range>90</range>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>cobertura-maven-plugin</artifactId>
                <version>2.5.1</version>
                <configuration>
                    <formats>
                        <format>xml</format>
                        <format>html</format>
                    </formats>
                </configuration>
            </plugin>
        </plugins>
    </reporting>
    <dependencies>
        <dependency>
            <groupId>com.lexicalscope.fluent-reflection</groupId>
            <artifactId>fluent-reflection</artifactId>
            <version>0.1.5</version>
            <classifier>no_deps</classifier>
            <type>jar</type>
            <scope>compile</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.lexicalscope.fluent-collections</groupId>
            <artifactId>fluent-collections</artifactId>
            <version>0.0.2</version>
            <type>jar</type>
            <scope>compile</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest-integration</artifactId>
            <version>1.3.RC2</version>
            <type>jar</type>
            <scope>compile</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.google.inject</groupId>
            <artifactId>guice</artifactId>
            <version>3.0</version>
            <type>jar</type>
            <classifier>no_aop</classifier>
            <scope>compile</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.0.1</version>
            <type>jar</type>
            <scope>compile</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.googlecode.lambdaj</groupId>
            <artifactId>lambdaj</artifactId>
            <version>2.3.1</version>
            <type>jar</type>
            <scope>compile</scope>
            <optional>true</optional>
            <exclusions>
                <exclusion>
                    <groupId>org.hamcrest</groupId>
                    <artifactId>hamcrest-all</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>10.0</version>
            <type>jar</type>
            <scope>compile</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <!-- workaround for m2e not handling workspace resolution of classifiers -->
            <groupId>com.lexicalscope.fluent-reflection</groupId>
            <artifactId>fluent-reflection</artifactId>
            <version>0.1.5</version>
            <type>jar</type>
            <scope>test</scope>
            <optional>true</optional>
        </dependency>      
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit-dep</artifactId>
            <version>4.10</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.jmock</groupId>
            <artifactId>jmock-junit4</artifactId>
            <version>2.6.0-RC2</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.hamcrest</groupId>
                <artifactId>hamcrest-core</artifactId>
                <version>1.3.RC2</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>${maven.compiler.source}</source>
                    <target>${maven.compiler.target}</target>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
           <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>animal-sniffer-maven-plugin</artifactId>
                <version>1.9</version>
                <configuration>
                    <signature>
                        <groupId>org.codehaus.mojo.signature</groupId> 
                        <artifactId>java16</artifactId>
                        <version>1.1</version>
                    </signature>
                </configuration>
                <executions>
                    <execution>
                        <id>check-java-1.6-compat</id>
                        <phase>process-classes</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>cobertura-maven-plugin</artifactId>
                <version>2.5.1</version>
                <configuration>
                    <instrumentation>
                        <ignores>
                            <ignore>com.lexicalscope.jewelcli.internal.**</ignore>
                        </ignores>
                        <excludes>
                            <exclude>com/lexicalscope/jewelcli/internal/**/*.class</exclude>
                        </excludes>
                    </instrumentation>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>clean</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.sonatype.plugins</groupId>
                <artifactId>jarjar-maven-plugin</artifactId>
                <version>1.5</version>
                <executions>
                    <execution>
                        <id>jarjar-classes</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>jarjar</goal>
                        </goals>
                        <configuration>
                            <input>{classes}</input>
                            <overwrite>true</overwrite>
                            <includes>
                                <include>com.google.inject:guice</include>
                                <include>com.googlecode.lambdaj:lambdaj</include>
                                <include>org.apache.commons:commons-lang3</include>
                                <include>com.google.guava:guava</include>
                                <include>com.lexicalscope.fluent-reflection:fluent-reflection</include>
                                <include>com.lexicalscope.fluent-collections:fluent-collections</include>
                                <include>cglib:cglib-nodep</include>
                                <include>org.hamcrest:hamcrest-core</include>
                                <include>org.hamcrest:hamcrest-library</include>
                                <include>org.hamcrest:hamcrest-integration</include>
                            </includes>
                            <rules>
                                <rule>
                                    <pattern>org.hamcrest.*</pattern>
                                    <result>com.lexicalscope.jewelcli.internal.hamcrest.$@1</result>
                                </rule>
                                <rule>
                                    <pattern>org.hamcrest.**.*</pattern>
                                    <result>com.lexicalscope.jewelcli.internal.hamcrest.@1.$@2</result>
                                </rule>
                                <rule>
                                    <pattern>net.sf.cglib.*</pattern>
                                    <result>com.lexicalscope.jewelcli.internal.cglib.$@1</result>
                                </rule>
                                <rule>
                                    <pattern>net.sf.cglib.**.*</pattern>
                                    <result>com.lexicalscope.jewelcli.internal.cglib.@1.$@2</result>
                                </rule>
                                <rule>
                                    <pattern>net.sf.cglib.*</pattern>
                                    <result>com.lexicalscope.jewelcli.internal.cglib.$@1</result>
                                </rule>
                                <rule>
                                    <pattern>com.google.common.**.*</pattern>
                                    <result>com.lexicalscope.jewelcli.internal.guava.@1.$@2</result>
                                </rule>
                                <rule>
                                    <pattern>com.google.common.*</pattern>
                                    <result>com.lexicalscope.jewelcli.internal.guava.$@1</result>
                                </rule>
                                <rule>
                                    <pattern>com.google.inject.**.*</pattern>
                                    <result>com.lexicalscope.jewelcli.internal.guice.@1.$@2</result>
                                </rule>
                                <rule>
                                    <pattern>com.google.inject.*</pattern>
                                    <result>com.lexicalscope.jewelcli.internal.guice.$@1</result>
                                </rule>
                                <rule>
                                    <pattern>ch.lambdaj.**.*</pattern>
                                    <result>com.lexicalscope.jewelcli.internal.lamdaj.@1.$@2</result>
                                </rule>
                                <rule>
                                    <pattern>ch.lambdaj.*</pattern>
                                    <result>com.lexicalscope.jewelcli.internal.lamdaj.$@1</result>
                                </rule>
                                <rule>
                                    <pattern>org.apache.commons.lang3.**.*</pattern>
                                    <result>com.lexicalscope.jewelcli.internal.lang3.@1.$@2</result>
                                </rule>
                                <rule>
                                    <pattern>org.apache.commons.lang3.*</pattern>
                                    <result>com.lexicalscope.jewelcli.internal.lang3.$@1</result>
                                </rule>
                                <rule>
                                    <pattern>com.lexicalscope.fluentreflection.**.*</pattern>
                                    <result>com.lexicalscope.jewelcli.internal.fluentreflection.@1.$@2</result>
                                </rule>
                                <rule>
                                    <pattern>com.lexicalscope.fluentreflection.*</pattern>
                                    <result>com.lexicalscope.jewelcli.internal.fluentreflection.$@1</result>
                                </rule>
                                <rule>
                                    <pattern>com.lexicalscope.fluent.**.*</pattern>
                                    <result>com.lexicalscope.jewelcli.internal.fluentcollections@1.$@2</result>
                                </rule>
                                <rule>
                                    <pattern>com.lexicalscope.fluent.*</pattern>
                                    <result>com.lexicalscope.jewelcli.internal.fluentcollections.$@1</result>
                                </rule>
                            </rules>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>META-INF/LICENSE</exclude>
                        <exclude>META-INF/NOTICE</exclude>
                        <exclude>META-INF/LICENSE.txt</exclude>
                        <exclude>META-INF/NOTICE.txt</exclude>
                        <exclude>com/google/common/**</exclude>
                    </excludes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>com.github.wvengen</groupId>
                <artifactId>proguard-maven-plugin</artifactId>
                <version>2.0.6</version>
                <executions>
                   <execution>
                       <phase>package</phase>
                       <goals><goal>proguard</goal></goals>
                   </execution>
                </executions>
                <configuration>
                    <options>
                        <option>-allowaccessmodification</option>
                        <option>-dontobfuscate</option>
                        <option>-dontoptimize</option>
                        <option>-dontnote</option>
                        <option>-dontwarn</option>
                        <option>-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod</option>
                        <option>-keep public class uk.co.flamingpenguin.jewel.cli.* { public protected *; }</option>
                        <option>-keepclassmembernames class uk.co.flamingpenguin.jewel.cli.* {
                            java.lang.Class class$(java.lang.String);
                            java.lang.Class class$(java.lang.String, boolean);
                        }</option>
                        <option>-keepclassmembers enum uk.co.flamingpenguin.jewel.cli.* {
                            public static **[] values();
                            public static ** valueOf(java.lang.String);
                        }</option>
                        <option>-keepclassmembers class uk.co.flamingpenguin.jewel.cli.* implements java.io.Serializable {
                            static final long serialVersionUID;
                            private static final java.io.ObjectStreamField[] serialPersistentFields;
                            private void writeObject(java.io.ObjectOutputStream);
                            private void readObject(java.io.ObjectInputStream);
                            java.lang.Object writeReplace();
                            java.lang.Object readResolve();
                        }</option>
                        <option>-keep class com.lexicalscope.jewelcli.internal.fluentreflection.$FluentClass</option>
                        <option>-keep class com.lexicalscope.jewelcli.internal.fluentreflection.$FluentMethod</option>
                        <option>-keep class com.lexicalscope.jewelcli.internal.fluentreflection.FluentReflection</option>
                        <option>-keep class com.lexicalscope.jewelcli.internal.fluentcollections.$FluentDollar</option>
                        <option>-keep interface uk.co.flamingpenguin.jewel.cli.ArgumentValidationException.ValidationError</option>
                        <option>-keep public class com.lexicalscope.jewel.cli.* { public protected *; }</option>
                        <option>-keepclassmembernames class com.lexicalscope.jewel.cli.* {
                            java.lang.Class class$(java.lang.String);
                            java.lang.Class class$(java.lang.String, boolean);
                        }</option>
                        <option>-keepclassmembers enum com.lexicalscope.jewel.cli.* {
                            public static **[] values();
                            public static ** valueOf(java.lang.String);
                        }</option>
                        <option>-keepclassmembers class com.lexicalscope.jewel.cli.* implements java.io.Serializable {
                            static final long serialVersionUID;
                            private static final java.io.ObjectStreamField[] serialPersistentFields;
                            private void writeObject(java.io.ObjectOutputStream);
                            private void readObject(java.io.ObjectInputStream);
                            java.lang.Object writeReplace();
                            java.lang.Object readResolve();
                        }</option>                       
                    </options>
                    <libs>
                        <lib>${java.home}/lib/rt.jar</lib>
                    </libs>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>net.sf.proguard</groupId>
                        <artifactId>proguard-base</artifactId>
                        <version>4.8</version>
                        <scope>runtime</scope>
                    </dependency>
                </dependencies>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-site-plugin</artifactId>              
            </plugin>
            <plugin>
                <groupId>com.github.github</groupId>
                <artifactId>site-maven-plugin</artifactId>
                <version>0.7</version>
                <executions>
                   <execution>
                      <goals>
                         <goal>site</goal>
                      </goals>
                      <phase>site-deploy</phase>
                      <configuration>
                         <message>Creating site for ${project.version}</message>
                         <merge>true</merge>
                      </configuration>
                   </execution>
                </executions>
          </plugin>
        </plugins>
        <pluginManagement>
           <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.6</source>
                        <target>1.6</target>
                    </configuration>
                </plugin>
                <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
                <plugin>
                    <groupId>org.eclipse.m2e</groupId>
                    <artifactId>lifecycle-mapping</artifactId>
                    <version>1.0.0</version>
                    <configuration>
                        <lifecycleMappingMetadata>
                            <pluginExecutions>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.sonatype.plugins</groupId>
                                        <artifactId>jarjar-maven-plugin</artifactId>
                                        <versionRange>[1.5,)</versionRange>
                                        <goals>
                                            <goal>jarjar</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>
                            </pluginExecutions>
                        </lifecycleMappingMetadata>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>
