You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by at...@apache.org on 2005/08/08 23:24:39 UTC

svn commit: r230896 [2/3] - in /portals/jetspeed-2/trunk: ./ maven-plugin/ maven-plugin/src/plugin-resources/

Modified: portals/jetspeed-2/trunk/maven-plugin/plugin.jelly
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/maven-plugin/plugin.jelly?rev=230896&r1=230895&r2=230896&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/maven-plugin/plugin.jelly (original)
+++ portals/jetspeed-2/trunk/maven-plugin/plugin.jelly Mon Aug  8 14:24:27 2005
@@ -13,887 +13,787 @@
     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 default="java:jar" xmlns:j="jelly:core" xmlns:define="jelly:define" xmlns:maven="jelly:maven"
-    xmlns:ant="jelly:ant" xmlns:util="jelly:util">
-    
-    <!-- ======================================== -->
-	<!-- ============== Settings ============== -->
-	<!-- ======================================== -->
-
-	<goal name="j2:check.required.properties" description="Check if the required properties are defined">
-        <fail
-            message="Required property org.apache.jetspeed.portal.name undefined. See http://portals.apache.org/jetspeed-2/getting-started.html."
-            unless="org.apache.jetspeed.portal.name" />
-        <fail
-            message="Required property org.apache.jetspeed.server.home undefined. See http://portals.apache.org/jetspeed-2/getting-started.html."
-            unless="org.apache.jetspeed.server.home" />
-        <fail
-            message="Required property org.apache.jetspeed.catalina.version.major undefined. See http://portals.apache.org/jetspeed-2/getting-started.html."
-            unless="org.apache.jetspeed.catalina.version.major" />
-        <fail
-            message="Required property org.apache.jetspeed.server.shared undefined. See http://portals.apache.org/jetspeed-2/getting-started.html."
-            unless="org.apache.jetspeed.server.shared" />
-        <fail
-            message="Required property org.apache.jetspeed.deploy.war.dir undefined. See http://portals.apache.org/jetspeed-2/getting-started.html."
-            unless="org.apache.jetspeed.deploy.war.dir" />
-        <fail
-            message="Required property org.apache.jetspeed.services.autodeployment.user undefined. See http://portals.apache.org/jetspeed-2/getting-started.html."
-            unless="org.apache.jetspeed.services.autodeployment.user" />
-        <fail
-            message="Required property org.apache.jetspeed.services.autodeployment.password undefined. See http://portals.apache.org/jetspeed-2/getting-started.html."
-            unless="org.apache.jetspeed.services.autodeployment.password" />     
-        
-    </goal>
-	
-	<!-- ======================================== -->
-	<!-- ============== DEPLOYMENT ============== -->
-	<!-- ======================================== -->
-
-    <goal name="j2:deploy">
-        <copy file="${maven.repo.local}/${jetspeed.groupId}/wars/${maven.war.final.name}-${jetspeed.version}.war"
-            tofile="${org.apache.jetspeed.portal.dir}/WEB-INF/deploy/${maven.war.final.name}.war"
-            overwrite="true" failonerror="true" />
-    </goal>
-
-    <goal name="j2:undeploy">
-        <delete file="${org.apache.jetspeed.portal.dir}/WEB-INF/deploy/${maven.war.final.name}.war" />
-    </goal>
-
-	<!-- ================================================= -->
-	<!-- ============== DATABASE MANAGEMENT ============== -->
-	<!-- ================================================= -->
-
-    <goal name="j2:start.production.server">
-    	<j:set var="maven.start.hsql.message" value="Production/Deployment Database" />
-    	<j:set var="org.apache.jetspeed.plugin.hsql.db" value="${org.apache.jetspeed.plugin.root}/plugin-resources/database/hsql/Production" />
-    	<attainGoal name="j2:start.hsql" />
-    </goal>
-    
-    <goal name="j2:start.test.server">
-    	<j:set var="maven.start.hsql.message" value="Testing Database" />
-    	<j:set var="org.apache.jetspeed.plugin.hsql.db" value="${org.apache.jetspeed.plugin.root}/plugin-resources/database/hsql/Test" />
-    	<attainGoal name="j2:start.hsql" />
-    </goal>
-    
-    <goal name="j2:start.hsql">
-        <echo message="====================================" />
-        <echo message="${maven.start.hsql.message}" />
-        <echo message="====================================" />
-        <java classname="org.hsqldb.Server" fork="yes">
-            <classpath>
-                <path refid="maven.dependency.classpath" />
-                <pathelement path="${maven.build.dest}" />
-                <pathelement path="${plugin.getDependencyPath('hsqldb')}" />
-            </classpath>
-            <arg value="-database" />
-            <arg value="${org.apache.jetspeed.plugin.hsql.db}" />
-            <arg value="-port" />
-            <arg value="9001" />
-            <arg value="-silent" />
-            <arg value="true" />
-            <arg value="-trace" />
-            <arg value="false" />
-        </java>
-    </goal>
-    
-    <goal name="j2:db.execute">
-        <!-- Ugly hack (or sound fix) setting the parentScope to an empty String because
-             with maven project inheritance the size of this property is killing
-             performance when the sql task is trying to interpose property values.
-             See: http://issues.apache.org/jira/browse/JS2-322
-             Without this hack the time to run the db.create.test task (using Oracle9i)
-             increases by at least 30 seconds for each level of inheritance.
-             Note: the project generated with genapp has an inheritance level of 4!
-             Hopefully, these kind of problems are solved when we move to maven 2 ...
-        -->      
-        <j:set var="parentScope" scope="parent" value=""/>
-        <sql driver="${org.apache.jetspeed.database.driver}" url="${org.apache.jetspeed.database.url}"
-            userid="${org.apache.jetspeed.database.user}" password="${org.apache.jetspeed.database.password}"
-            src="${database.arg.script}">
-            <classpath>
-                <pathelement path="${org.apache.jetspeed.jdbc.drivers.path}" />
-                <path refid="maven.dependency.classpath" />
-            </classpath>
-        </sql>
-    </goal>
-    
-    <!-- ======================================================== -->
-	<!-- ============== DATABASE SCRIPT GENERATION ============== -->
-	<!-- ======================================================== -->
-    
-    <!-- use local (to the plugin) invocation of the real scripts.gen goal (_db.scripts.gen) because if called directly from
-         a project it wouldn't be called within the plugin context -->
-    <goal name="j2:db.scripts.gen">
-      <attainGoal name="_db.scripts.gen"/>
-    </goal>
-    
-    <goal name="_db.scripts.gen" prereqs="torque:init" description="Build SQL scripts using Torque generator">
-        <echo message="Using Torque schema located under: ${torque.schema.dir}" />
-
-        <echo>Plugin Root: ${org.apache.jetspeed.plugin.root}</echo>        <echo message="Generating SQL schema creation scripts for HSQLDB" />
-        <delete dir="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/hsql/generated" failonerror="false" />
-        <mkdir dir="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/hsql/generated"/>       
-        <torque-sql basePathToDbProps="sql/base/" contextProperties="${torque.contextProperties}"
-            controlTemplate="${torque.template.sql}" idTableXMLFile="${torque.idTableXMLFile}"
-            outputDirectory="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/hsql/generated" outputFile="report.${torque.project}.sql.generation"
-            sqldbmap="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/hsql/generated/sqldb.map" targetDatabase="hypersonic" useClasspath="true">
-            <fileset dir="${torque.schema.dir}" includes="${torque.schema.sql.includes}"
-                excludes="${torque.schema.sql.excludes}" />
-        </torque-sql>        
-        <attainGoal name="j2:process.sql.script.override" >'
-          <j:set var="org.apache.jetspeed.target.rdbms" value="hsql" />
-        </attainGoal>
-
-        <echo message="Generating SQL schema creation scripts for MySQL" />
-        <delete dir="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/mysql/generated" failonerror="false" />
-        <mkdir dir="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/mysql/generated"/>
-        <torque-sql basePathToDbProps="sql/base/" contextProperties="${torque.contextProperties}"
-            controlTemplate="${torque.template.sql}" idTableXMLFile="${torque.idTableXMLFile}"
-            outputDirectory="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/mysql/generated" outputFile="report.${torque.project}.sql.generation"
-            sqldbmap="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/mysql/generated/sqldb.map" targetDatabase="mysql" useClasspath="true">
-            <fileset dir="${torque.schema.dir}" includes="${torque.schema.sql.includes}"
-                excludes="${torque.schema.sql.excludes}" />
-        </torque-sql>        
-        <attainGoal name="j2:process.sql.script.override" >
-         <j:set var="org.apache.jetspeed.target.rdbms" value="mysql" />
-        </attainGoal>
-
-        <echo message="Generating SQL schema creation scripts for Oracle" />
-        <delete dir="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/oracle/generated" failonerror="false" />
-        <mkdir dir="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/oracle/generated"/>
-        <torque-sql basePathToDbProps="sql/base/" contextProperties="${torque.contextProperties}"
-            controlTemplate="${torque.template.sql}" idTableXMLFile="${torque.idTableXMLFile}"
-            outputDirectory="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/oracle/generated" outputFile="report.${torque.project}.sql.generation"
-            sqldbmap="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/oracle/generated/sqldb.map" targetDatabase="oracle" useClasspath="true">
-            <fileset dir="${torque.schema.dir}" includes="${torque.schema.sql.includes}"
-                excludes="${torque.schema.sql.excludes}" />
-        </torque-sql>
-        
-        <attainGoal name="j2:process.sql.script.override" >
-          <j:set var="org.apache.jetspeed.target.rdbms" value="oracle" />
-        </attainGoal>
-
-        <echo message="Generating SQL schema creation scripts for MS SQL" />
-        <delete dir="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/mssql/generated" failonerror="false" />
-        <mkdir dir="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/mssql/generated"/>
-        <torque-sql basePathToDbProps="sql/base/" contextProperties="${torque.contextProperties}"
-            controlTemplate="${torque.template.sql}" idTableXMLFile="${torque.idTableXMLFile}"
-            outputDirectory="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/mssql/generated" outputFile="report.${torque.project}.sql.generation"
-            sqldbmap="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/mssql/generated/sqldb.map" targetDatabase="mssql" useClasspath="true">
-            <fileset dir="${torque.schema.dir}" includes="${torque.schema.sql.includes}"
-                excludes="${torque.schema.sql.excludes}" />
-        </torque-sql>
-        
-        <attainGoal name="j2:process.sql.script.override" >
-          <j:set var="org.apache.jetspeed.target.rdbms" value="mssql" />
-       </attainGoal>
-
-        <echo message="Generating SQL schema creation scripts for Postgres" />
-        <delete dir="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/postgres/generated" failonerror="false" />
-        <mkdir dir="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/postgres/generated"/>
-        <torque-sql basePathToDbProps="sql/base/" contextProperties="${torque.contextProperties}"
-            controlTemplate="${torque.template.sql}" idTableXMLFile="${torque.idTableXMLFile}"
-            outputDirectory="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/postgres/generated" outputFile="report.${torque.project}.sql.generation"
-            sqldbmap="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/postgres/generated/sqldb.map" targetDatabase="postgresql" useClasspath="true">
-            <fileset dir="${torque.schema.dir}" includes="${torque.schema.sql.includes}"
-                excludes="${torque.schema.sql.excludes}" />
-        </torque-sql>
-        
-        <attainGoal name="j2:process.sql.script.override" >
-          <j:set var="org.apache.jetspeed.target.rdbms" value="postgres" />
-        </attainGoal>
-    </goal>
-    
-    <goal name="j2:process.sql.script.override" >
-      
-      <fail
-            message="org.apache.jetspeed.target.rdbms must be set before executing the j2:process.sql.script.overrid goal."
-            unless="org.apache.jetspeed.target.rdbms" />
-      <!-- Allow specific DB scripts to override the Torque-generated ones -->
-      <echo>Checking SQL script overrides for ${org.apache.jetspeed.database.default.name}</echo>
-      <echo>${org.apache.jetspeed.plugin.root}/plugin-resources/sql/${org.apache.jetspeed.target.rdbms}/generated</echo>
-      <copy todir="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/${org.apache.jetspeed.target.rdbms}/generated" overwrite="true"  verbose="true" failonerror="false" flatten="true">
-        <fileset dir="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/${org.apache.jetspeed.target.rdbms}">
-            <include name="**/override/*.sql" />
-        </fileset>
-      </copy>        
-    </goal>
-    
-    <!-- ============================================= -->
-	<!-- ============== DATABASE CREATE ============== -->
-	<!-- ============================================= -->
-    
-	<goal name="j2:db.test.properties">
-        <j:set var="org.apache.jetspeed.database.default.name" value="${org.apache.jetspeed.test.database.default.name}" />
-        <j:set var="org.apache.jetspeed.database.url" value="${org.apache.jetspeed.test.database.url}" />
-        <j:set var="org.apache.jetspeed.database.driver" value="${org.apache.jetspeed.test.database.driver}" />
-        <j:set var="org.apache.jetspeed.database.user" value="${org.apache.jetspeed.test.database.user}" />
-        <j:set var="org.apache.jetspeed.database.password" value="${org.apache.jetspeed.test.database.password}" />
-        <j:set var="org.apache.jetspeed.jdbc.drivers.path" value="${org.apache.jetspeed.test.jdbc.drivers.path}" />
-    </goal>
-
-    <goal name="j2:db.production.properties">
-        <j:set var="org.apache.jetspeed.database.default.name"
-            value="${org.apache.jetspeed.production.database.default.name}" />
-        <j:set var="org.apache.jetspeed.database.url" value="${org.apache.jetspeed.production.database.url}" />
-        <j:set var="org.apache.jetspeed.database.driver" value="${org.apache.jetspeed.production.database.driver}" />
-        <j:set var="org.apache.jetspeed.database.user" value="${org.apache.jetspeed.production.database.user}" />
-        <j:set var="org.apache.jetspeed.database.password" value="${org.apache.jetspeed.production.database.password}" />
-        <j:set var="org.apache.jetspeed.jdbc.drivers.path" value="${org.apache.jetspeed.production.jdbc.drivers.path}" />
-    </goal>
-
-    <goal name="j2:db.create.test">
-        <attainGoal name="j2:db.test.properties" />
-        <attainGoal name="j2:db.drop2" />
-        <attainGoal name="j2:db.create" />
-    </goal>
-
-    <goal name="j2:db.create.production" >
-        <attainGoal name="j2:db.production.properties" />
-        <attainGoal name="j2:db.drop2" />
-        <attainGoal name="j2:db.create" />
-    </goal>
 
-    <goal name="j2:db.create">
-       <j:set var="sql.src.path" value="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/${org.apache.jetspeed.database.default.name}/generated" />
-       <attainGoal name="j2:run.all.scripts.in.path" />
-
-       <j:set var="database.arg.script"
-            value="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/populate-db-default.sql" />
-       <attainGoal name="j2:db.execute" />
-        <!-- process user custom SQL -->
-       <echo>Running user-defined SQL scripts...</echo>   
-       <j:set var="sql.src.path" value="${basedir}/src/sql" />
-       <attainGoal name="j2:run.all.scripts.in.path" />
-    </goal>
-    
-    <!-- Use this uility goal to run all of the .sql scripts in the specified path -->
-    <goal name="j2:run.all.scripts.in.path" >
-        <echo>Checking for SQL scripts at path ${sql.src.path}...</echo>
-        <!-- process user custom SQL -->
-        <util:available file="${sql.src.path}">
-         <echo>Running SQL scripts in directory ${sql.src.path}...</echo>
-          <util:file name="${sql.src.path}" var="sqldir" />
-          <j:set var="fileList" value="${sqldir.listFiles()}" />
-          <j:forEach items="${fileList}" var="sqlfile" >
-             <j:if test="${sqlfile.name.endsWith('.sql')}" >
-               <echo>Running script ${sqlfile.absolutePath}...</echo>
-               <j:set var="database.arg.script" value="${sqlfile.absolutePath}" />
-               <attainGoal name="j2:db.execute" />
-             </j:if>
-          </j:forEach>
-        </util:available>
-    </goal>
-    
-    <goal name="j2:db.user.scripts.production" >
-       <attainGoal name="j2:db.production.properties" />         
-       <echo>Running user-defined SQL scripts...</echo>   
-       <j:set var="sql.src.path" value="${basedir}/src/sql" /> 
-       <attainGoal name="j2:run.all.scripts.in.path" />   
-    </goal>    
-      
-    <goal name="j2:db.entities" prereqs="j2:db.scripts.gen">
-        <j:set var="dbase" value="${org.apache.jetspeed.production.database.default.name}" />
-        <attainGoal name="j2:db.production.properties" />
-        <j:choose>
-            <j:when test="${dbase == 'mssql'}">
-                <j:set var="database.arg.script" value="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/mssql/populate-userinfo-for-default-psml.sql" />
-            </j:when>
-            <j:when test="${dbase == 'mysql'}">
-                <j:set var="database.arg.script" value="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/mysql/populate-userinfo-for-default-psml.sql" />
-            </j:when>
-            <j:when test="${dbase == 'oracle'}">
-                <j:set var="database.arg.script" value="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/oracle/populate-userinfo-for-default-psml.sql" />
-            </j:when>
-            <j:when test="${dbase == 'hsql'}">
-                <j:set var="database.arg.script" value="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/hsql/populate-userinfo-for-default-psml.sql" />
-            </j:when>
-            <j:otherwise>
-                <j:set var="database.arg.script" value="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/populate-userinfo-for-default-psml.sql" />
-            </j:otherwise>
-        </j:choose>
-        <attainGoal name="j2:db.execute" />
-    </goal>
-    
-    <goal name="j2:db.recreate" prereqs="j2:db.scripts.gen">
-        <attainGoal name="j2:db.create.production" />
-    </goal>
-    
-    <!-- =========================================== -->
-	<!-- ============== DATABASE DROP ============== -->
-	<!-- =========================================== -->
+    $Id$
+-->
+<project default="java:jar" 
+         xmlns:j="jelly:core"
+         xmlns:define="jelly:define"
+         xmlns:maven="jelly:maven"
+         xmlns:ant="jelly:ant"
+         xmlns:util="jelly:util">
+
+  <!-- ====================================================== -->
+  <!-- ============== GENERATE NEW APPLICATION ============== -->
+  <!-- ====================================================== -->
+  
+  <goal name="j2:portal.genapp" prereqs="j2:_check.required.properties">
+            
+    <attainGoal name="j2:portal.copy.webapp"/>
+    <attainGoal name="j2:portal.conf.project"/>
+    <attainGoal name="j2:portal.conf.sql"/>
+    <attainGoal name="j2:portal.conf.ojb"/>
+    <attainGoal name="j2:portal.conf.jetspeed"/>
+    <attainGoal name="j2:portal.conf.tomcat"/>
+  </goal>
+    
+  <goal name="j2:portal.copy.webapp" prereqs="j2:_check.required.properties">
+    <j:set var="portal.webapp.dir" value="${org.apache.jetspeed.portal.home}/${org.apache.jetspeed.portal.webapp.dir}"/>      
+    <mkdir dir="${portal.webapp.dir}"/>
+    <copy todir="${portal.webapp.dir}" overwrite="true" failonerror="true">
+      <fileset dir="${org.apache.jetspeed.plugin.root}/plugin-resources/webapp">
+        <exclude name="WEB-INF/conf/jetspeed.properties"/>
+      </fileset>
+    </copy>
+  </goal>
+  
+  <goal name="j2:portal.conf.project" prereqs="j2:_check.required.properties">
+    <j:set var="portal.home.dir" value="${org.apache.jetspeed.portal.home}"/>
+    <mkdir dir="${portal.home.dir}"/>              
+
+    <filterset id="dependenciesFilterSet" begintoken="$" endtoken="}">
+      <filter token="{jetspeed.version" value="${jetspeed.version}"/>
+      <filter token="{pluto.version" value="${pluto.version}"/>
+      <filter token="{portlet.api.version" value="${portlet.api.version}"/>
+      <filter token="{servlet.api.version" value="${servlet.api.version}"/>
+      <filter token="{myfaces.version" value="${myfaces.version}"/>
+      <filter token="{spring.version" value="${spring.version}"/>
+      <filter token="{portals.bridges.common.version" value="${portals.bridges.common.version}"/>
+      <filter token="{portals.bridges.frameworks.version" value="${portals.bridges.frameworks.version}"/>
+      <filter token="{portals.bridges.jsf.version" value="${portals.bridges.jsf.version}"/>
+      <filter token="{portals.bridges.perl.version" value="${portals.bridges.perl.version}"/>
+      <filter token="{portals.bridges.php.version" value="${portals.bridges.php.version}"/>
+      <filter token="{portals.bridges.struts.version" value="${portals.bridges.struts.version}"/>
+      <filter token="{portals.bridges.velocity.version" value="${portals.bridges.velocity.version}"/>
+      <filter token="{commons.logging.version" value="${commons.logging.version}"/>
+      <filter token="{log4j.version" value="${log4j.version}"/>
+      <filter token="{commons.logging.include" value="${commons.logging.include}"/>
+      <filter token="{log4j.include" value="${log4j.include}"/>
+      <filter token="{jta.include" value="${jta.include}"/>
+      <filter token="{hsql.include" value="${hsql.include}"/>
+    </filterset>
+
+    <!-- Note: keep already existing project-info.xml allowing custom modifications -->
+    <copy file="${org.apache.jetspeed.plugin.root}/plugin-resources/project-info.xml"
+          tofile="${portal.home.dir}/project-info.xml"
+          overwrite="false"
+          failonerror="true"/>
+    
+    <copy file="${org.apache.jetspeed.plugin.root}/plugin-resources/core-build.xml"
+          tofile="${portal.home.dir}/core-build.xml"
+          overwrite="true"
+          failonerror="true">
+      <filterset refid="dependenciesFilterSet"/>
+    </copy>
+    
+    <copy file="${org.apache.jetspeed.plugin.root}/plugin-resources/jetspeed-components.xml"
+          tofile="${portal.home.dir}/jetspeed-components.xml"
+          overwrite="true"
+          failonerror="true">
+      <filterset refid="dependenciesFilterSet"/>
+    </copy>
+
+    <copy file="${org.apache.jetspeed.plugin.root}/plugin-resources/full-portal.xml"
+          tofile="${portal.home.dir}/full-portal.xml"
+          overwrite="true"
+          failonerror="true">
+      <filterset refid="dependenciesFilterSet"/>
+    </copy>          
+
+    <!-- Note: keep existing project.xml allowing for custom modifications -->
+    <copy file="${org.apache.jetspeed.plugin.root}/plugin-resources/project.xml"
+          tofile="${portal.home.dir}/project.xml"
+          overwrite="false"
+          failonerror="true">
+      <filterset begintoken="@" endtoken="@">
+        <filter token="PORTAL_GROUPID" value="${org.apache.jetspeed.portal.groupId}"/>
+        <filter token="PORTAL_ARTIFACTID" value="${org.apache.jetspeed.portal.artifactId}"/>
+        <filter token="PORTAL_NAME" value="${org.apache.jetspeed.portal.name}"/>
+        <filter token="PORTAL_CURRENT_VERSION" value="${org.apache.jetspeed.portal.currentVersion}"/>
+      </filterset>
+    </copy>
+  </goal>
+
+  <goal name="j2:portal.conf.sql" prereqs="j2:_check.required.properties">
+    <j:set var="portal.sql.src.dir" value="${org.apache.jetspeed.plugin.root}/plugin-resources/sql"/>
+    <j:set var="portal.sql.target.dir" value="${org.apache.jetspeed.portal.home}/${org.apache.jetspeed.portal.sql.dir}"/>
+
+    <delete dir="${portal.sql.target.dir}" failonerror="false"/>
+    <mkdir dir="${portal.sql.target.dir}"/>
+          
+    <copy todir="${portal.sql.target.dir}" overwrite="true" verbose="true" failonerror="false" flatten="true">
+      <fileset dir="${portal.sql.src.dir}">
+        <include name="*.sql"/>
+      </fileset>
+    </copy>        
+               
+    <j:set var="org.apache.jetspeed.target.rdbms" value="${org.apache.jetspeed.production.database.default.name}"/>
+    <attainGoal name="j2:_set.rdbms.props"/>
+    <attainGoal name="j2:_generate.sql"/>
+    <attainGoal name="j2:_copy.rdbms.sql.scripts"/>
+    
+    <j:if test="${org.apache.jetspeed.use.test.database}">    
+      <j:set var="test_db" value="${org.apache.jetspeed.test.database.default.name}"/>
+      <j:set var="prod_db" value="${org.apache.jetspeed.production.database.default.name}"/>
+      <j:if test="${prod_db != test_db}">
+        <j:set var="org.apache.jetspeed.target.rdbms" value="${org.apache.jetspeed.test.database.default.name}"/>
+        <attainGoal name="j2:_set.rdbms.props"/>
+        <attainGoal name="j2:_generate.sql"/>
+        <attainGoal name="j2:_copy.rdbms.sql.scripts"/>
+      </j:if>
+    </j:if>  
+  </goal> 
+  
+  <goal name="j2:portal.conf.ojb" prereqs="j2:_check.required.properties">
+    <j:set var="portal.target.dir" value="${org.apache.jetspeed.portal.home}/${org.apache.jetspeed.portal.target.dir}"/>      
+    <mkdir dir="${portal.target.dir}/WEB-INF/classes"/>
+    <copy todir="${portal.target.dir}/WEB-INF/classes" overwrite="true">
+      <fileset dir="${org.apache.jetspeed.plugin.root}/plugin-resources/db-ojb"/>
+      <filterset begintoken="@" endtoken="@">
+        <filter token="PLATFORM" value="${org.apache.jetspeed.production.database.ojb.platform}"/>
+      </filterset>
+    </copy>
+  </goal>
+  
+  <goal name="j2:portal.conf.jetspeed" prereqs="j2:_check.required.properties">
+    <j:set var="portal.target.dir" value="${org.apache.jetspeed.portal.home}/${org.apache.jetspeed.portal.target.dir}"/>      
+    <copy file="${org.apache.jetspeed.plugin.root}/plugin-resources/webapp/WEB-INF/conf/jetspeed.properties"
+          todir="${portal.target.dir}/WEB-INF/conf/" overwrite="true">
+      <filterset begintoken="@" endtoken="@">
+        <filter token="AUTODEPLOYMENT_SERVER" value="${org.apache.jetspeed.services.autodeployment.server}"/>
+        <filter token="AUTODEPLOYMENT_USER" value="${org.apache.jetspeed.services.autodeployment.user}"/>
+        <filter token="AUTODEPLOYMENT_PASSWORD" value="${org.apache.jetspeed.services.autodeployment.password}"/>
+       </filterset>
+       <!-- Below filter is special because this concerns a numeric property for which a non-numeric token results
+           in a test failure (TestSpringEngine)
+           This property therefore MUST remain defined EXACTLY as specified for this filter to be able to work
+       -->
+       <filterset begintoken="autodeployment.catalina.version.major" endtoken="5">
+           <filter token="="
+               value="autodeployment.catalina.version.major=${org.apache.jetspeed.catalina.version.major}"/>
+       </filterset>
+       <filterset begintoken="autodeployment.port" endtoken="8080">
+           <filter token="=" value="autodeployment.port=${org.apache.jetspeed.services.autodeployment.port}"/>
+       </filterset>
+    </copy>
+  </goal>
+  
+  <goal name="j2:portal.conf.tomcat" prereqs="j2:_check.required.properties">
+    <j:set var="portal.conf.dir" value="${org.apache.jetspeed.portal.home}/${org.apache.jetspeed.portal.conf.dir}"/>      
+    <mkdir dir="${portal.conf.dir}/tomcat"/>
+    <j:set var="catalina_version_major" value="${org.apache.jetspeed.catalina.version.major}"/>
+    <j:choose>
+      <j:when test="${catalina_version_major == '5.5'}">
+        <j:set var="context_file_source" value="jetspeed-tomcat-5.5.xml"/>
+      </j:when>
+      <j:otherwise>
+        <j:set var="context_file_source" value="jetspeed-tomcat-5.xml"/>
+      </j:otherwise>
+    </j:choose>
+    <copy file="${org.apache.jetspeed.plugin.root}/plugin-resources/conf/tomcat/${context_file_source}"
+          tofile="${portal.conf.dir}/tomcat/context.xml" overwrite="true">
+      <filterset begintoken="@" endtoken="@">
+        <filter token="CONTEXT" value="${org.apache.jetspeed.portal.artifactId}"/>
+        <filter token="USERNAME" value="${org.apache.jetspeed.production.database.user}"/>
+        <filter token="PASSWORD" value="${org.apache.jetspeed.production.database.password}"/>
+        <filter token="DRIVER" value="${org.apache.jetspeed.production.database.driver}"/>
+        <filter token="URL" value="${org.apache.jetspeed.production.database.url}"/>
+      </filterset>
+    </copy>
+  </goal>
+    
+  <!-- ================================================= -->
+  <!-- ============== DATABASE MANAGEMENT ============== -->
+  <!-- ================================================= -->
+
+  <goal name="j2:start.production.server" prereqs="j2:_check.required.properties">
+    <j:set var="maven.start.hsql.message" value="Production/Deployment Database"/>
+    <j:set var="org.apache.jetspeed.plugin.hsql.db" 
+           value="${org.apache.jetspeed.portal.home}/${org.apache.jetspeed.portal.db.dir}/hsql/Production"/>
+    <attainGoal name="j2:_start.hsql"/>
+  </goal>
+  
+  <goal name="j2:start.test.server" prereqs="j2:_check.required.properties">
+    <j:set var="maven.start.hsql.message" value="Testing Database"/>
+    <j:set var="org.apache.jetspeed.plugin.hsql.db" 
+           value="${org.apache.jetspeed.portal.home}/${org.apache.jetspeed.portal.db.dir}/hsql/Test"/>
+    <attainGoal name="j2:_start.hsql"/>
+  </goal>
+  
+  <!-- ============================================= -->
+  <!-- ============== DATABASE CREATE ============== -->
+  <!-- ============================================= -->
+
+  <goal name="j2:db.create.test">
+    <attainGoal name="j2:_db.test.properties"/>
+    <attainGoal name="j2:_db.drop"/>
+    <attainGoal name="j2:_db.create"/>
+  </goal>
+
+  <goal name="j2:db.create.production" >
+    <attainGoal name="j2:_db.production.properties"/>
+    <attainGoal name="j2:_db.drop"/>
+    <attainGoal name="j2:_db.create"/>
+  </goal>
+
+  <goal name="j2:db.recreate" prereqs="j2:portal.conf.sql">
+    <attainGoal name="j2:db.create.production"/>
+  </goal>
+    
+  <goal name="j2:db.user.scripts.production" >
+     <attainGoal name="j2:_db.production.properties"/>         
+     <echo>Running user-defined SQL scripts...</echo>   
+     <j:set var="sql.src.path" value="${basedir}/src/sql"/>
+     <j:set var="database.arg.onerror" value="abort"/> 
+     <j:set var="process.database.script.goal" value="j2:_db.execute"/>
+     <attainGoal name="j2:_process.all.scripts.in.path"/>   
+  </goal>    
+    
+  <goal name="j2:db.entities">
+    <attainGoal name="j2:_db.production.properties"/>
+    <j:set var="org.apache.jetspeed.target.rdbms" value="${org.apache.jetspeed.production.database.default.name}"/>
+    <attainGoal name="j2:_set.rdbms.props"/>
+    <j:set var="portal.sql.dir" value="${org.apache.jetspeed.portal.home}/${org.apache.jetspeed.portal.sql.dir}"/>
+    <j:set var="database.arg.script" value="${portal.sql.dir}/populate-userinfo-for-default-psml.sql"/>
+    <util:available file="${portal.sql.dir}/${org.apache.jetspeed.target.rdbms}/populate-userinfo-for-default-psml.sql">
+      <j:set var="database.arg.script"
+             value="${portal.sql.dir}/${org.apache.jetspeed.target.rdbms}/populate-userinfo-for-default-psml.sql"/>
+    </util:available>
+     <j:set var="database.arg.onerror" value="abort"/> 
+    <attainGoal name="j2:_db.execute"/>
+  </goal>
+    
+  <!-- =========================================== -->
+  <!-- ============== DATABASE DROP ============== -->
+  <!-- =========================================== -->
     
     <goal name="j2:db.drop.test">
-        <attainGoal name="j2:db.test.properties" />
-        <attainGoal name="j2:db.drop" />
+        <attainGoal name="j2:_db.test.properties"/>
+        <attainGoal name="j2:_db.drop"/>
     </goal>
 
     <goal name="j2:db.drop.production">
-        <attainGoal name="j2:db.production.properties" />
-        <attainGoal name="j2:db.drop" />
-    </goal>
-
-    <goal name="j2:db.drop">
-        <j:set var="database.arg.script" value="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/${org.apache.jetspeed.database.default.name}/drop.sql" />
-        <attainGoal name="j2:db.execute" />
-        <j:set var="database.arg.script"
-            value="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/${org.apache.jetspeed.database.default.name}/registry-drop.sql" />
-        <attainGoal name="j2:db.execute" />
-    </goal>
-
-    <goal name="j2:db.drop2">
-        <j:set var='nodots' value="${org.apache.jetspeed.database.default.name}" />
-        <j:choose>
-            <j:when test="${nodots == 'mysql'}">
-                <j:set var="database.arg.script" value="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/mysql/drop.sql" />
-                <attainGoal name="j2:db.execute" />
-            </j:when>
-        </j:choose>
-        <j:choose>
-            <j:when test="${nodots == 'hsql'}">
-                <j:set var="database.arg.script" value="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/hsql/drop.sql" />
-                <attainGoal name="j2:db.execute" />
-            </j:when>
-        </j:choose>
-        <j:choose>
-            <j:when test="${nodots == 'oracle'}">
-                <!--
-                <attainGoal name="j2:dropdrops" />
-                -->
-            </j:when>
-        </j:choose>
-    </goal>
-
-    <goal name="j2:db.drop.oracle">
-        <attainGoal name="db.production.properties" />
-        <j:set var="database.arg.script" value="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/oracle/drop.sql" />
-        <attainGoal name="db.execute" />
-    </goal>
-    
-    <goal name="j2:dropdrops">
-        <attainGoal name="j2:db.production.properties" />
-        <attainGoal name="j2:all.dropdrops" />
-    </goal>
-
-    <goal name="j2:test.dropdrops">
-        <attainGoal name="j2:db.test.properties" />
-        <attainGoal name="j2:all.dropdrops" />
-    </goal>
-
-    <goal name="j2:all.dropdrops">
-        <attainGoal name="j2:run.dropdrops" />
-        <j:set var="dropstable"
-        	value="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/${org.apache.jetspeed.database.default.name}/generated/phase1-schema.sql" />
-        <attainGoal name="j2:run.dropdrops" />
-        <j:set var="dropstable" 
-        	value="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/${org.apache.jetspeed.database.default.name}/generated/phase2-schema.sql" />
-        <attainGoal name="j2:run.dropdrops" />
-        <j:set var="dropstable"
-            value="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/${org.apache.jetspeed.database.default.name}/generated/phase3ojb-schema.sql" />
-        <attainGoal name="j2:run.dropdrops" />
-        <j:set var="dropstable"
-        	value="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/${org.apache.jetspeed.database.default.name}/generated/prefs-schema.sql" />
-        <attainGoal name="j2:run.dropdrops" />
-        <j:set var="dropstable"
-            value="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/${org.apache.jetspeed.database.default.name}/generated/registry-schema.sql" />
-        <attainGoal name="j2:run.dropdrops" />
-        <j:set var="dropstable"
-            value="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/${org.apache.jetspeed.database.default.name}/generated/security-schema.sql" />
-        <attainGoal name="j2:run.dropdrops" />
-        <j:set var="dropstable"
-            value="${org.apache.jetspeed.plugin.root}/plugin-resources/sql/${org.apache.jetspeed.database.default.name}/generated/test-persistence-schema.sql" />
-        <attainGoal name="j2:run.dropdrops" />
-    </goal>
-
-    <goal name="j2:run.dropdrops">
-        <java classname="org.apache.jetspeed.dbutil.ScriptUtil" fork="yes">
-            <classpath>
-                <path refid="maven.dependency.classpath" />
-                <pathelement path="${maven.build.dest}" />
-                <pathelement path="${org.apache.jetspeed.plugin.root}" />
-            </classpath>
-            <arg value="-drops" />
-            <arg value="${dropstable}" />
-        </java>
-    </goal>
-    
-    <!-- =============================================== -->
-	<!-- ============== PORTLET DEPLOYMENT ============= -->
-	<!-- =============================================== -->
-	
-    <goal name="j2:pam.layoutdeploy">
-        <j:set var="maven.war.final.name" value="jetspeed-layouts" />
-        <attainGoal name="j2:deploy" />
-    </goal>
-
-    <goal name="j2:pam.demodeploy">
-        <j:set var="maven.war.final.name" value="demo" />
-        <attainGoal name="j2:deploy" />
-    </goal>
-
-    <goal name="j2:pam.demoundeploy">
-        <j:set var="maven.war.final.name" value="demo" />
-        <attainGoal name="j2:undeploy" />
-    </goal>
-
-    <goal name="j2:pam.palmdeploy">
-        <j:set var="maven.war.final.name" value="palm" />
-        <attainGoal name="j2:deploy" />
+        <attainGoal name="j2:_db.production.properties"/>
+        <attainGoal name="j2:_db.drop"/>
     </goal>
 
-    <goal name="j2:pam.palmundeploy">
-        <j:set var="maven.war.final.name" value="palm" />
-        <attainGoal name="j2:undeploy" />
-    </goal>
-
-    <goal name="j2:pam.pamdeploy">
-        <j:set var="maven.war.final.name" value="pam" />
-        <attainGoal name="j2:deploy" />
-    </goal>
-
-    <goal name="j2:pam.pamundeploy">
-        <j:set var="maven.war.final.name" value="pam" />
-        <attainGoal name="j2:undeploy" />
-    </goal>
-
-    <goal name="j2:pam.tsdeploy">
-        <j:set var="maven.war.final.name" value="testsuite" />
-        <attainGoal name="j2:deploy" />
-    </goal>
-
-    <goal name="j2:pam.tsundeploy">
-        <j:set var="maven.war.final.name" value="testsuite" />
-        <attainGoal name="j2:undeploy" />
-    </goal>
+  <!-- =============================================== -->
+  <!-- ========= JETSPEED PORTLET DEPLOYMENT ========= -->
+  <!-- =============================================== -->
+  
+  <goal name="j2:deploy">
+    <copy file="${maven.repo.local}/${plugin.groupId}/wars/${maven.war.final.name}-${jetspeed.version}.war"
+          tofile="${org.apache.jetspeed.portal.dir}/WEB-INF/deploy/${maven.war.final.name}.war"
+          overwrite="true"
+          failonerror="true"/>
+  </goal>
+
+  <goal name="j2:pam.layoutdeploy">
+    <j:set var="maven.war.final.name" value="jetspeed-layouts"/>
+    <attainGoal name="j2:deploy"/>
+  </goal>
+
+  <goal name="j2:pam.demodeploy">
+    <j:set var="maven.war.final.name" value="demo"/>
+    <attainGoal name="j2:deploy"/>
+  </goal>
+
+  <goal name="j2:pam.palmdeploy">
+    <j:set var="maven.war.final.name" value="palm"/>
+    <attainGoal name="j2:deploy"/>
+  </goal>
+
+  <goal name="j2:pam.pamdeploy">
+    <j:set var="maven.war.final.name" value="pam"/>
+    <attainGoal name="j2:deploy"/>
+  </goal>
+
+  <goal name="j2:pam.tsdeploy">
+    <j:set var="maven.war.final.name" value="testsuite"/>
+    <attainGoal name="j2:deploy"/>
+  </goal>
+
+  <goal name="j2:pam.strutsdeploy">
+    <j:set var="maven.war.final.name" value="struts-demo"/>
+    <attainGoal name="j2:deploy"/>
+  </goal>
+
+  <goal name="j2:pam.jpetstoredeploy">
+    <j:set var="maven.war.final.name" value="jpetstore"/>
+    <attainGoal name="j2:deploy"/>
+  </goal>
+
+  <goal name="j2:pam.jsfdeploy">
+    <j:set var="maven.war.final.name" value="jsf-demo"/>
+    <attainGoal name="j2:deploy"/>
+  </goal>
+
+  <goal name="j2:pam.jsfmyfacesdeploy">
+    <j:set var="maven.war.final.name" value="jsf-demo-myfaces"/>
+    <attainGoal name="j2:deploy"/>
+  </goal>
+
+  <goal name="j2:pam.securitydeploy">
+    <j:set var="maven.war.final.name" value="security"/>
+    <attainGoal name="j2:deploy"/>
+  </goal>
+
+  <goal name="j2:pam.phpdeploy">
+    <j:set var="maven.war.final.name" value="php"/>
+    <attainGoal name="j2:deploy"/>
+  </goal>
+
+  <goal name="j2:pam.perldeploy">
+    <j:set var="maven.war.final.name" value="perl"/>
+    <attainGoal name="j2:deploy"/>
+  </goal>
+
+  <goal name="j2:pam.rssdeploy">
+    <j:set var="maven.war.final.name" value="rss"/>
+    <attainGoal name="j2:deploy"/>
+  </goal>
+
+  <!-- ================================================= -->
+  <!-- ======== JETSPEED COMPONENT DEPLOYMENT ========== -->
+  <!-- ================================================= -->
+  <goal name="j2:jar.deploy">
+    <attainGoal name="jar:install"/>
+    <echo>Deploying ${pom.artifactId}-${jetspeed.version}.jar to ${org.apache.jetspeed.portal.dir}/WEB-INF/lib...</echo>
+    <copy file="${basedir}/target/${pom.artifactId}-${jetspeed.version}.jar"
+          todir="${org.apache.jetspeed.portal.dir}/WEB-INF/lib"
+          overwrite="true"
+          failonerror="true"/>
+  </goal>
+    
+  <goal name="j2:jar.deploy.shared">
+    <attainGoal name="jar:install"/>
+    <echo>Deploying ${pom.artifactId}-${jetspeed.version}.jar to ${org.apache.jetspeed.server.shared}...</echo>   
+    <copy file="${basedir}/target/${pom.artifactId}-${jetspeed.version}.jar" 
+          todir="${org.apache.jetspeed.server.shared}"
+          overwrite="true"
+          failonerror="true"/>
+  </goal>
+    
+  <!-- ============================================== -->
+  <!-- ============== PORTAL DEPLOYMENT ============= -->
+  <!-- ============================================== -->
+  <goal name="j2:copy.shared.deps">
+    <attainGoal name="j2:catalina.base.shared"/>
+    <attainGoal name="j2:catalina.shared"/>
+  </goal>
+  
+  <goal name="j2:catalina.base.shared" description="Copy all base jars necessary for common container">
+    <echo>Deploys misc. jars shared/lib to Tomcat</echo>
+    <echo>Copying from ${maven.repo.local} to ${org.apache.jetspeed.server.shared}...</echo>
+    <copy file="${maven.repo.local}/pluto/jars/pluto-${pluto.version}.jar"
+          todir="${org.apache.jetspeed.server.shared}"/>
+    <copy file="${maven.repo.local}/portals-bridges/jars/portals-bridges-common-${portals.bridges.common.version}.jar"
+          todir="${org.apache.jetspeed.server.shared}"/>
+  </goal>
+
+  <goal name="j2:catalina.shared" description="Copy all jars necessary for common container">
+    <echo>Deploys container jars to shared/lib to Tomcat</echo>
+    <copy file="${maven.repo.local}/${plugin.groupId}/jars/jetspeed-commons-${jetspeed.version}.jar"
+          todir="${org.apache.jetspeed.server.shared}"/>
+    <copy file="${maven.repo.local}/${plugin.groupId}/jars/jetspeed-api-${jetspeed.version}.jar"
+          todir="${org.apache.jetspeed.server.shared}"/>
+    <copy file="${maven.repo.local}/portlet-api/jars/portlet-api-${portlet.api.version}.jar"
+          todir="${org.apache.jetspeed.server.shared}"/>
+  </goal>
+    
+    
+  <goal name="j2:portal.deploy">
+    <attainGoal name="j2:remove.wars"/>
+    <echo message="Deploying ${org.apache.jetspeed.portal.artifactId}"/>
+    <delete dir="${org.apache.jetspeed.deploy.war.dir}/${org.apache.jetspeed.portal.artifactId}"/>
+    <copy file="${maven.repo.local}/${org.apache.jetspeed.portal.groupId}/wars/${org.apache.jetspeed.portal.artifactId}-${org.apache.jetspeed.portal.currentVersion}.war"
+          tofile="${org.apache.jetspeed.deploy.war.dir}/${org.apache.jetspeed.portal.artifactId}.war"
+          verbose="true" />
+    <unwar src="${org.apache.jetspeed.deploy.war.dir}/${org.apache.jetspeed.portal.artifactId}.war"
+           dest="${org.apache.jetspeed.deploy.war.dir}/${org.apache.jetspeed.portal.artifactId}"/>
+
+    <j:set var="portal.conf.dir" value="${org.apache.jetspeed.portal.home}/${org.apache.jetspeed.portal.conf.dir}"/>      
+
+    <copy file="${portal.conf.dir}/tomcat/context.xml"
+          tofile="${org.apache.jetspeed.server.home}/conf/Catalina/localhost/${org.apache.jetspeed.portal.artifactId}.xml"
+          overwrite="true"/>
+
+    <attainGoal name="j2:catalina.base.shared"/>
+    <attainGoal name="j2:catalina.shared"/>
+  </goal>
+    
+  <goal name="j2:minDeploy">
+      <attainGoal name="j2:portal.deploy"/>
+      <attainGoal name="j2:pam.layoutdeploy"/>
+      <attainGoal name="j2:pam.securitydeploy"/>
+      <attainGoal name="j2:db.entities"/>
+  </goal>
+
+  <goal name="j2:nodbMinDeploy">
+      <attainGoal name="j2:portal.deploy"/>
+      <attainGoal name="j2:pam.layoutdeploy"/>
+      <attainGoal name="j2:pam.securitydeploy"/>
+  </goal>
+  
+  <goal name="j2:basicDeploy">
+      <attainGoal name="j2:minDeploy"/>
+      <attainGoal name="j2:pam.pamdeploy"/>
+      <attainGoal name="j2:pam.palmdeploy"/>
+  </goal>
+
+  <goal name="j2:nodbBasicDeploy">
+      <attainGoal name="j2:nodbMinDeploy"/>
+      <attainGoal name="j2:pam.pamdeploy"/>
+      <attainGoal name="j2:pam.palmdeploy"/>
+  </goal>
+
+  <goal name="j2:fullDeploy">
+      <attainGoal name="j2:basicDeploy"/>
+      <attainGoal name="j2:pam.demodeploy"/>
+      <attainGoal name="j2:pam.strutsdeploy"/>
+      <attainGoal name="j2:pam.jsfdeploy"/>
+      <attainGoal name="j2:pam.jsfmyfacesdeploy"/>
+      <attainGoal name="j2:pam.phpdeploy"/>
+      <attainGoal name="j2:pam.perldeploy"/>
+      <attainGoal name="j2:pam.rssdeploy"/>
+      <attainGoal name="j2:pam.jpetstoredeploy"/>
+  </goal>
+
+  <goal name="j2:nodbfullDeploy">
+      <attainGoal name="j2:nodbBasicDeploy"/>
+      <attainGoal name="j2:pam.demodeploy"/>
+      <attainGoal name="j2:pam.strutsdeploy"/>
+      <attainGoal name="j2:pam.jsfdeploy"/>
+      <attainGoal name="j2:pam.jsfmyfacesdeploy"/>
+      <attainGoal name="j2:pam.phpdeploy"/>
+      <attainGoal name="j2:pam.perldeploy"/>
+      <attainGoal name="j2:pam.rssdeploy"/>
+      <attainGoal name="j2:pam.jpetstoredeploy"/>
+  </goal>
+
+  <!-- ============================================== -->
+  <!-- ============== PORTAL CLEAN UP ============= -->
+  <!-- ============================================== -->
+    
+  <goal name="j2:remove.wars">
+      <echo>Remove war files, make sure to shutdown server first...</echo>
+      <delete dir="${org.apache.jetspeed.deploy.war.dir}/${org.apache.jetspeed.portal.artifactId}"/>
+      <delete file="${org.apache.jetspeed.deploy.war.dir}/${org.apache.jetspeed.portal.artifactId}.war"/>
+      <delete dir="${org.apache.jetspeed.deploy.war.dir}/demo"/>
+      <delete file="${org.apache.jetspeed.deploy.war.dir}/demo.war"/>
+      <delete dir="${org.apache.jetspeed.deploy.war.dir}/palm"/>
+      <delete file="${org.apache.jetspeed.deploy.war.dir}/palm.war"/>
+      <delete dir="${org.apache.jetspeed.deploy.war.dir}/pam"/>
+      <delete file="${org.apache.jetspeed.deploy.war.dir}/pam.war"/>
+      <delete dir="${org.apache.jetspeed.deploy.war.dir}/security"/>
+      <delete file="${org.apache.jetspeed.deploy.war.dir}/security.war"/>
+      <delete dir="${org.apache.jetspeed.deploy.war.dir}/struts-demo"/>
+      <delete file="${org.apache.jetspeed.deploy.war.dir}/struts-demo.war"/>
+      <delete dir="${org.apache.jetspeed.deploy.war.dir}/jsf-demo"/>
+      <delete file="${org.apache.jetspeed.deploy.war.dir}/jsf-demo.war"/>
+      <delete dir="${org.apache.jetspeed.deploy.war.dir}/jsf-demo-myfaces"/>
+      <delete file="${org.apache.jetspeed.deploy.war.dir}/jsf-demo-myfaces.war"/>
+      <delete dir="${org.apache.jetspeed.deploy.war.dir}/php"/>
+      <delete file="${org.apache.jetspeed.deploy.war.dir}/php.war"/>
+      <delete dir="${org.apache.jetspeed.deploy.war.dir}/perl"/>
+      <delete file="${org.apache.jetspeed.deploy.war.dir}/perl.war"/>
+      <delete dir="${org.apache.jetspeed.deploy.war.dir}/rss"/>
+      <delete file="${org.apache.jetspeed.deploy.war.dir}/rss.war"/>
+      <delete dir="${org.apache.jetspeed.deploy.war.dir}/jpetstore"/>
+      <delete file="${org.apache.jetspeed.deploy.war.dir}/jpetstore.war"/>
+      <j:set var="context_dir" value="${org.apache.jetspeed.server.home}/conf/Catalina/localhost"/>
+      <delete file="${context_dir}/${org.apache.jetspeed.portal.artifactId}.xml"/>
+      <delete file="${context_dir}/security.xml"/>
+      <delete file="${context_dir}/jpetstore.xml"/>
+  </goal>
+  
+  <!-- ============================================= -->
+  <!-- ============== GETTING STARTED ============== -->
+  <!-- ============================================= -->
+  
+  <goal name="j2:doStart">
+
+    <maven:property name="deployType" defaultValue="j2:fullDeploy"/>
+    <maven:property name="recreateDB" defaultValue="true"/>
+
+    <j:if test="${recreateDB}">
+      <attainGoal name="j2:db.recreate"/>
+    </j:if>
 
-    <goal name="j2:pam.strutsdeploy">
-        <j:set var="maven.war.final.name" value="struts-demo" />
-        <attainGoal name="j2:deploy" />
-    </goal>
-
-    <goal name="j2:pam.strutsundeploy">
-        <j:set var="maven.war.final.name" value="struts-demo" />
-        <attainGoal name="j2:undeploy" />
-    </goal>
-
-    <goal name="j2:pam.jpetstoredeploy">
-        <j:set var="maven.war.final.name" value="jpetstore" />
-        <attainGoal name="j2:deploy" />
-    </goal>
-
-    <goal name="j2:pam.jpetstoreundeploy">
-        <j:set var="maven.war.final.name" value="jpetstore" />
-        <attainGoal name="j2:undeploy" />
-    </goal>
-
-    <goal name="j2:pam.jsfdeploy">
-        <j:set var="maven.war.final.name" value="jsf-demo" />
-        <attainGoal name="j2:deploy" />
-    </goal>
-
-    <goal name="j2:pam.jsfundeploy">
-        <j:set var="maven.war.final.name" value="jsf-demo" />
-        <attainGoal name="j2:undeploy" />
-    </goal>
-
-    <goal name="j2:pam.jsfmyfacesdeploy">
-        <j:set var="maven.war.final.name" value="jsf-demo-myfaces" />
-        <attainGoal name="j2:deploy" />
-    </goal>
-
-    <goal name="j2:pam.jsfmyfacesundeploy">
-        <j:set var="maven.war.final.name" value="jsf-demo-myfaces" />
-        <attainGoal name="j2:undeploy" />
-    </goal>
-
-    <goal name="j2:pam.securitydeploy">
-        <j:set var="maven.war.final.name" value="security" />
-        <attainGoal name="j2:deploy" />
-    </goal>
-
-    <goal name="j2:pam.securityundeploy">
-        <j:set var="maven.war.final.name" value="security" />
-        <attainGoal name="j2:undeploy" />
-    </goal>
-
-    <goal name="j2:pam.phpdeploy">
-        <j:set var="maven.war.final.name" value="php" />
-        <attainGoal name="j2:deploy" />
-    </goal>
-
-    <goal name="j2:pam.phpundeploy">
-        <j:set var="maven.war.final.name" value="php" />
-        <attainGoal name="j2:undeploy" />
-    </goal>
-
-    <goal name="j2:pam.perldeploy">
-        <j:set var="maven.war.final.name" value="perl" />
-        <attainGoal name="j2:deploy" />
-    </goal>
-
-    <goal name="j2:pam.perlundeploy">
-        <j:set var="maven.war.final.name" value="perl" />
-        <attainGoal name="j2:undeploy" />
-    </goal>
-
-    <goal name="j2:pam.rssdeploy">
-        <j:set var="maven.war.final.name" value="rss" />
-        <attainGoal name="j2:deploy" />
-    </goal>
-
-    <goal name="j2:pam.rssundeploy">
-        <j:set var="maven.war.final.name" value="rss" />
-        <attainGoal name="j2:undeploy" />
-    </goal>
-    	
-	<!-- ================================================= -->
-	<!-- ============== COMPONENT DEPLOYMENT ============= -->
-	<!-- ================================================= -->
-	    
-	<goal name="j2:jar.deploy">
-        <attainGoal name="jar:install" />
-        <echo>Deploying ${pom.artifactId}-${jetspeed.version}.jar to ${org.apache.jetspeed.deploy.war.dir}/jetspeed/WEB-INF/lib...</echo>
-        <copy file="${basedir}/target/${pom.artifactId}-${jetspeed.version}.jar"
-            todir="${org.apache.jetspeed.deploy.war.dir}/jetspeed/WEB-INF/lib" overwrite="true" failonerror="true" />
-    </goal>
-    
-    <goal name="j2:jar.deploy.shared">
-  	    <attainGoal name="jar:install"/>
-	    <echo>Deploying ${pom.artifactId}-${jetspeed.version}.jar to ${org.apache.jetspeed.server.shared}...</echo>   
-  	    <copy file="${basedir}/target/${pom.artifactId}-${jetspeed.version}.jar" 
-  	        todir="${org.apache.jetspeed.server.shared}"/>
-    </goal>
-    
-    
-    <!-- ================================================= -->
-	<!-- ============== CONTENT DEPLOYMENT   ============= -->
-	<!-- ================================================= -->
-	<goal name="j2:deploy.decorations">
-	    <copy todir="${org.apache.jetspeed.portal.dir}/WEB-INF/decorations" >
-	      <fileset dir="${basedir}/src/webapp/WEB-INF/decorations" />
-	    </copy>	  
-	</goal>
-	
-	<!-- ============================================== -->
-	<!-- ============== PORTAL DEPLOYMENT ============= -->
-	<!-- ============================================== -->
-	
-	<goal name="j2:copy.shared.deps">
-        <attainGoal name="j2:catalina.base.shared" />
-        <attainGoal name="j2:catalina.shared" />
-    </goal>
-	
-	<goal name="j2:catalina.base.shared" description="Copy all base jars necessary for common container">
-        <echo>Deploys misc. jars shared/lib  to Tomcat</echo>
-        <echo>Copying from ${maven.repo.local} to ${org.apache.jetspeed.server.shared}...</echo>
-        <copy file="${maven.repo.local}/pluto/jars/pluto-${pluto.version}.jar"
-            todir="${org.apache.jetspeed.server.shared}" />
-        <copy
-            file="${maven.repo.local}/portals-bridges/jars/portals-bridges-common-${portals.bridges.common.version}.jar"
-            todir="${org.apache.jetspeed.server.shared}" />
-    </goal>
-
-    <goal name="j2:catalina.shared" description="Copy all jars necessary for common container">
-        <echo>Deploys container jars to shared/lib to Tomcat</echo>
-        <copy file="${maven.repo.local}/${jetspeed.groupId}/jars/jetspeed-commons-${jetspeed.version}.jar"
-            todir="${org.apache.jetspeed.server.shared}" />
-        <copy file="${maven.repo.local}/${jetspeed.groupId}/jars/jetspeed-api-${jetspeed.version}.jar"
-            todir="${org.apache.jetspeed.server.shared}" />
-        <copy file="${maven.repo.local}/portlet-api/jars/portlet-api-1.0.jar" todir="${org.apache.jetspeed.server.shared}" />
-    </goal>
-    
-    <goal name="j2:portal.deploy">
-        <attainGoal name="j2:remove.wars" />
-        <echo message="Deploying ${pom.groupId}" />
-        <delete dir="${org.apache.jetspeed.deploy.war.dir}/${org.apache.jetspeed.portal.name}" />
-        <copy file="${maven.repo.local}/${pom.groupId}/wars/${org.apache.jetspeed.portal.name}-${pom.currentVersion}.war"
-            tofile="${org.apache.jetspeed.deploy.war.dir}/${org.apache.jetspeed.portal.name}.war" verbose="true" />
-        <unwar src="${org.apache.jetspeed.deploy.war.dir}/${org.apache.jetspeed.portal.name}.war"
-            dest="${org.apache.jetspeed.deploy.war.dir}/${org.apache.jetspeed.portal.name}" />
-
-        <j:set var="catalina_version_major" value="${org.apache.jetspeed.catalina.version.major}" />
-        <j:choose>
-            <j:when test="${catalina_version_major == '5.5'}">
-                <j:set var="context_file_source" value="jetspeed-tomcat-5.5.xml" />
-            </j:when>
-            <j:otherwise>
-                <j:set var="context_file_source" value="jetspeed-tomcat-5.xml" />
-            </j:otherwise>
-        </j:choose>
-        <j:set var="context_file_target"
-            value="${org.apache.jetspeed.server.home}/conf/Catalina/localhost/jetspeed.xml" />
-        <copy file="${org.apache.jetspeed.plugin.root}/plugin-resources/${context_file_source}" tofile="${context_file_target}" overwrite="true">
-            <filterset begintoken="@" endtoken="@">
-                <filter token="USERNAME" value="${org.apache.jetspeed.production.database.user}" />
-                <filter token="PASSWORD" value="${org.apache.jetspeed.production.database.password}" />
-                <filter token="DRIVER" value="${org.apache.jetspeed.production.database.driver}" />
-                <filter token="URL" value="${org.apache.jetspeed.production.database.url}" />
-            </filterset>
-        </copy>
-        <attainGoal name="j2:catalina.base.shared" />
-        <attainGoal name="j2:catalina.shared" />
-    </goal>
-    
-    <goal name="j2:portal.install">
-    	<copy todir="${maven.build.dest}" overwrite="true">
-            <fileset dir="${org.apache.jetspeed.plugin.root}/plugin-resources/etc/db-ojb" />
-            <filterset begintoken="@" endtoken="@">
-                <filter token="PLATFORM" value="${org.apache.jetspeed.production.database.ojb.platform}" />
-            </filterset>
-        </copy>
-        <attainGoal name="war:init" />
-        
-        <attainGoal name="war:webapp" />
-              
-        <util:available file="${maven.war.src}/WEB-INF/conf/jetspeed.properties">
-        <copy file="${maven.war.src}/WEB-INF/conf/jetspeed.properties"
-            tofile="${maven.war.webapp.dir}/WEB-INF/conf/jetspeed.properties" overwrite="true">
-            <filterset begintoken="@" endtoken="@">
-                <filter token="AUTODEPLOYMENT_SERVER" value="${org.apache.jetspeed.services.autodeployment.server}" />
-                <filter token="AUTODEPLOYMENT_USER" value="${org.apache.jetspeed.services.autodeployment.user}" />
-                <filter token="AUTODEPLOYMENT_PASSWORD" value="${org.apache.jetspeed.services.autodeployment.password}" />
-            </filterset>
-            <!-- Below filter is special because this concerns a numeric property for which a non-numeric token results
-                in a test failure (TestSpringEngine)
-                This property therefore MUST remain defined EXACTLY as specified for this filter to be able to work
-            -->
-            <filterset begintoken="autodeployment.catalina.version.major" endtoken="5">
-                <filter token="="
-                    value="autodeployment.catalina.version.major=${org.apache.jetspeed.catalina.version.major}" />
-            </filterset>
-            <filterset begintoken="autodeployment.port" endtoken="8080">
-                <filter token="=" value="autodeployment.port=${org.apache.jetspeed.services.autodeployment.port}" />
-            </filterset>
-        </copy>
-        </util:available>
-        
-        <attainGoal name="war:install" />
-    </goal>
-    
-    <goal name="j2:portal.hotdeploy">
-        <echo message="Hot Deploying ${pom.artifactId}, ${pom.name}" />
-        <copy todir="${org.apache.jetspeed.deploy.war.dir}/${org.apache.jetspeed.portal.name}/WEB-INF/classes" overwrite="true">
-            <fileset dir="${maven.build.dir}/classes"></fileset>
-        </copy>
-        <copy todir="${org.apache.jetspeed.deploy.war.dir}/${org.apache.jetspeed.portal.name}/" overwrite="true" verbose="true">
-            <fileset dir="${maven.src.dir}/webapp">
-                <exclude name="WEB-INF/db/**" />
-            </fileset>
-        </copy>
-    </goal>
-    
-    <goal name="j2:fullDeploy">
-        <attainGoal name="j2:portal.deploy" />
-        <attainGoal name="j2:pam.layoutdeploy" />
-        <attainGoal name="j2:pam.demodeploy" />
-        <attainGoal name="j2:pam.palmdeploy" />
-        <attainGoal name="j2:pam.pamdeploy" />
-        <attainGoal name="j2:pam.strutsdeploy" />
-        <attainGoal name="j2:pam.jsfdeploy" />
-        <attainGoal name="j2:pam.jsfmyfacesdeploy" />
-        <attainGoal name="j2:pam.securitydeploy" />
-        <attainGoal name="j2:pam.phpdeploy" />
-        <attainGoal name="j2:pam.perldeploy" />
-        <attainGoal name="j2:pam.rssdeploy" />
-        <attainGoal name="j2:pam.jpetstoredeploy" />
-
-        <attainGoal name="j2:db.entities" />
-    </goal>
-
-    <goal name="j2:nodbfullDeploy">
-        <attainGoal name="j2:portal.deploy" />
-        <attainGoal name="j2:pam.layoutdeploy" />
-        <attainGoal name="j2:pam.demodeploy" />
-        <attainGoal name="j2:pam.palmdeploy" />
-        <attainGoal name="j2:pam.pamdeploy" />
-        <attainGoal name="j2:pam.strutsdeploy" />
-        <attainGoal name="j2:pam.jsfdeploy" />
-        <attainGoal name="j2:pam.jsfmyfacesdeploy" />
-        <attainGoal name="j2:pam.securitydeploy" />
-        <attainGoal name="j2:pam.phpdeploy" />
-        <attainGoal name="j2:pam.perldeploy" />
-        <attainGoal name="j2:pam.rssdeploy" />
-        <attainGoal name="j2:pam.jpetstoredeploy" />
-    </goal>
+    <attainGoal name="j2:remove.wars"/>
+      
+    <!-- Dependency copying -->
+    <attainGoal name="j2:copy.shared.deps"/>
 
-    <goal name="j2:minDeploy">
-        <attainGoal name="j2:portal.deploy" />
-        <attainGoal name="j2:pam.layoutdeploy" />
-        <attainGoal name="j2:pam.securitydeploy" />
-        <attainGoal name="j2:db.entities" />
-    </goal>
+    <attainGoal name="${deployType}"/>
+  </goal>
 
-    <goal name="j2:nodbMinDeploy">
-        <attainGoal name="j2:portal.deploy" />
-        <attainGoal name="j2:pam.layoutdeploy" />
-        <attainGoal name="j2:pam.securitydeploy" />
-    </goal>
-    
-	<!-- ============================================== -->
-	<!-- ============== PORTAL CLEAN UP ============= -->
-	<!-- ============================================== -->
-    
-    <goal name="j2:remove.wars">
-        <echo>Remove war files, make sure to shutdown server first...</echo>
-        <delete dir="${org.apache.jetspeed.deploy.war.dir}/${org.apache.jetspeed.portal.name}" />
-        <delete file="${org.apache.jetspeed.deploy.war.dir}/${org.apache.jetspeed.portal.name}.war" />
-        <delete dir="${org.apache.jetspeed.deploy.war.dir}/demo" />
-        <delete file="${org.apache.jetspeed.deploy.war.dir}/demo.war" />
-        <delete dir="${org.apache.jetspeed.deploy.war.dir}/palm" />
-        <delete file="${org.apache.jetspeed.deploy.war.dir}/palm.war" />
-        <delete dir="${org.apache.jetspeed.deploy.war.dir}/pam" />
-        <delete file="${org.apache.jetspeed.deploy.war.dir}/pam.war" />
-        <delete dir="${org.apache.jetspeed.deploy.war.dir}/security" />
-        <delete file="${org.apache.jetspeed.deploy.war.dir}/security.war" />
-        <delete dir="${org.apache.jetspeed.deploy.war.dir}/struts-demo" />
-        <delete file="${org.apache.jetspeed.deploy.war.dir}/struts-demo.war" />
-        <delete dir="${org.apache.jetspeed.deploy.war.dir}/jsf-demo" />
-        <delete file="${org.apache.jetspeed.deploy.war.dir}/jsf-demo.war" />
-        <delete dir="${org.apache.jetspeed.deploy.war.dir}/jsf-demo-myfaces" />
-        <delete file="${org.apache.jetspeed.deploy.war.dir}/jsf-demo-myfaces.war" />
-        <delete dir="${org.apache.jetspeed.deploy.war.dir}/php" />
-        <delete file="${org.apache.jetspeed.deploy.war.dir}/php.war" />
-        <delete dir="${org.apache.jetspeed.deploy.war.dir}/perl" />
-        <delete file="${org.apache.jetspeed.deploy.war.dir}/perl.war" />
-        <delete dir="${org.apache.jetspeed.deploy.war.dir}/rss" />
-        <delete file="${org.apache.jetspeed.deploy.war.dir}/rss.war" />
-        <delete dir="${org.apache.jetspeed.deploy.war.dir}/jpetstore" />
-        <delete file="${org.apache.jetspeed.deploy.war.dir}/jpetstore.war" />
-        <j:set var="context_dir" value="${org.apache.jetspeed.server.home}/conf/Catalina/localhost" />
-        <delete file="${context_dir}/${org.apache.jetspeed.portal.name}.xml" />
-        <delete file="${context_dir}/security.xml" />
-        <delete file="${context_dir}/jpetstore.xml" />
-    </goal>
-	
-    <!-- ============================================= -->
-	<!-- ============== GETTING STARTED ============== -->
-	<!-- ============================================= -->
-	
-	<goal name="j2:doStart">
-        <maven:property name="deployType" defaultValue="j2:fullDeploy" />
-        <maven:property name="recreateDB" defaultValue="true" />
-
-        <j:if test="${recreateDB}">
-            <attainGoal name="j2:db.recreate" />
+  <goal name="j2:quickStart" description="Creates the production DB and calls portal/maven j2:fullDeploy">
+    <j:set var="deployType" value="j2:fullDeploy"/>
+    <attainGoal name="j2:doStart"/>
+  </goal>
+
+  <goal name="j2:nodbQuickStart" description="Don't create a new production DB but call portal/maven j2:fullDeploy">
+    <j:set var="deployType" value="j2:nodbfullDeploy"/>
+    <j:set var="recreateDB" value="false"/>
+    <attainGoal name="j2:doStart"/>
+  </goal>
+
+  <goal name="j2:minStart" description="Creates the production DB and calls portal/maven j2:minDeploy">
+    <j:set var="deployType" value="j2:minDeploy"/>
+    <attainGoal name="j2:doStart"/>
+  </goal>
+
+  <goal name="j2:nodbMinStart" description="Don't create a new production DB but call portal/maven j2:minDeploy">
+    <j:set var="deployType" value="j2:nodbMinDeploy"/>
+    <j:set var="recreateDB" value="false"/>
+    <attainGoal name="j2:doStart"/>
+  </goal>
+    
+  <goal name="j2:basicStart" description="Creates the production DB and calls portal/maven j2:basicDeploy">
+    <j:set var="deployType" value="j2:basicDeploy"/>
+    <attainGoal name="j2:doStart"/>
+  </goal>
+
+  <goal name="j2:nodbBasicStart" description="Don't create a new production DB but call portal/maven j2:basicDeploy">
+    <j:set var="deployType" value="j2:nodbBasicDeploy"/>
+    <j:set var="recreateDB" value="false"/>
+    <attainGoal name="j2:doStart"/>
+  </goal>
+    
+  <!-- ================================================= -->
+  <!-- ================= PLUGIN INTERNAL =============== -->
+  <!-- ================================================= -->
+  
+  <goal name="j2:_check.required.property">
+    <fail message="Required property ${required.property} undefined. See http://portals.apache.org/jetspeed-2/getting-started.html."
+          unless="${required.property}"/>
+  </goal>
+
+  <goal name="j2:_check.required.properties" description="Check if the required properties are defined">
+    <j:if test="${_requiredPropertiesChecked == null}">
+      <j:set var="_requiredPropertiesChecked" value="true"/>      
+      <j:set var="required.property" value="org.apache.jetspeed.portal.home"/>
+      <attainGoal name="j2:_check.required.property"/>
+      <j:set var="required.property" value="org.apache.jetspeed.portal.groupId"/>
+      <attainGoal name="j2:_check.required.property"/>
+      <j:set var="required.property" value="org.apache.jetspeed.portal.artifactId"/>
+      <attainGoal name="j2:_check.required.property"/>
+      <j:set var="required.property" value="org.apache.jetspeed.portal.name"/>
+      <attainGoal name="j2:_check.required.property"/>
+      <j:set var="required.property" value="org.apache.jetspeed.portal.currentVersion"/>
+      <attainGoal name="j2:_check.required.property"/>
+      <j:set var="required.property" value="org.apache.jetspeed.server.home"/>
+      <attainGoal name="j2:_check.required.property"/>
+      <j:set var="required.property" value="org.apache.jetspeed.catalina.version.major"/>
+      <attainGoal name="j2:_check.required.property"/>
+      <j:set var="required.property" value="org.apache.jetspeed.server.shared"/>
+      <attainGoal name="j2:_check.required.property"/>
+      <j:set var="required.property" value="org.apache.jetspeed.deploy.war.dir"/>
+      <attainGoal name="j2:_check.required.property"/>
+      <j:set var="required.property" value="org.apache.jetspeed.services.autodeployment.user"/>
+      <attainGoal name="j2:_check.required.property"/>
+      <j:set var="required.property" value="org.apache.jetspeed.services.autodeployment.password"/>
+      <attainGoal name="j2:_check.required.property"/>
+    </j:if>
+  </goal>
+
+  <goal name="j2:_set.rdbms.props">
+    <j:set var="dbase" value="${org.apache.jetspeed.target.rdbms}"/>
+    <j:choose>
+      <j:when test="${dbase == 'mssql'}">
+        <j:set var="org.apache.jetspeed.target.rdbms.name" value="mssql"/>
+        <j:set var="org.apache.jetspeed.target.rdbms.dropdrops" value="false"/>
+      </j:when>
+      <j:when test="${dbase == 'mysql'}">
+        <j:set var="org.apache.jetspeed.target.rdbms.name" value="mysql"/>
+        <j:set var="org.apache.jetspeed.target.rdbms.dropdrops" value="false"/>
+      </j:when>
+      <j:when test="${dbase == 'oracle'}">
+        <j:set var="org.apache.jetspeed.target.rdbms.name" value="oracle"/>
+        <j:set var="org.apache.jetspeed.target.rdbms.dropdrops" value="true"/>
+      </j:when>
+      <j:when test="${dbase == 'hsql'}">
+        <j:set var="org.apache.jetspeed.target.rdbms.name" value="hypersonic"/>
+        <j:set var="org.apache.jetspeed.target.rdbms.dropdrops" value="false"/>
+      </j:when>
+      <j:when test="${dbase == 'postgres'}">
+        <j:set var="org.apache.jetspeed.target.rdbms.name" value="postgresql"/>
+        <j:set var="org.apache.jetspeed.target.rdbms.dropdrops" value="true"/>
+      </j:when>
+      <j:otherwise>
+        <fail message="unsupported target database: ${org.apache.jetspeed.target.rdbms}"/>
+      </j:otherwise>
+    </j:choose>
+  </goal>
+  
+  <goal name="j2:_generate.sql"
+        description="Build SQL scripts using Torque generator for target database: ${org.apache.jetspeed.target.rdbms.name}">
+    <echo message="Using Torque schema located under: ${torque.schema.dir}"/>
+    <j:if test="${_torqueInitialized == null}">
+      <attainGoal name="torque:init"/>
+      <j:set var="_torqueInitialized" value="true"/>
+    </j:if>
+    <echo message="Generating SQL schema creation scripts for ${org.apache.jetspeed.target.rdbms.name}"/>
+    <mkdir dir="${portal.sql.target.dir}/${org.apache.jetspeed.target.rdbms}/schema"/>       
+    <torque-sql basePathToDbProps="sql/base/"
+                contextProperties="${torque.contextProperties}"
+                controlTemplate="${torque.template.sql}"
+                idTableXMLFile="${torque.idTableXMLFile}"
+                outputDirectory="${portal.sql.target.dir}/${org.apache.jetspeed.target.rdbms}/schema"
+                outputFile="report.${torque.project}.sql.generation"
+                sqldbmap="${portal.sql.target.dir}/${org.apache.jetspeed.target.rdbms}/schema/sqldb.map"
+                targetDatabase="${org.apache.jetspeed.target.rdbms.name}"
+                useClasspath="true">
+      <fileset dir="${torque.schema.dir}" includes="${torque.schema.sql.includes}" excludes="${torque.schema.sql.excludes}"/> 
+    </torque-sql>
+    <j:if test="${org.apache.jetspeed.target.rdbms.dropdrops}">
+      <j:set var="sql.src.path" value="${portal.sql.target.dir}/${org.apache.jetspeed.target.rdbms}/schema"/> 
+      <j:set var="process.database.script.goal" value="j2:_run.dropdrops"/>
+      <attainGoal name="j2:_process.all.scripts.in.path"/>   
+    </j:if>        
+  </goal>
+  
+  <goal name="j2:_copy.rdbms.sql.scripts" >
+    <!-- Copy specific DB scripts possibly also overriding the Torque-generated ones -->      
+    <copy todir="${portal.sql.target.dir}/${org.apache.jetspeed.target.rdbms}"
+          overwrite="true"
+          verbose="true"
+          failonerror="false"
+          flatten="true">
+      <fileset dir="${portal.sql.src.dir}/${org.apache.jetspeed.target.rdbms}">
+        <include name="**/*.sql"/>
+      </fileset>
+    </copy>        
+  </goal>
+
+  <!-- Use this uility goal to process all of the .sql scripts in the specified path using the specified goal -->
+  <goal name="j2:process.all.scripts.in.path" >
+    <echo>Checking for SQL scripts at path ${sql.src.path}...</echo>
+    <!-- process user custom SQL -->
+    <util:available file="${sql.src.path}">
+      <echo>Running SQL scripts in directory ${sql.src.path}...</echo>
+      <util:file name="${sql.src.path}" var="sqldir"/>
+      <j:set var="fileList" value="${sqldir.listFiles()}"/>
+      <j:forEach items="${fileList}" var="sqlfile" >
+        <j:if test="${sqlfile.name.endsWith('.sql')}" >
+          <j:set var="database.arg.script" value="${sqlfile.absolutePath}"/>
+          <attainGoal name="${process.database.script.goal}"/>
         </j:if>
-
-		<attainGoal name="j2:remove.wars" />
-        
-        <!-- Dependency copying -->
-        <attainGoal name="j2:copy.shared.deps" />
-
-		<attainGoal name="${deployType}" />
-    </goal>
-
-    <goal name="j2:quickStart" description="Creates the production DB and calls portal/maven j2:fullDeploy">
-        <j:set var="deployType" value="j2:fullDeploy" />
-        <attainGoal name="j2:doStart" />
-    </goal>
-
-    <goal name="j2:nodbQuickStart" description="Don't create a new production DB but call portal/maven j2:fullDeploy">
-        <j:set var="deployType" value="j2:nodbfullDeploy" />
-        <j:set var="recreateDB" value="false" />
-        <attainGoal name="j2:doStart" />
-    </goal>
-
-    <goal name="j2:minStart" description="Creates the production DB and calls portal/maven j2:minDeploy">
-        <j:set var="deployType" value="j2:minDeploy" />
-        <attainGoal name="j2:doStart" />
-    </goal>
-
-    <goal name="j2:nodbMinStart" description="Don't create a new production DB but call portal/maven j2:minDeploy">
-        <j:set var="deployType" value="j2:nodbMinDeploy" />
-        <j:set var="recreateDB" value="false" />
-        <attainGoal name="j2:doStart" />
-    </goal>
+      </j:forEach>
+    </util:available>
+  </goal>
+  
+  <goal name="j2:_run.dropdrops">
+    <java classname="org.apache.jetspeed.dbutil.ScriptUtil" fork="yes">
+      <classpath>
+        <path refid="maven.dependency.classpath"/>
+        <pathelement path="${maven.build.dest}"/>
+        <pathelement path="${org.apache.jetspeed.plugin.root}"/>
+      </classpath>
+      <arg value="-drops"/>
+      <arg value="${database.arg.script}"/>
+    </java>
+  </goal>
+
+  <!-- Use this uility goal to process all of the .sql scripts in the specified path -->
+  <goal name="j2:_process.all.scripts.in.path" >
+    <echo>Checking for SQL scripts at path ${sql.src.path}...</echo>
+    <!-- process user custom SQL -->
+    <util:available file="${sql.src.path}">
+      <echo>Running SQL scripts in directory ${sql.src.path}...</echo>
+      <util:file name="${sql.src.path}" var="sqldir"/>
+      <j:set var="fileList" value="${sqldir.listFiles()}"/>
+      <j:forEach items="${fileList}" var="sqlfile" >
+        <j:if test="${sqlfile.name.endsWith('.sql')}" >
+          <j:set var="database.arg.script" value="${sqlfile.absolutePath}"/>
+          <attainGoal name="${process.database.script.goal}"/>
+        </j:if>
+      </j:forEach>
+    </util:available>
+  </goal>
+    
+  <goal name="j2:_start.hsql">
+    <echo message="===================================="/>
+    <echo message="${maven.start.hsql.message}"/>
+    <echo message="===================================="/>
+    <java classname="org.hsqldb.Server" fork="yes">
+      <classpath>
+        <pathelement path="${plugin.getDependencyPath('hsqldb')}"/>
+      </classpath>
+      <arg value="-database"/>
+      <arg value="${org.apache.jetspeed.plugin.hsql.db}"/>
+      <arg value="-port"/>
+      <arg value="9001"/>
+      <arg value="-silent"/>
+      <arg value="true"/>
+      <arg value="-trace"/>
+      <arg value="false"/>
+    </java>
+  </goal>
+    
+  <goal name="j2:_db.execute">
+    <!-- Ugly hack (or sound fix) setting the parentScope to an empty String because
+         with maven project inheritance the size of this property is killing
+         performance when the sql task is trying to interpose property values.
+         See: http://issues.apache.org/jira/browse/JS2-322
+         Without this hack the time to run the db.create.test task (using Oracle9i)
+         increases by at least 30 seconds for each level of inheritance.
+         Note: the project generated with genapp has an inheritance level of 4!
+         Hopefully, these kind of problems are solved when we move to maven 2 ...
+    -->      
+    <j:set var="parentScope" scope="parent" value=""/>
+    <sql driver="${org.apache.jetspeed.database.driver}" url="${org.apache.jetspeed.database.url}"
+         userid="${org.apache.jetspeed.database.user}" password="${org.apache.jetspeed.database.password}"
+         src="${database.arg.script}"
+         onerror="${database.arg.onerror}">
+      <classpath>
+        <pathelement path="${org.apache.jetspeed.jdbc.drivers.path}"/>
+        <pathelement path="${plugin.getDependencyPath('hsqldb')}"/>
+      </classpath>
+    </sql>
+  </goal>
+    
+  <goal name="j2:_db.test.properties">
+    <j:set var="org.apache.jetspeed.database.default.name" value="${org.apache.jetspeed.test.database.default.name}"/>
+    <j:set var="org.apache.jetspeed.database.url" value="${org.apache.jetspeed.test.database.url}"/>
+    <j:set var="org.apache.jetspeed.database.driver" value="${org.apache.jetspeed.test.database.driver}"/>
+    <j:set var="org.apache.jetspeed.database.user" value="${org.apache.jetspeed.test.database.user}"/>
+    <j:set var="org.apache.jetspeed.database.password" value="${org.apache.jetspeed.test.database.password}"/>
+    <j:set var="org.apache.jetspeed.jdbc.drivers.path" value="${org.apache.jetspeed.test.jdbc.drivers.path}"/>
+  </goal>
+
+  <goal name="j2:_db.production.properties">
+    <j:set var="org.apache.jetspeed.database.default.name" value="${org.apache.jetspeed.production.database.default.name}"/>
+    <j:set var="org.apache.jetspeed.database.url" value="${org.apache.jetspeed.production.database.url}"/>
+    <j:set var="org.apache.jetspeed.database.driver" value="${org.apache.jetspeed.production.database.driver}"/>
+    <j:set var="org.apache.jetspeed.database.user" value="${org.apache.jetspeed.production.database.user}"/>
+    <j:set var="org.apache.jetspeed.database.password" value="${org.apache.jetspeed.production.database.password}"/>
+    <j:set var="org.apache.jetspeed.jdbc.drivers.path" value="${org.apache.jetspeed.production.jdbc.drivers.path}"/>
+  </goal>
+  
+  <goal name="j2:_db.create">
+    <j:set var="portal.sql.dir" value="${org.apache.jetspeed.portal.home}/${org.apache.jetspeed.portal.sql.dir}"/>
+    <j:set var="sql.src.path" value="${portal.sql.dir}/${org.apache.jetspeed.database.default.name}/schema"/>
+    <j:set var="database.arg.onerror" value="abort"/> 
+    <j:set var="process.database.script.goal" value="j2:_db.execute"/>
+    <attainGoal name="j2:_process.all.scripts.in.path"/>
+
+    <j:set var="database.arg.script" value="${portal.sql.dir}/populate-db-default.sql"/>
+    <attainGoal name="j2:_db.execute"/>
+
+     <!-- process user custom SQL -->
+    <echo>Running user-defined SQL scripts...</echo>   
+    <j:set var="sql.src.path" value="${basedir}/src/sql"/>
+    <j:set var="process.database.script.goal" value="j2:_db.execute"/>
+    <attainGoal name="j2:_process.all.scripts.in.path"/>
+  </goal>
+    
+  <goal name="j2:_db.drop">
+    <j:set var="portal.sql.dir" value="${org.apache.jetspeed.portal.home}/${org.apache.jetspeed.portal.sql.dir}"/>
+    <j:set var="database.arg.script" value="${portal.sql.dir}/drop.sql"/>
+    <j:set var="database.arg.onerror" value="continue"/>
+    <attainGoal name="j2:_db.execute"/>
+  </goal>
     
-    <!-- ====================================================== -->
-	<!-- ============== GENERATE NEW APPLICATION ============== -->
-	<!-- ====================================================== -->
-	
-	<goal name="j2:genapp.portal">
-		<fail
-            message="Required property org.apache.jetspeed.genapp.home undefined. See http://portals.apache.org/jetspeed-2/getting-started.html."
-            unless="org.apache.jetspeed.genapp.home" />
-            
-    	<mkdir dir="${org.apache.jetspeed.genapp.home}/src/webapp"/>
-    	<copy todir="${org.apache.jetspeed.genapp.home}/src/webapp" overwrite="true" failonerror="true">
-            <fileset dir="${org.apache.jetspeed.plugin.root}/plugin-resources/webapp" />
-        </copy>
-        
-        <copy file="${org.apache.jetspeed.plugin.root}/plugin-resources/project.properties"
-            tofile="${org.apache.jetspeed.genapp.home}/project.properties" overwrite="true"
-            failonerror="true" />
-        <copy file="${org.apache.jetspeed.plugin.root}/plugin-resources/full-portal.xml"
-            tofile="${org.apache.jetspeed.genapp.home}/full-portal.xml" overwrite="true"
-            failonerror="true" />
-        <copy file="${org.apache.jetspeed.plugin.root}/plugin-resources/project-info.xml"
-            tofile="${org.apache.jetspeed.genapp.home}/project-info.xml" overwrite="true"
-            failonerror="true" />
-        <copy file="${org.apache.jetspeed.plugin.root}/plugin-resources/core-build.xml"
-            tofile="${org.apache.jetspeed.genapp.home}/core-build.xml" overwrite="true"
-            failonerror="true" />
-        <copy file="${org.apache.jetspeed.plugin.root}/plugin-resources/jetspeed-components.xml"
-            tofile="${org.apache.jetspeed.genapp.home}/jetspeed-components.xml" overwrite="true"
-            failonerror="true" />
-        <copy file="${org.apache.jetspeed.plugin.root}/plugin-resources/portal-project.xml"
-            tofile="${org.apache.jetspeed.genapp.home}/project.xml" overwrite="true"
-            failonerror="true" />
-        
-        <!-- Not Currently Working
-        <maven:set plugin="maven-eclipse-plugin" property="basedir" value="${org.apache.jetspeed.genapp.home}" />
-        <attainGoal name="eclipse" />
-        -->   
-	</goal>
-	
-	<goal name="j2:genapp.portal.runtime">
-
-    	<copy todir="${maven.build.dir}/${pom.artifactId}" overwrite="true" failonerror="true">
-            <fileset dir="${org.apache.jetspeed.plugin.root}/plugin-resources/webapp" />
-        </copy>
-        
-        <copy file="${org.apache.jetspeed.plugin.root}/plugin-resources/webapp/WEB-INF/conf/jetspeed.properties"
-            tofile="${maven.build.dir}/${pom.artifactId}/WEB-INF/conf/jetspeed.properties" overwrite="true">
-            <filterset begintoken="@" endtoken="@">
-                <filter token="AUTODEPLOYMENT_SERVER" value="${org.apache.jetspeed.services.autodeployment.server}" />
-                <filter token="AUTODEPLOYMENT_USER" value="${org.apache.jetspeed.services.autodeployment.user}" />
-                <filter token="AUTODEPLOYMENT_PASSWORD" value="${org.apache.jetspeed.services.autodeployment.password}" />
-            </filterset>
-            <!-- Below filter is special because this concerns a numeric property for which a non-numeric token results
-                in a test failure (TestSpringEngine)
-                This property therefore MUST remain defined EXACTLY as specified for this filter to be able to work
-            -->
-            <filterset begintoken="autodeployment.catalina.version.major" endtoken="5">
-                <filter token="="
-                    value="autodeployment.catalina.version.major=${org.apache.jetspeed.catalina.version.major}" />
-            </filterset>
-            <filterset begintoken="autodeployment.port" endtoken="8080">
-                <filter token="=" value="autodeployment.port=${org.apache.jetspeed.services.autodeployment.port}" />
-            </filterset>
-        </copy>        
-
-        <copy file="${org.apache.jetspeed.plugin.root}/plugin-resources/project.properties"
-            tofile="${org.apache.jetspeed.genapp.home}/project.properties" overwrite="true"
-            failonerror="true" />
-        <copy file="${org.apache.jetspeed.plugin.root}/plugin-resources/full-portal.xml"
-            tofile="${org.apache.jetspeed.genapp.home}/full-portal.xml" overwrite="true"
-            failonerror="true" />
-        <copy file="${org.apache.jetspeed.plugin.root}/plugin-resources/project-info.xml"
-            tofile="${org.apache.jetspeed.genapp.home}/project-info.xml" overwrite="true"
-            failonerror="true" />
-        <copy file="${org.apache.jetspeed.plugin.root}/plugin-resources/core-build.xml"
-            tofile="${org.apache.jetspeed.genapp.home}/core-build.xml" overwrite="true"
-            failonerror="true" />
-        <copy file="${org.apache.jetspeed.plugin.root}/plugin-resources/jetspeed-components.xml"
-            tofile="${org.apache.jetspeed.genapp.home}/jetspeed-components.xml" overwrite="true"
-            failonerror="true" />          
-
-        
-        <!-- Not Currently Working
-        <maven:set plugin="maven-eclipse-plugin" property="basedir" value="${org.apache.jetspeed.genapp.home}" />
-        <attainGoal name="eclipse" />
-        -->   
-	</goal>    
 </project>
-



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org