Author: psharples
Date: Thu Oct 20 22:14:45 2011
New Revision: 1187098

URL: http://svn.apache.org/viewvc?rev=1187098&view=rev
Log:
Lot of refactoring to allow us to deploy the whole of wookie as maven 
artifacts.  The distribution type is WAR.

Modified:
    incubator/wookie/branches/0.9.1/ant/ivy-java-common.xml

Modified: incubator/wookie/branches/0.9.1/ant/ivy-java-common.xml
URL: 
http://svn.apache.org/viewvc/incubator/wookie/branches/0.9.1/ant/ivy-java-common.xml?rev=1187098&r1=1187097&r2=1187098&view=diff
==============================================================================
--- incubator/wookie/branches/0.9.1/ant/ivy-java-common.xml (original)
+++ incubator/wookie/branches/0.9.1/ant/ivy-java-common.xml Thu Oct 20 22:14:45 
2011
@@ -18,7 +18,7 @@
 <project xmlns:ivy="antlib:org.apache.ivy.ant" 
xmlns:m="http://ant.apache.org/ivy/maven"; 
xmlns:openpgp="antlib:org.apache.commons.openpgp.ant">
 
     <import file="ivy-common.xml"/>
-       
+
        <property name="project.lib.dir" 
location="${project.webapp.dir}/WEB-INF/lib" />
 
        <property name="project.core.src.dir" location="src" />
@@ -142,8 +142,8 @@
             <syspropertyset refid="run.syspropertyset.id"/>
            </java>             
        </target>       
-    
-    <target name="jar" depends="test-calling-project, clean-dist, 
compile-core" unless="not-subproject" description="--> make a jar file for this 
project">
+
+       <target name="jar-compiled" unless="not-subproject" 
depends="test-calling-project,clean-dist, compile-core">
        <mkdir dir="${dist.dir}"/>
        <!-- Create compiled jar -->
         <jar destfile="${dist.dir}/${ant.project.name}.jar">
@@ -162,26 +162,10 @@
                                <attribute name="Implementation-Version" 
value="${version}"/>
                        </manifest>
         </jar>
-       
-       <!-- Create source JAR -->
-       <jar destfile="${dist.dir}/${ant.project.name}-sources.jar">
-               <fileset dir="${project.core.src.dir}">
-                       <include name="**/*"/>
-               </fileset>
-                       <metainf dir="../../">
-                               <include name="LICENSE"/>
-                               <include name="NOTICE"/>
-                               <include name="DISCLAIMER"/>
-                       </metainf>    
-               <manifest>                              
-                               <attribute name="Built-By" 
value="${user.name}"/>
-                               <attribute name="Implementation-Vendor" 
value="Apache Software Foundation"/>
-                               <attribute name="Implementation-Title" 
value="${ant.project.name}"/>
-                               <attribute name="Implementation-Version" 
value="${version}"/>
-                       </manifest>             
-       </jar>
-
-       <!-- Create javadoc JAR -->     
+       </target>
+       
+       <target name="jar-javadoc" depends="clean-dist, compile-core">
+               <!-- Create javadoc JAR -->     
        <mkdir dir="${dist.dir}/javadoc/"/>
        <javadoc packagenames="*"
                        sourcepath="${project.core.src.dir}"
@@ -197,8 +181,8 @@
        <jar destfile="${dist.dir}/${ant.project.name}-javadoc.jar">
                <fileset dir="${dist.dir}/javadoc"/>
                        <metainf dir="../../">
-                               <include name="LICENSE"/>
-                               <include name="NOTICE"/>
+                       <include name="LICENSE"/>
+                       <include name="NOTICE"/>
                                <include name="DISCLAIMER"/>
                        </metainf>    
                <manifest>                              
@@ -210,20 +194,136 @@
        </jar>
        <!--remove folder-->
        <delete dir="${dist.dir}/javadoc" />
+       </target>
+    
+    <target name="jar-sources" depends="clean-dist, compile-core"  
description="--> make a jar file for this project">
+       <mkdir dir="${dist.dir}"/>
+       <!-- Create source JAR -->
+       <jar destfile="${dist.dir}/${ant.project.name}-sources.jar">
+               <fileset dir="${project.core.src.dir}">
+                       <include name="**/*"/>
+               </fileset>
+                       <metainf dir="../../">
+                               <include name="LICENSE"/>
+                               <include name="NOTICE"/>
+                               <include name="DISCLAIMER"/>
+                       </metainf>    
+               <manifest>                              
+                               <attribute name="Built-By" 
value="${user.name}"/>
+                               <attribute name="Implementation-Vendor" 
value="Apache Software Foundation"/>
+                               <attribute name="Implementation-Title" 
value="${ant.project.name}"/>
+                               <attribute name="Implementation-Version" 
value="${version}"/>
+                       </manifest>             
+       </jar>
     </target>
        
+       <!-- TODO - figure how to call NOT from init-war, rather then have 2 
similar methods -->
     <target name="test-calling-project">
        <condition property="not-subproject">
                <equals arg1="${ant.project.name}" arg2="wookie"/>
        </condition>
-    </target>  
+    </target>
 
+       <target name="test-calling-project-true">
+               <condition property="subproject">
+                       <not>
+                               <equals arg1="${ant.project.name}" 
arg2="wookie"/>
+                       </not>
+               </condition>
+       </target>
+       
+       <target name="init-war" unless="subproject" 
depends="test-calling-project-true" >               
+               <ivy:cachepath pathid="project.core.class.path" conf="dev" />
+               <copy 
todir="${servletEngine.webapp.dir}/${ant.project.name}/WEB-INF/classes">
+                       <fileset dir="${project.build.classes.dir}" />
+               </copy>
+
+               <copy todir="${servletEngine.webapp.dir}/${ant.project.name}">
+                       <fileset dir="${project.webapp.dir}" />
+               </copy>
+               <ivy:retrieve conf="deploy" 
pattern="${servletEngine.webapp.dir}/${ant.project.name}/WEB-INF/lib/[artifact]-[revision].[ext]"/>
         
+               <antcall target="post-deploy-webapp" inheritRefs="true"/>       
        
+               <echo>Building war</echo>
+
+               <!-- back the widgetserver.properties file up -->
+               <copy 
file="${build.dir}/webapp/wookie/WEB-INF/classes/widgetserver.properties"
+                        tofile="${build.dir}/widgetserver.properties" 
overwrite="true"/>
+
+               <!-- update widgetserver.properties file so that it points to 
mysql as db type-->
+               <copy file="${project.core.src.dir}/widgetserver.properties"
+                        todir="${build.dir}/webapp/wookie/WEB-INF/classes/" 
overwrite="true">
+                       <filterset>
+                           <filter token="PERSISTENCE_MANAGER_CLASSNAME" 
value="org.apache.wookie.beans.jpa.JPAPersistenceManager"/>
+                       <filter token="DATABASE_TYPE" value="mysql"/>
+                       <filter token="REPOSITORY_USER" value=""/>
+                       <filter token="REPOSITORY_PASSWORD" value=""/>
+                               <filter token="REPOSITORY_ROOTPATH" value=""/>
+                               <filter token="REPOSITORY_WORKSPACE" value=""/>
+                   </filterset>
+               </copy>
+
+               <!-- build war file -->
+               <war
+                       destfile="${dist.dir}/wookie.war"
+                       webxml="${build.dir}/webapp/wookie/WEB-INF/web.xml">
+                       <lib dir="${build.dir}/webapp/wookie/WEB-INF/lib">
+                               <exclude name="derby-10.2.1.6.jar"/>
+                       </lib>
+                       <classes 
dir="${build.dir}/webapp/wookie/WEB-INF/classes" />
+                       <fileset dir="${build.dir}/webapp/wookie/">
+                               <exclude name="WEB-INF/classes/" />
+                               <exclude name="WEB-INF/lib/" />
+                       </fileset>
+                       <metainf dir=".">
+                               <include name="NOTICE"/>
+                               <include name="DISCLAIMER"/>
+                               <include name="UPGRADING"/>
+                       </metainf>
+                       <metainf dir="etc/release/war/">
+                               <include name="LICENSE"/>
+                       </metainf>
+               </war>
+
+               <!-- put original widgetserver.properties file back -->
+               <copy file="${build.dir}/widgetserver.properties"
+                       
tofile="${build.dir}/webapp/wookie/WEB-INF/classes/widgetserver.properties"
+                       overwrite="true" />
+               <delete file="${build.dir}/widgetserver.properties" />
+
+       </target>       
+
+       <!-- make sure the credentials have been passed via command line -->
        <target name="test-upload-credentials">
                <fail unless="upload.user" message="supply upload.user on the 
command line"/>
                <fail unless="upload.password" message="supply upload.password 
on the command line"/>
        </target>
+       
+       <!-- 
+       Checks to see if the ivysettings is available and sets a property if so.
+       This is because when you run build.xml -> local-publish-subprojects
+       the current path is set to one of the subprojects i.e. connector/java
+       But if you run build.xml -> ivy-java-common.xml -> publish-local
+       then the root "wookie" project is set to the top level. The 
+       following 4 targets figure out where the properties files are relative
+       to whre the current directory is.  It is used eventually in the
+       'sign-artifacts' target below.
+       -->
+       <target name="check-first-location-for-settings">
+           <available file="../../ant/ivysettings.xml" 
property="firstivysettings.present"/>
+       </target>
+       <target name="check-second-location-for-settings">
+           <available file="ant/ivysettings.xml" 
property="secondivysettings.present"/>
+       </target>       
+       <target name="checkfirstrootivyrootpath" 
depends="check-first-location-for-settings" if="firstivysettings.present">
+               <property name="calculated-ivy-path" 
value="../../ant/ivysettings.xml"/>
+               <property name="calculated-this-path" 
value="../../ant/ivy-java-common.xml"/>
+       </target>               
+       <target name="checksecondrootivyrootpath" 
depends="check-second-location-for-settings" if="secondivysettings.present">
+               <property name="calculated-ivy-path" 
value="ant/ivysettings.xml"/>
+               <property name="calculated-this-path" 
value="ant/ivy-java-common.xml"/>
+       </target>
                
-    <target name="publish" depends="clean-build, jar" description="--> publish 
this project in the ivy repository">
+    <target name="publish" depends="clean-build, jar-compiled" 
description="--> publish this project in the ivy repository">
         <ivy:publish
           artifactspattern="[artifact].[ext]"
            resolver="shared"
@@ -244,11 +344,10 @@
         -Dpgp.password=yourpgppassword -Dpgp.keyId=yourpgpkeyId
        
================================================================================
        -->
-       <target name="sign-artifacts">                          
+       <target name="sign-artifacts" depends="checkfirstrootivyrootpath, 
checksecondrootivyrootpath">                                  
                <fail unless="pgp.password" message="supply 
-Dpgp.password=yourpassword on the command line"/>
                <fail unless="pgp.keyId" message="supply -Dpgp.keyId=yourkeyid 
on the command line"/>
-               
-               <ivy:settings id="sign.settingsId" 
file="../../ant/ivysettings.xml"/>           
+               <ivy:settings id="sign.settingsId" 
file="${calculated-ivy-path}"/>
                <ivy:cachepath organisation="org.apache.commons" 
settingsRef="sign.settingsId" 
                        transitive="false" log="download-only" 
module="commons-openpgp" revision="1.0-SNAPSHOT" 
                        inline="true" pathid="openpgp.classpath"/>
@@ -270,7 +369,7 @@
                                <path refid="openpgp.classpath"/>
                                <path refid="openpgp.classpath"/>
                        </classpath>
-                       <arg line="-f ../../ant/ivy-java-common.xml"/>
+                       <arg line="-f ${calculated-this-path}"/>
                        <arg line="sign-internal"/>
                        <arg line="-Dpgp.password=${pgp.password}"/>
                        <arg line="-Dpgp.keyId=${pgp.keyId}"/>
@@ -288,13 +387,14 @@
                        asciiarmor="true">
                        <fileset dir="${local.dist.dir}">
                                <include name="**/*.pom"/>
-                               <include name="**/*.jar"/>                      
+                               <include name="**/*.jar"/>
+                               <include name="**/*.war"/>
                        </fileset>
                </openpgp:signer>               
        </target>
        
-    <target name="make-subproject-pom" unless="not-subproject">
-       <echo>Locally publishing ${ant.project.name}-${version}</echo>
+    <target name="make-subproject-pom">
+       <echo>Making POM file: ${ant.project.name}-${version}</echo>
                <delete file="${dist.dir}/ivy.xml"/> <!-- delete last produced 
ivy file to be sure a new one will be generated -->
        <tstamp>
                        <format property="now" pattern="yyyyMMddHHmmss"/>
@@ -320,20 +420,20 @@
         -Dupload.user=myusername -Dupload.password=mypassword
        
================================================================================
        -->
-       <target name="publish-local" depends="test-calling-project, clean-dist, 
jar, make-subproject-pom" unless="not-subproject" description="--> publish this 
project in the local ivy repository">           
+       <target name="publish-local" depends="clean-dist, jar-compiled, 
jar-sources, jar-javadoc, init-war, make-subproject-pom" description="--> 
publish this project in the local ivy repository">            
        <ivy:publish resolver="local"
                pubrevision="${version}"
                forcedeliver="true"
                publishivy="false"
                srcivypattern="${dist.dir}/ivy.xml"
                        pubdate="${now}"
-               conf="deploy"
+               conf="deploy, deploy-with-src-and-docs"
                overwrite="true"                                
                
artifactspattern="${dist.dir}/[artifact](-[classifier]).[ext]"/>        
         <echo message="project ${ant.project.name} published locally with 
version ${version}" />
     </target>  
        
-    <target name="publish-maven-snapshot-artifacts" 
depends="test-upload-credentials, clean-dist, jar, make-subproject-pom" 
description="--> publishes this project in the apache snapshot repository. Dont 
run this from the root, see instead 
'publish-subproject-artifacts-to-snapshot-repo'">
+    <target name="publish-maven-snapshot-artifacts" 
depends="test-upload-credentials, clean-dist, jar-compiled, jar-sources, 
jar-javadoc, init-war, make-subproject-pom" description="--> publishes this 
project in the apache snapshot repository. Dont run this from the root, see 
instead 'publish-subproject-artifacts-to-snapshot-repo'">
        <ivy:publish resolver="apache-snapshot-artifacts"
                        pubrevision="${version}"
                        forcedeliver="true"
@@ -342,11 +442,11 @@
                        pubdate="${now}"
                conf="deploy, deploy-with-src-and-docs"
                        overwrite="true"
-                       
artifactspattern="${dist.dir}/[artifact](-[classifier]).[ext]"/>                
                                                
+                       
artifactspattern="${dist.dir}/[artifact](-[classifier]).[ext]"/>
        <echo message="project ${ant.project.name} published to nexus snapshot 
repo with version ${version}" />         
     </target>
 
-    <target name="publish-maven-release-artifacts" 
depends="test-upload-credentials, clean-dist, jar, make-subproject-pom, 
sign-artifacts" description="--> publishes this project in the apache staging 
area repository (prior to release). Dont run this from the root, see instead 
'publish-subproject-artifacts-to-release-repo'">
+    <target name="publish-maven-release-artifacts" 
depends="test-upload-credentials, clean-dist, jar-compiled, jar-sources, 
jar-javadoc, init-war, make-subproject-pom, sign-artifacts" description="--> 
publishes this project in the apache staging area repository (prior to 
release). Dont run this from the root, see instead 
'publish-subproject-artifacts-to-release-repo'">
        <ivy:publish resolver="apache-release-artifacts"
                        pubrevision="${version}"
                        forcedeliver="true"


Reply via email to