<?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.chemistry.opencmis</groupId>
        <artifactId>chemistry-opencmis</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <relativePath>../../pom.xml</relativePath>
    </parent>

    <artifactId>chemistry-opencmis-workbench</artifactId>
    <name>OpenCMIS Workbench</name>
    <packaging>jar</packaging>

    <properties>
        <parentBasedir>../../</parentBasedir>
    </properties>

    <build>
        <resources>
          <resource>
            <directory>${basedir}/src/main/resources</directory>
          </resource>
          <resource>
            <directory>${project.build.directory}/generated-resources</directory>
          </resource>
        </resources>
        <pluginManagement>
            <plugins>
                <plugin>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>2.2-beta-5</version>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <inherited>true</inherited>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <target>${maven.compile.target}</target>
                    <source>${maven.compile.source}</source>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <inherited>true</inherited>
                <artifactId>maven-source-plugin</artifactId>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals>
                            <goal>jar-no-fork</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <includePom>true</includePom>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <encoding>UTF-8</encoding>
                    <filtering>false</filtering>
                </configuration>
            </plugin>
            <plugin>
                 <artifactId>maven-antrun-plugin</artifactId>
                 <executions>
                     <execution>
                         <phase>generate-resources</phase>
                         <configuration>
                             <target>
                                 <property name="version" value="${maven.version}" />
                                 <property name="timestamp" value="${timestamp}" />
                                 <property name="revision" value="${buildNumber}" />
                                 <property name="basedir" value="${maven.basedir}" />
                                 <property name="targetdir" value="${project.build.directory}" />
                                 <property name="workbench.jar" value="${project.artifactId}-${project.version}.${project.packaging}" />
                                 
                                 <!-- build timestamp -->
                                 <echo file="${targetdir}/generated-resources/META-INF/build-timestamp.txt">Version: ${project.version} / Revision: ${revision} / Build: ${timestamp}</echo>
                                 
                                 <!-- start scripts -->
                                 <mkdir dir="${targetdir}/start" />
                                 <copy todir="${targetdir}/start" overwrite="true">
                                     <fileset dir="${basedir}/src/main/start" />
                                 </copy>
                                 <replace dir="${targetdir}/start">
                                     <replacefilter token="@workbench.jar@" value="${workbench.jar}" />
                                     <replacefilter token="@version@" value="Version: ${project.version} / Revision: ${revision} / Build: ${timestamp}" />
                                     <replacefilter token="@versionnumber@" value="${project.version}" />
                                 </replace>
                                 <chmod dir="${targetdir}/start" perm="+x" includes="**/*.sh" />
                             </target>
                         </configuration>
                         <goals>
                             <goal>run</goal>
                         </goals>
                     </execution>
                 </executions>
            </plugin>                  
            <plugin>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <addMavenDescriptor>false</addMavenDescriptor>
                        <manifest>
                            <mainClass>org.apache.chemistry.opencmis.workbench.Workbench</mainClass>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix />
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <executions>
                    <execution>
                        <id>pack-workbench</id>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <phase>package</phase>
                        <configuration>
                            <attach>true</attach>
                            <descriptors>
                                <descriptor>src/main/assembly/workbench-assembly.xml</descriptor>
                            </descriptors>
                        </configuration>
                    </execution>
                    <execution>
                        <id>mac-workbench</id>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <phase>package</phase>
                        <configuration>
                            <attach>true</attach>
                            <finalName>CMIS Workbench ${project.version}.app</finalName>
                            <appendAssemblyId>false</appendAssemblyId>
                            <descriptors>
                                <descriptor>
                                  src/main/assembly/workbench-mac-assembly.xml
                                </descriptor>  
                            </descriptors>
                        </configuration>
                     </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo.webstart</groupId>
                <artifactId>webstart-maven-plugin</artifactId>
                <version>1.0-beta-1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>jnlp-inline</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <libPath>lib</libPath>
                    <jnlp>
                        <mainClass>org.apache.chemistry.opencmis.workbench.Workbench</mainClass>
                    </jnlp>
                    <pack200>true</pack200>
                    <gzip>true</gzip>

                    <sign>
                        <keystore>${project.build.directory}/keystore</keystore>
                        <keypass>password</keypass>
                        <storepass>password</storepass>
                        <alias>webstart</alias>

                        <validity>365</validity>
                        <dnameCn>OpenCMIS Development Team</dnameCn>
                        <dnameOu>Apache Chemistry OpenCMIS</dnameOu>
                        <dnameO>The Apache Software Foundation</dnameO>

                        <verify>true</verify>

                        <keystoreConfig>
                            <delete>true</delete>
                            <gen>true</gen>
                        </keystoreConfig>
                    </sign>

                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>chemistry-opencmis-client-impl</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>chemistry-opencmis-test-tck</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-all</artifactId>
            <version>2.4.7</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>${log4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
            <version>${log4j.version}</version>
        </dependency>
        <dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>javase</artifactId>
            <version>3.2.1</version>
        </dependency>
        <!-- CXF -->
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-databinding-jaxb</artifactId>
            <version>${cxf.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-jaxws</artifactId>
            <version>${cxf.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http</artifactId>
            <version>${cxf.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-ws-policy</artifactId>
            <version>${cxf.version}</version>
        </dependency>
        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>${okhttp.version}</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>


    <!--
        Extending the default -Papache-release profile used *only*
        during releases
    -->
    <profiles>
       <profile>
           <id>apache-release</id>
           <activation>
               <activeByDefault>false</activeByDefault>
           </activation>
           <build>
               <plugins>
                   <plugin>
                      <artifactId>maven-assembly-plugin</artifactId>
                      <inherited>false</inherited>
                      <executions>
                          <execution>
                              <id>pack-workbench</id>
                              <goals>
                                  <goal>single</goal>
                              </goals>
                              <phase>package</phase>
                              <configuration>
                                  <attach>true</attach>
                                  <descriptors>
                                      <descriptor>
                                        src/main/assembly/workbench-assembly.xml
                                      </descriptor>
                                  </descriptors>
                              </configuration>
                          </execution>
                      </executions>
                  </plugin>
              </plugins>
           </build>
       </profile>
   </profiles>
</project>
