<?xml version="1.0" encoding="UTF-8"?>
<!-- * Copyright 2001-2009 The Apache Software Foundation. * * Licensed 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.juddi</groupId>
        <artifactId>juddi-parent</artifactId>
        <version>3.3.3-SNAPSHOT</version>
    </parent>
    <artifactId>juddi-gui-dsig</artifactId>
    <name>jUDDI Web Client Digital Signature Applet</name>

    <build>
        <finalName>${artifactId}-${version}</finalName>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
					  <archive>
						<manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
					  </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jarsigner-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>sign</goal>
                        </goals>
                        <phase>package</phase>
                        <configuration>

                            <archive>${project.build.directory}/${artifactId}-${version}-jar-with-dependencies.jar</archive>
                            <keystore>src/main/keystore/signing-jar.keystore</keystore>
                            <alias>applet</alias>
                            <storepass>applet</storepass>
                            <keypass>applet</keypass>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>org.apache.juddi</groupId>
            <artifactId>juddi-client</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
        <!--<dependency>
            <groupId>com.sun.jdk</groupId>
            <artifactId>plugin</artifactId>
            <version>1.6.0</version>
            <type>jar</type>
            <scope>system</scope>
            <systemPath>${java.home}/lib/plugin.jar</systemPath>
        </dependency>-->
    </dependencies>
 <profiles>

    <!-- finagling to deal with plugin.jar not being bundled with OpenJDK -->
    <profile>
      <id>standard-jdk</id>
      <activation>
        <file><exists>${java.home}/lib/plugin.jar</exists></file>
      </activation>
	<dependencies>
         <dependency>
            <groupId>com.sun.jdk</groupId>
            <artifactId>plugin</artifactId>
            <version>1.6.0</version>
            <type>jar</type>
            <scope>system</scope>
            <systemPath>${java.home}/lib/plugin.jar</systemPath>
        </dependency>
    </dependencies>
    </profile>
     <profile>
         <id>standard-with-plugin-in-jre-folder</id>
         <activation>
             <file>
                 <exists>${java.home}/jre/lib/plugin.jar</exists>
             </file>
         </activation>
         <dependencies>
             <dependency>
                 <groupId>com.sun.jdk</groupId>
                 <artifactId>plugin</artifactId>
                 <version>1.6.0</version>
                 <type>jar</type>
                 <scope>system</scope>
                 <systemPath>${java.home}/jre/lib/plugin.jar</systemPath>
             </dependency>
         </dependencies>
     </profile>
    <profile>
      <id>icedtea-web</id>
      <activation>
        <file><exists>/usr/share/icedtea-web/plugin.jar</exists></file>
      </activation>
	<dependencies>
	 <dependency>
            <groupId>com.sun.jdk</groupId>
            <artifactId>plugin</artifactId>
            <version>1.6.0</version>
            <type>jar</type>
            <scope>system</scope>
            <systemPath>/usr/share/icedtea-web/plugin.jar</systemPath>
        </dependency>
	</dependencies>
    </profile>
  </profiles>
</project>
