<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>packaging</artifactId>
  <name>OpenRefine - packaging</name>
  <description>Creates packages for all supported operating systems</description>
  <url>http://openrefine.org/</url>

  <parent>
    <groupId>org.openrefine</groupId>
    <artifactId>openrefine</artifactId>
    <version>3.3-SNAPSHOT</version>
  </parent>
  <properties>
    <rootdir>${basedir}/..</rootdir>
    <fullversion>0.0.0.0</fullversion>
    <built.webapp.dir>./target/OpenRefine.app/Contents/Resources/webapp/</built.webapp.dir>
    <webapp.dir>../main/webapp</webapp.dir>
    <webapp.target>../main/target</webapp.target>
    <icon.path>../graphics/icon/openrefine.icns</icon.path>
    <mac.jre.path>/opt/jre1.8.0_181.jre</mac.jre.path>
  </properties>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-install-plugin</artifactId>
        <version>2.5.2</version>
        <executions>
            <!-- This is a clean snapshot of launch4j's master branch,
                which includes fixes to Java discovery that we need
                to support recent versions of Java. When launch4j-3.13
                is officially released, remove this and the locally stored
                jars -->
            <execution>
                <id>install-launch4j-core</id>
                <phase>process-resources</phase>
                <configuration>
                    <file>${basedir}/lib-local/launch4j-3.13-SNAPSHOT-core.jar</file>
                    <repositoryLayout>default</repositoryLayout>
                    <groupId>net.sf.launch4j</groupId>
                    <artifactId>launch4j</artifactId>
                    <classifier>core</classifier>
                    <version>3.13-SNAPSHOT</version>
                    <packaging>jar</packaging>
                    <generatePom>true</generatePom>
                </configuration>
                <goals>
                    <goal>install-file</goal>
                </goals>
            </execution>
            <execution>
                <id>install-launch4j-linux64</id>
                <phase>process-resources</phase>
                <configuration>
                    <file>${basedir}/lib-local/launch4j-3.13-SNAPSHOT-workdir-linux64.jar</file>
                    <repositoryLayout>default</repositoryLayout>
                    <groupId>net.sf.launch4j</groupId>
                    <artifactId>launch4j</artifactId>
                    <classifier>workdir-linux64</classifier>
                    <version>3.13-SNAPSHOT</version>
                    <packaging>jar</packaging>
                    <generatePom>true</generatePom>
                </configuration>
                <goals>
                    <goal>install-file</goal>
                </goals>
            </execution>
            <execution>
                <id>install-launch4j-linux</id>
                <phase>process-resources</phase>
                <configuration>
                    <file>${basedir}/lib-local/launch4j-3.13-SNAPSHOT-workdir-linux.jar</file>
                    <repositoryLayout>default</repositoryLayout>
                    <groupId>net.sf.launch4j</groupId>
                    <artifactId>launch4j</artifactId>
                    <classifier>workdir-linux</classifier>
                    <version>3.13-SNAPSHOT</version>
                    <packaging>jar</packaging>
                    <generatePom>true</generatePom>
                </configuration>
                <goals>
                    <goal>install-file</goal>
                </goals>
            </execution>
            <execution>
                <id>install-launch4j-win32</id>
                <phase>process-resources</phase>
                <configuration>
                    <file>${basedir}/lib-local/launch4j-3.13-SNAPSHOT-workdir-win32.jar</file>
                    <repositoryLayout>default</repositoryLayout>
                    <groupId>net.sf.launch4j</groupId>
                    <artifactId>launch4j</artifactId>
                    <classifier>workdir-win32</classifier>
                    <version>3.13-SNAPSHOT</version>
                    <packaging>jar</packaging>
                    <generatePom>true</generatePom>
                </configuration>
                <goals>
                    <goal>install-file</goal>
                </goals>
            </execution>
            <execution>
                <id>install-launch4j-mac</id>
                <phase>process-resources</phase>
                <configuration>
                    <file>${basedir}/lib-local/launch4j-3.13-SNAPSHOT-workdir-mac.jar</file>
                    <repositoryLayout>default</repositoryLayout>
                    <groupId>net.sf.launch4j</groupId>
                    <artifactId>launch4j</artifactId>
                    <classifier>workdir-mac</classifier>
                    <version>3.13-SNAPSHOT</version>
                    <packaging>jar</packaging>
                    <generatePom>true</generatePom>
                </configuration>
                <goals>
                    <goal>install-file</goal>
                </goals>
            </execution>


        </executions>
      </plugin>
      <plugin> <!-- necessary for launch4j -->
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.4</version>
        <executions>
          <execution>
            <phase>generate-test-resources</phase>
            <configuration>

              <tasks>
                <mkdir dir="./target/"/>

                <mkdir dir="${built.webapp.dir}" />
                    
                    <copy todir="${built.webapp.dir}">
                        <fileset dir="${webapp.dir}">
                            <include name="**/*"/>
                            <exclude name="WEB-INF/classes/**"/>
                            <exclude name="WEB-INF/lib-local/**"/>
                            <exclude name="WEB-INF/lib-local-src/**"/>
                            <exclude name="WEB-INF/lib/icu4j*.jar"/>
                        </fileset>
                    </copy>
                    <copy todir="${built.webapp.dir}">
                        <fileset dir="${webapp.dir}">
                            <include name="**/*.properties"/>
                        </fileset>
                    </copy>
                    <copy todir="${built.webapp.dir}/WEB-INF/lib/">
                        <fileset dir="${webapp.target}">
                            <include name="openrefine-main.jar" />
                        </fileset>
                    </copy>
                    
                    <!-- <copy file="../server/target/openrefine-${project.version}-server.jar" tofile="${built.webapp.dir}/WEB-INF/lib/openrefine-${project.version}.jar"/> -->

                    <copy todir="${built.webapp.dir}/extensions">
                        <fileset dir="../extensions">
                            <include name="**/*"/>
                            <exclude name="**/pom.xml"/>
                            <exclude name="**/src/**"/>
                            <exclude name="**/lib-local/**"/>
                            <exclude name="**/lib-local-src/**"/>
                            <exclude name="**/target/**" />
                            <exclude name="**/tests/**" />
                            <exclude name="**/*.java"/>
                            <exclude name="**/.settings/**" />
                            <exclude name="**/.project" />
                        </fileset>
                    </copy>
                    
                    <replace file="${built.webapp.dir}/WEB-INF/web.xml">
                        <replacefilter token="$VERSION" value="${version}"/>
                    </replace>

                    <replace file="${built.webapp.dir}/WEB-INF/butterfly.properties">
                        <replacefilter token="../../extensions" value="extensions"/>
                    </replace>

              </tasks>

            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>com.akathist.maven.plugins.launch4j</groupId>
        <artifactId>launch4j-maven-plugin</artifactId>
        <version>1.7.25</version>

            <!-- This is a clean snapshot of launch4j's master branch,
                which includes fixes to Java discovery that we need
                to support recent versions of Java.
                When the maven plugin is updated to use launch4j-3.13,
                this can be removed. -->
        <dependencies>
          <dependency>
            <groupId>net.sf.launch4j</groupId>
            <artifactId>launch4j</artifactId>
            <classifier>core</classifier>
            <version>3.13-SNAPSHOT</version>
          </dependency>
          <dependency>
            <groupId>com.thoughtworks.xstream</groupId>
            <artifactId>xstream</artifactId>
          <version>1.4.9</version>
        </dependency>
        </dependencies>
        <executions>
          <execution>
            <id>l4j-clui</id>
            <phase>package</phase>
            <goals><goal>launch4j</goal></goals>
            <configuration>
              <headerType>console</headerType>
              <outfile>target/openrefine.exe</outfile>
              <jar>server/target/lib/openrefine-${project.version}-server.jar</jar>
              <dontWrapJar>true</dontWrapJar>
              <saveConfig>true</saveConfig>
              <icon>openrefine.ico</icon>
              <classPath>
                <mainClass>com.google.refine.Refine</mainClass>
                <jarLocation>server/target/lib/</jarLocation>
                <postCp>server/target/lib/*.jar</postCp>
              </classPath>
              <jre>
                <path>%JAVA_HOME%;%PATH%</path>
                <minVersion>1.8.0</minVersion>
                <bundledJreAsFallback>true</bundledJreAsFallback>
                <initialHeapSize>512</initialHeapSize>
                <maxHeapSize>2048</maxHeapSize>
                <opts>
                  <opt>-Djava.library.path=server/target/lib/native/windows</opt>
                </opts>
              </jre>
              <versionInfo>
                <fileVersion>${fullversion}</fileVersion>
                <txtFileVersion>${project.version}</txtFileVersion>
                <fileDescription>openrefine</fileDescription>
                <copyright>Copyright (c) 2018 OpenRefine contributors, 2010 Google, Inc.</copyright>
                <productVersion>${fullversion}</productVersion>
                <txtProductVersion>${project.version}</txtProductVersion>
                <productName>OpenRefine</productName>
                <internalName>openrefine</internalName>
                <originalFilename>openrefine.exe</originalFilename>
              </versionInfo>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>sh.tak.appbundler</groupId>
        <artifactId>appbundle-maven-plugin</artifactId>
        <version>1.2.0</version>
        <dependencies>
          <dependency>
            <groupId>org.codehaus.plexus</groupId>
            <artifactId>plexus-archiver</artifactId>
            <version>4.0.0</version>
          </dependency>
          <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-tools</artifactId>
            <version>2.0</version>
          </dependency>
        </dependencies>
        <configuration>
          <mainClass>com.google.refine.Refine</mainClass>
          <bundleName>OpenRefine</bundleName>
          <buildDirectory>target/OpenRefine ${version}</buildDirectory>
          <iconFile>${icon.path}</iconFile>
          <generateDiskImageFile>true</generateDiskImageFile>
          <diskImageFile>${project.build.directory}/${project.build.finalName}-mac-${project.version}.dmg</diskImageFile>
          <jvmVersion>1.8</jvmVersion>
          <jrePath>${mac.jre.path}</jrePath>
          <jvmOptions>
            <param>-Xms512M</param>
            <param>-Xmx2048M</param>
            <param>-Drefine.version=${project.version}</param>
            <param>-Drefine.webapp=$APP_ROOT/Contents/Resources/webapp</param>
          </jvmOptions>
          <additionalResources>
            <fileSet>
              <directory>target</directory>
              <includes>
                <include>OpenRefine.app/Contents/Resources/webapp/**/**</include>
              </includes>
            </fileSet>
          </additionalResources>
          <additionalBundledClasspathResources>
            <fileSet>
              <directory>${rootdir}/server/target/lib/</directory>
              <includes>
                <include>*.jar</include>
              </includes>
            </fileSet>
            <fileSet>
              <directory>${rootdir}/server/target</directory>
              <includes>
                <include>openrefine-${version}-server.jar</include>
              </includes>
              <excludes>
                <exclude>**/lib/**</exclude>
                <exclude>**/org/**</exclude>
              </excludes>
            </fileSet>
          </additionalBundledClasspathResources>
        </configuration>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>bundle</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-assembly-plugin</artifactId>
	<version>3.1.0</version>
	<executions>
	  <execution>
	    <id>package-distributions</id>
	    <goals>
	      <goal>single</goal>
	    </goals>
	    <phase>package</phase>
	    <configuration>
	      <descriptors>
		<descriptor>linux.xml</descriptor>
		<descriptor>windows.xml</descriptor>
	      </descriptors>
	    </configuration>
	  </execution>
	</executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.22.0</version>
        <configuration>
          <skip>true</skip>
        </configuration>
      </plugin>

    </plugins>
    <pluginManagement>
    	<plugins>
    		<!--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.apache.maven.plugins
    								</groupId>
    								<artifactId>
    									maven-antrun-plugin
    								</artifactId>
    								<versionRange>[1.4,)</versionRange>
    								<goals>
    									<goal>run</goal>
    								</goals>
    							</pluginExecutionFilter>
    							<action>
    								<ignore></ignore>
    							</action>
    						</pluginExecution>
    					</pluginExecutions>
    				</lifecycleMappingMetadata>
    			</configuration>
    		</plugin>
    	</plugins>
    </pluginManagement>
  </build>
  <dependencies>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>server</artifactId>
      <version>${project.version}</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>
</project>