<?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.
-->
<actions>
        <action>
            <actionName>CUSTOM-update-parents</actionName>
            <displayName>update-parents</displayName>
            <goals>
                <goal>versions:update-parent</goal>
            </goals>
            <properties>
                <allowSnapshots>true</allowSnapshots>
            </properties>
        </action>
        <action>
            <actionName>build</actionName>
            <goals>
                <goal>install</goal>
            </goals>
            <properties>
                <Env.MAVEN_OPTS>-Xmx2g -XX:MaxPermSize=512M</Env.MAVEN_OPTS>
            </properties>
        </action>
        <action>
            <actionName>rebuild</actionName>
            <goals>
                <goal>clean</goal>
                <goal>install</goal>
            </goals>
            <properties>
                <Env.MAVEN_OPTS>-Xmx2g -XX:MaxPermSize=512M</Env.MAVEN_OPTS>
            </properties>
        </action>
        <action>
            <actionName>CUSTOM-use-latests-versions</actionName>
            <displayName>use-latests-versions</displayName>
            <goals>
                <goal>versions:use-latest-versions</goal>
            </goals>
            <properties>
                <includes>org.apache.stanbol</includes>
                <allowSnapshots>true</allowSnapshots>
            </properties>
        </action>
    </actions>
