<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>com.atlassian.crowd</groupId>
        <artifactId>crowd-user-management</artifactId>
        <version>3.0.16-D20140728T050435</version>
    </parent>

    <artifactId>horde-user-management-web-app</artifactId>

    <packaging>war</packaging>

    <name>Atlassian Horde User Management Web Application</name>

    <properties>
        <umplugin.directory>${project.build.directory}/um-plugin</umplugin.directory>
        <resources.directory>${project.build.directory}/resources</resources.directory>
        <webinf.directory>${resources.directory}/WEB-INF/classes</webinf.directory>
        <static.resources.directory>${resources.directory}/um</static.resources.directory>
        <!-- Bootstrap template parameters -->
        <bootstrap.applicationName>User Management</bootstrap.applicationName>
        <bootstrap.logoutUrl>/logout</bootstrap.logoutUrl>
    </properties>

    <dependencies>
        <dependency>
            <groupId>com.atlassian.crowd</groupId>
            <artifactId>horde-web-app</artifactId>
            <version>${crowd.version}</version>
            <type>war</type>
        </dependency>
        <dependency>
            <groupId>com.atlassian.crowd</groupId>
            <artifactId>crowd-user-management-plugin</artifactId>
            <type>jar</type> <!-- originally a bundle -->
        </dependency>
        <dependency>
            <groupId>com.atlassian.crowd</groupId>
            <artifactId>unified-admin-chrome</artifactId>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>com.atlassian.crowd</groupId>
            <artifactId>global-admin-billing</artifactId>
            <type>war</type>
        </dependency>
    </dependencies>

    <profiles>
        <!-- Don't re-run the acceptance tests in release:perform -->
        <profile>
            <id>release</id>
            <properties>
                <skipTests>true</skipTests>
            </properties>
        </profile>
        <profile>
            <id>ide</id>
            <dependencies>
                <dependency>
                    <groupId>hsqldb</groupId>
                    <artifactId>hsqldb</artifactId>
                    <version>1.8.0.10</version>
                    <scope>runtime</scope>
                </dependency>
            </dependencies>
            <build>
                <plugins>
                    <plugin>
                        <!-- you can run Horde using: mvn -Pide jetty:run -->
                        <groupId>org.eclipse.jetty</groupId>
                        <artifactId>jetty-maven-plugin</artifactId>
                        <version>9.2.1.v20140609</version> <!-- requires Java 7 -->
                        <configuration>
                            <webApp>
                                <contextPath>/crowd</contextPath>
                            </webApp>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <overlays>
                        <overlay>
                            <groupId>com.atlassian.crowd</groupId>
                            <artifactId>horde-web-app</artifactId>
                        </overlay>
                    </overlays>
                    <warSourceDirectory>${resources.directory}</warSourceDirectory>
                </configuration>
            </plugin>

            <!-- Extract aui and crowd-user-management-plugin so we can refer to the soy templates and js files -->
            <plugin>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>unpack</id>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>unpack</goal>
                        </goals>
                        <configuration>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>com.atlassian.aui</groupId>
                                    <artifactId>auiplugin</artifactId>
                                    <version>${aui.version}</version>
                                    <type>jar</type>
                                    <overWrite>false</overWrite>
                                    <outputDirectory>${webinf.directory}/aui-soy</outputDirectory>
                                    <includes>**/*.soy</includes>
                                </artifactItem>
                                <artifactItem>
                                    <groupId>com.atlassian.crowd</groupId>
                                    <artifactId>crowd-user-management-plugin</artifactId>
                                    <version>${project.version}</version>
                                    <type>jar</type>
                                    <overWrite>true</overWrite>
                                    <outputDirectory>${umplugin.directory}</outputDirectory>
                                </artifactItem>
                                <artifactItem>
                                    <groupId>com.atlassian.analytics</groupId>
                                    <artifactId>analytics-client</artifactId>
                                    <version>${atlassian.analytics.version}</version>
                                    <type>jar</type>
                                    <overWrite>false</overWrite>
                                    <outputDirectory>${project.build.directory}/analytics-js</outputDirectory>
                                    <includes>**/*.js</includes>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-resources</id>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${resources.directory}</outputDirectory>
                            <resources>
                                <resource>
                                    <directory>${project.basedir}/src/main/webapp</directory>
                                    <filtering>false</filtering>
                                </resource>
                                <resource>
                                    <directory>${umplugin.directory}/</directory>
                                    <targetPath>${static.resources.directory}</targetPath>
                                    <filtering>false</filtering>
                                    <includes>
                                        <include>images/*</include>
                                    </includes>
                                </resource>
                                <resource>
                                    <directory>${project.basedir}</directory>
                                    <targetPath>${project.build.directory}</targetPath>
                                    <filtering>true</filtering>
                                    <includes>
                                        <include>horde-web-app-pom.xml</include>
                                    </includes>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>com.atlassian.maven.plugins</groupId>
                <artifactId>soy-to-js-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>generate-js-from-soy</id>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/flatpack/soy/</outputDirectory>
                            <resources>
                                <directory>${umplugin.directory}/template/</directory>
                                <includes>
                                    <include>**/*.soy</include>
                                </includes>
                                <excludes>
                                    <exclude>**/bootstrapStandalone.soy</exclude>
                                </excludes>
                            </resources>
                            <propertiesFile>${umplugin.directory}/com/atlassian/crowd/plugin/usermanagement/servlet/AtlassianPlugin.properties</propertiesFile>
                            <module>com.atlassian.crowd.plugin.usermanagement.soy.UserManagementModule</module>
                        </configuration>
                    </execution>
                </executions>
                <dependencies>
                    <dependency>
                        <groupId>com.atlassian.crowd</groupId>
                        <artifactId>user-management-soy</artifactId>
                        <version>${project.version}</version>
                        <scope>runtime</scope>
                    </dependency>
                    <dependency>
                        <groupId>com.atlassian.crowd</groupId>
                        <artifactId>crowd-user-management-plugin</artifactId>
                        <version>${project.version}</version>
                        <scope>runtime</scope>
                    </dependency>
                    <dependency>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-api</artifactId>
                        <version>${slf4j.version}</version>
                        <scope>runtime</scope>
                    </dependency>
                    <dependency>
                        <groupId>com.atlassian.soy</groupId>
                        <artifactId>soy-template-plugin</artifactId>
                        <version>${atlassian.soy.template.version}</version>
                        <scope>runtime</scope>
                    </dependency>
                </dependencies>
            </plugin>

            <plugin>
                <groupId>com.atlassian.lesscss</groupId>
                <artifactId>lesscss-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>compile-less</id>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                        <configuration>
                            <sourceDirectory>${umplugin.directory}/css</sourceDirectory>
                            <outputDirectory>${umplugin.directory}/css</outputDirectory>
                            <suffix>.css</suffix>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <!-- Create directories -->
            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <executions>
                    <execution>
                        <id>create-aui-flatpack-structure</id>
                        <phase>generate-resources</phase>
                        <configuration>
                            <target>
                                <mkdir dir="${static.resources.directory}/js" />
                            </target>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- Convert properties file to JS -->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>convert-properties-to-js</id>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>java</goal>
                        </goals>
                        <configuration>
                            <mainClass>com.atlassian.crowd.plugin.usermanagement.soy.Properties2JS</mainClass>
                            <arguments>
                                <argument>${umplugin.directory}/com/atlassian/crowd/plugin/usermanagement/servlet/AtlassianPlugin.properties</argument>
                                <argument>${static.resources.directory}/js/user-management-i18n.js</argument>
                            </arguments>
                            <!-- We only want the dependencies we specify below -->
                            <includePluginDependencies>true</includePluginDependencies>
                            <includeProjectDependencies>false</includeProjectDependencies>
                        </configuration>
                    </execution>
                </executions>
                <dependencies>
                    <dependency>
                        <groupId>com.atlassian.crowd</groupId>
                        <artifactId>user-management-soy</artifactId>
                        <version>${project.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>com.google.guava</groupId>
                        <artifactId>guava</artifactId>
                        <version>${guava.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>com.atlassian.aui</groupId>
                        <artifactId>auiplugin</artifactId>
                        <version>${aui.version}</version>
                    </dependency>
                </dependencies>
            </plugin>
            <!--START - Minification -->
            <plugin>
                <groupId>net.alchim31.maven</groupId>
                <artifactId>yuicompressor-maven-plugin</artifactId>
                <version>1.4.0</version>
                <executions>
                    <execution>
                        <id>minify-flatpack</id>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>compress</goal>
                        </goals>
                        <configuration>
                            <sourceDirectory>${project.build.directory}/flatpack/soy/</sourceDirectory>
                            <outputDirectory>${project.build.directory}/flatpack/soy/</outputDirectory>
                            <!-- Everything on one line -->
                            <linebreakpos>-1</linebreakpos>
                            <!-- Turning off JSlint warnings -->
                            <jswarn>false</jswarn>
                            <excludes>
                                <exclude>*.xml</exclude>
                                <exclude>**/src/test/*</exclude>
                                <exclude>**/src/samples/*</exclude>
                                <!-- exclude external libraries which only provide minified versions -->
                                <exclude>**/html5.js</exclude>
                            </excludes>
                            <aggregations>
                                <!-- JS -->
                                <aggregation>
                                    <!-- This concatenate all the files into one big file -->
                                    <!-- Right now we use the non-minified files. I think the amps plugin already minifies
                                         all the resources, so we should probably use those instead... -->
                                    <insertNewLine>true</insertNewLine>
                                    <output>${static.resources.directory}/js/user-management.js</output>
                                    <includes>
                                        <include>${project.build.directory}/flatpack/soy/bootstrap-common.soy-min.js</include>
                                        <include>${project.build.directory}/flatpack/soy/bootstrap.soy-min.js</include>
                                        <include>${project.build.directory}/flatpack/soy/groups.soy-min.js</include>
                                        <include>${project.build.directory}/flatpack/soy/users.soy-min.js</include>
                                        <include>${project.build.directory}/flatpack/soy/predelete.soy-min.js</include>
                                        <include>${project.build.directory}/flatpack/soy/app-access.soy-min.js</include>
                                        <include>${project.build.directory}/flatpack/soy/UMForms.soy-min.js</include>
                                        <include>${project.build.directory}/flatpack/soy/util.soy-min.js</include>
                                        <include>${project.build.directory}/flatpack/soy/appswitcher.soy-min.js</include>
                                        <include>${project.build.directory}/flatpack/soy/sidebar-entry.soy-min.js</include>
                                        <include>${project.build.directory}/flatpack/soy/signup.soy-min.js</include>
                                        <include>${umplugin.directory}/js/lib/history.adapter.jquery-min.js</include>
                                        <include>${umplugin.directory}/js/lib/history.html4-min.js</include>
                                        <include>${umplugin.directory}/js/lib/history-min.js</include>
                                        <include>${umplugin.directory}/js/lib/sherpa-min.js</include>
                                        <include>${umplugin.directory}/js/lib/arg.js</include>
                                        <include>${umplugin.directory}/js/lib/doppelganger-min.js</include>
                                        <include>${umplugin.directory}/js/lib/arg-min.js</include>
                                        <include>${umplugin.directory}/js/lib/moment-min.js</include>
                                        <include>${umplugin.directory}/js/lib/uuid-min.js</include>
                                        <!-- controllers -->
                                        <include>${umplugin.directory}/js/atlassian/controllers/UMDataTable-min.js</include>
                                        <include>${umplugin.directory}/js/atlassian/controllers/UMForm-min.js</include>
                                        <include>${umplugin.directory}/js/atlassian/controllers/UMFlashData-min.js</include>
                                        <include>${umplugin.directory}/js/atlassian/controllers/UMFlashMessage-min.js</include>
                                        <include>${umplugin.directory}/js/atlassian/controllers/UMModal-min.js</include>
                                        <!-- common -->
                                        <include>${umplugin.directory}/js/atlassian/common/manipulation-min.js</include>
                                        <include>${umplugin.directory}/js/atlassian/common/util-min.js</include>
                                        <!-- helpers -->
                                        <include>${umplugin.directory}/js/atlassian/helpers/routing-min.js</include>
                                        <include>${umplugin.directory}/js/atlassian/helpers/error-min.js</include>
                                        <include>${umplugin.directory}/js/atlassian/helpers/memoize-min.js</include>
                                        <include>${umplugin.directory}/js/atlassian/helpers/analytics-min.js</include>
                                        <include>${umplugin.directory}/js/atlassian/helpers/select2-min.js</include>
                                        <include>${umplugin.directory}/js/atlassian/helpers/groups-min.js</include>
                                        <include>${umplugin.directory}/js/atlassian/helpers/users-min.js</include>
                                        <include>${umplugin.directory}/js/atlassian/helpers/ajax-min.js</include>
                                        <include>${umplugin.directory}/js/atlassian/helpers/template-min.js</include>
                                        <include>${umplugin.directory}/js/atlassian/helpers/tooltips-min.js</include>
                                        <include>${umplugin.directory}/js/atlassian/helpers/applicationDataMappers-min.js</include>
                                        <!-- filters -->
                                        <include>${umplugin.directory}/js/atlassian/filters/sidebarFilter-min.js</include>
                                        <include>${umplugin.directory}/js/atlassian/filters/flashMessageFilter-min.js</include>
                                        <include>${umplugin.directory}/js/atlassian/filters/focusedTaskFilter-min.js</include>
                                        <include>${umplugin.directory}/js/atlassian/filters/crowdFilter-min.js</include>
                                        <!-- routes -->
                                        <include>${umplugin.directory}/js/atlassian/routes/groups-min.js</include>
                                        <include>${umplugin.directory}/js/atlassian/routes/users-min.js</include>
                                        <include>${umplugin.directory}/js/atlassian/routes/users/messages-min.js</include>
                                        <include>${umplugin.directory}/js/atlassian/routes/users/messages/license-min.js</include>
                                        <include>${umplugin.directory}/js/atlassian/routes/users/messages/renderer-min.js</include>
                                        <include>${umplugin.directory}/js/atlassian/routes/users/messages/tiers-min.js</include>
                                        <include>${umplugin.directory}/js/atlassian/routes/app-access-min.js</include>
                                        <include>${umplugin.directory}/js/atlassian/routes/signup-min.js</include>
                                        <!-- feedback -->
                                        <include>${umplugin.directory}/js/atlassian/jira-issue-collector-min.js</include>
                                        <!-- analytics -->
                                        <include>${umplugin.directory}/js/atlassian/events-min.js</include>
                                        <!-- app -->
                                        <include>${umplugin.directory}/js/atlassian/app-min.js</include>
                                    </includes>
                                </aggregation>
                                <aggregation>
                                    <insertNewLine>true</insertNewLine>
                                    <output>${static.resources.directory}/js/atlassian-analytics-all.js</output>
                                    <inputDir>${project.build.directory}/analytics-js/js</inputDir>
                                    <includes>
                                        <include>store-1.3.1-min.js</include>
                                        <include>atlassian-analytics-min.js</include>
                                    </includes>
                                </aggregation>
                                <!-- CSS -->
                                <aggregation>
                                    <!-- This concatenate all the files into one big file -->
                                    <!-- Right now we use the non-minified files. I think the amps plugin already minifies
                                         all the resources, so we should probably use those instead... -->
                                    <insertNewLine>true</insertNewLine>
                                    <output>${static.resources.directory}/css/user-management-all.css</output>
                                    <includes>
                                        <include>${umplugin.directory}/css/user-management.css</include>
                                        <include>${umplugin.directory}/css/appswitcher.css</include>
                                    </includes>
                                </aggregation>
                            </aggregations>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-install-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>install</phase>
                        <goals>
                            <goal>install-file</goal>
                        </goals>
                        <configuration>
                            <file>${project.build.directory}/${project.build.finalName}.${project.packaging}</file>
                            <pomFile>${project.build.directory}/horde-web-app-pom.xml</pomFile>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
