<description>The Apache POI project Ant build.</description>
<property name="version.id" value="3.15-beta1"/>
- <property name="version.rel" value="REL_3_15_BETA1"/>
<property environment="env"/>
<!-- the repository to download jars from -->
<property name="dist.nexus-staging.jar" location="${compile.lib}/nexus-staging-ant-tasks-1.6.3-uber.jar"/>
<property name="dist.nexus-staging.url" value="${repository.m2}/maven2/org/sonatype/nexus/ant/nexus-staging-ant-tasks/1.6.3/nexus-staging-ant-tasks-1.6.3-uber.jar"/>
- <property name="dist.svnant.jar" location="${compile.lib}/svnant-1.3.0.jar"/>
- <property name="dist.svnant.url" value="${repository.pentaho}/content/groups/omni/tigris/svnant/1.3.0/svnant-1.3.0.jar"/>
- <property name="dist.svnclient.jar" location="${compile.lib}/svnClientAdapter-1.3.0.jar"/>
+ <property name="dist.svnant.zip" location="${compile.lib}/svnant/svnant-1.3.1.zip"/>
+ <property name="dist.svnant.url" value="http://subclipse.tigris.org/files/documents/906/49042/svnant-1.3.1.zip"/>
+ <property name="dist.svnclient.jar" location="${compile.lib}/svnant/svnClientAdapter-1.3.0.jar"/>
<property name="dist.svnclient.url" value="${repository.pentaho}/content/groups/omni/tigris/svnClientAdapter/svnant-1.3.0/svnClientAdapter-svnant-1.3.0.jar"/>
- <property name="dist.svnkit.jar" location="${compile.lib}/svnkit-1.8.11.jar"/>
+ <property name="dist.svnkit.jar" location="${compile.lib}/svnant/svnkit-1.8.11.jar"/>
<property name="dist.svnkit.url" value="${repository.m2}/maven2/org/tmatesoft/svnkit/svnkit/1.8.11/svnkit-1.8.11.jar"/>
+ <property name="dist.svnkit-javahl16.jar" location="${compile.lib}/svnant/svnkit-javahl16-1.8.11.jar"/>
+ <property name="dist.svnkit-javahl16.url" value="${repository.m2}/maven2/org/tmatesoft/svnkit/svnkit-javahl16/1.8.11/svnkit-javahl16-1.8.11.jar"/>
+ <property name="dist.sqljet.jar" location="${compile.lib}/svnant/sqljet-1.1.10.jar"/>
+ <property name="dist.sqljet.url" value="${repository.m2}/maven2/org/tmatesoft/sqljet/sqljet/1.1.10/sqljet-1.1.10.jar"/>
+ <property name="dist.antlr.jar" location="${compile.lib}/svnant/antlr-runtime-3.5.2.jar"/>
+ <property name="dist.antlr.url" value="${repository.m2}/maven2/org/antlr/antlr-runtime/3.5.2/antlr-runtime-3.5.2.jar"/>
+ <property name="dist.sequence-library.jar" location="${compile.lib}/svnant/sequence-library-1.0.3.jar"/>
+ <property name="dist.sequence-library.url" value="${repository.m2}/maven2/de/regnis/q/sequence/sequence-library/1.0.3/sequence-library-1.0.3.jar"/>
+
<propertyset id="junit.properties">
<propertyref name="POI.testdata.path"/>
<mkdir dir="${build.site}"/>
<echo message="Using Java: ${java.version}/${java.runtime.version}/${java.vm.version}/${java.vm.name} from ${java.vm.vendor} on ${os.name}: ${os.version}" />
- </target>
- <target name="init-svn" depends="init,fetch-svn-jars" description="Initialization run before SVN-related targets.">
- <taskdef resource="org/tigris/subversion/svnant/svnantlib.xml">
- <classpath>
- <fileset dir="${compile.lib}" includes="svn*.jar" />
- </classpath>
- </taskdef>
- <!-- TODO Upgrade so this works -->
-<!--
- <svnSetting client="cli" id="svn.settings"/>
--->
+
+ <scriptdef name="release_tag" language="javascript">
+ var rel = ("REL_"+project.getProperty("version.id")).toUpperCase().replace(/\W/g,"_");
+ if (rel.search(/BETA/) == -1) rel += "_FINAL";
+ project.setProperty("RELEASE_TAG", rel);
+ </scriptdef>
+ <release_tag/>
</target>
<target name="clean" description="Remove generated artefacts">
<condition property="svn.jars.present">
<or>
<and>
- <available file="${dist.svnant.jar}"/>
+ <available file="${dist.svnant.zip}"/>
<available file="${dist.svnclient.jar}"/>
<available file="${dist.svnkit.jar}"/>
+ <available file="${dist.svnkit-javahl16.jar}"/>
+ <available file="${dist.sqljet.jar}"/>
+ <available file="${dist.antlr.jar}"/>
+ <available file="${dist.sequence-library.jar}"/>
</and>
<isset property="disconnected"/>
</or>
</condition>
</target>
<target name="fetch-svn-jars" depends="check-svn-jars" unless="svn.jars.present">
- <downloadfile src="${dist.svnant.url}" dest="${dist.svnant.jar}"/>
+ <mkdir dir="${compile.lib}/svnant"/>
+ <downloadfile src="${dist.svnant.url}" dest="${dist.svnant.zip}"/>
+ <unzip src="${dist.svnant.zip}" dest="${compile.lib}/svnant">
+ <patternset>
+ <include name="lib/svnant.jar"/>
+ </patternset>
+ <mapper>
+ <chainedmapper>
+ <flattenmapper/>
+ <globmapper from="svnant.jar" to="svnant-1.3.1.jar"/>
+ </chainedmapper>
+ </mapper>
+ </unzip>
<downloadfile src="${dist.svnclient.url}" dest="${dist.svnclient.jar}"/>
<downloadfile src="${dist.svnkit.url}" dest="${dist.svnkit.jar}"/>
+ <downloadfile src="${dist.svnkit-javahl16.url}" dest="${dist.svnkit-javahl16.jar}"/>
+ <downloadfile src="${dist.sqljet.url}" dest="${dist.sqljet.jar}"/>
+ <downloadfile src="${dist.antlr.url}" dest="${dist.antlr.jar}"/>
+ <downloadfile src="${dist.sequence-library.url}" dest="${dist.sequence-library.jar}"/>
</target>
<target name="check-ooxml-xsds">
</jar>
</sequential>
</macrodef>
-
+
<target name="release-notes" depends="init">
- <copy file="src/documentation/RELEASE-NOTES.txt" todir="build/dist/">
+ <copy file="src/documentation/RELEASE-NOTES.txt" todir="build/dist/" overwrite="true">
<filterset>
<filter token="VERSION" value="${version.id}"/>
<filter token="DSTAMP" value="${DSTAMP}"/>
- <filter token="RELEASE_TAG" value="${version.rel}"/>
+ <filter token="RELEASE_TAG" value="${RELEASE_TAG}"/>
</filterset>
</copy>
</target>
<staging:nexusStagingInfo stagingDirectory="build/dist/maven/@{artifactId}">
<staging:projectInfo groupId="org.apache.poi" artifactId="@{artifactId}" version="${version.id}" />
<staging:connectionInfo baseUrl="https://repository.apache.org">
- <staging:authentication username="${settings.apache-nexus.username}" password="${settings.apache-nexus.password}" />
+ <staging:authentication username="${settings.apache-id.username}" password="${settings.apache-id.password}" />
</staging:connectionInfo>
</staging:nexusStagingInfo>
</staging:stageRemotely>
<nexus-upload artifactId="poi-scratchpad"/>
</target>
+ <!-- experimentel release preparation ... tbd. ... -->
+ <target name="release-prep" depends="init,fetch-svn-jars,load-maven-server-settings">
+ <local name="tstamp_rel"/>
+ <local name="tstamp_next"/>
+ <local name="rel_next"/>
+ <tstamp>
+ <format property="tstamp_rel" pattern="yyyy-MM-dd" offset="7" unit="day"/>
+ <format property="tstamp_next" pattern="yyyy-MM" offset="3" unit="month"/>
+ </tstamp>
+
+ <scriptdef name="getnextrel" language="javascript">
+ var relCurr = new String(project.getProperty("version.id"));
+ var relNext = relCurr.replace(/[0-9]+$/, function(lastNum){ return new String(new Number(lastNum)+1); });
+ if (relNext.search(/beta/i) == -1) relNext += "-beta1";
+ project.setProperty("rel_next", relNext);
+ </scriptdef>
+ <getnextrel/>
+
+ <antcall target="-update-build.xml">
+ <param name="version_id" value="${version.id}"/>
+ </antcall>
+
+ <replaceregexp byline="true">
+ <regexp pattern="<release.*date=".*\?\?">"/>
+ <substitution expression="<!-- release version="${rel_next}" date="${tstamp_next}-??"> </release --> <release version="${version.id}" date="${tstamp_rel}">"/>
+ <fileset dir="src/documentation/content/xdocs">
+ <include name="status.xml"/>
+ </fileset>
+ </replaceregexp>
+
+ <fixcrlf srcdir="." includes="src/documentation/content/xdocs/status.xml" eol="unix" eof="remove" />
+
+ <path id="path.svnant">
+ <fileset dir="${compile.lib}/svnant" includes="*.jar"/>
+ </path>
+ <taskdef resource="org/tigris/subversion/svnant/svnantlib.xml" classpathref="path.svnant"/>
+
+ <svnSetting
+ svnkit="true"
+ javahl="false"
+ username="${settings.apache-id.username}"
+ password="${settings.apache-id.password}"
+ id="svn.settings"
+ />
+
+ <!-- can't combine updating and pinning of the documentation ... so we need two commits -->
+ <!-- (revision)properties can't be set and read within one svn block -->
+ <echo message="updating build.xml and status.xml"/>
+ <svn refid="svn.settings">
+ <!--update dir="." recurse="true"/-->
+ <commit message="release prepare for ${version.id} - updating build.xml and status.xml" recurse="false">
+ <fileset dir="." includes="build.xml,src/documentation/content/xdocs/status.xml"/>
+ </commit>
+ <status path="." revisionProperty="svn_version1"/>
+ </svn>
+ <echo message="pin documentation"/>
+ <svn refid="svn.settings">
+ <propset path="src" name="svn:externals" value="documentation -r${svn_version1} https://svn.apache.org/repos/asf/poi/site/src/documentation"/>
+ <commit message="release prepare for ${version.id} - pin documentation" dir="src" recurse="false"/>
+ <status path="." revisionProperty="svn_version2"/>
+ </svn>
+ <echo message="create release tag"/>
+ <svn refid="svn.settings">
+ <copy
+ srcUrl="https://svn.apache.org/repos/asf/poi/trunk"
+ destUrl="https://svn.apache.org/repos/asf/poi/tags/${RELEASE_TAG}"
+ message="tag r${svn_version2} as ${version.id}"
+ revision="${svn_version2}"/>
+ </svn>
+
+ <!-- update build.xml to the next beta version -->
+ <antcall target="-update-build.xml">
+ <param name="version_id" value="${rel_next}"/>
+ </antcall>
+
+ <!-- update sonar pom.xmls -->
+ <replaceregexp byline="true">
+ <regexp pattern="<version>.*-SNAPSHOT</version>"/>
+ <substitution expression="<version>${rel_next}-SNAPSHOT</version>"/>
+ <fileset dir="sonar">
+ <include name="**/pom.xml"/>
+ </fileset>
+ </replaceregexp>
+
+ <!-- unpin documentation and commit next beta version -->
+ <svn refid="svn.settings">
+ <propset path="src" name="svn:externals" value="documentation https://svn.apache.org/repos/asf/poi/site/src/documentation"/>
+ <commit message="prepare for ${rel_next}" recurse="false">
+ <fileset dir="." includes="build.xml"/>
+ <fileset dir="sonar" includes="**/pom.xml"/>
+ <dirset dir="src"/>
+ </commit>
+ </svn>
+ </target>
+
+ <target name="-update-build.xml">
+ <replaceregexp byline="true">
+ <regexp pattern="(<property name="version.id" value=")[^"]+("/>)"/>
+ <substitution expression="\1${version_id}\2"/>
+ <fileset dir=".">
+ <include name="build.xml"/>
+ </fileset>
+ </replaceregexp>
+ <fixcrlf srcdir="." includes="build.xml" eol="unix" eof="remove" />
+ </target>
+
<!--
Configure gpg settings in local maven settings.xml
see release-guide.txt for more details
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:mvn="http://maven.apache.org/SETTINGS/1.0.0">
<xsl:output method="text" version="1.0" encoding="ISO-8859-1"/>
<xsl:template match="@*|text()"/>
- <xsl:template match="//mvn:server[contains('poi-signing|apache-nexus',mvn:id/text())]/*[name(.)!='id']">
+ <xsl:template match="//mvn:server[contains('poi-signing|apache-id',mvn:id/text())]/*[name(.)!='id']">
<xsl:value-of select="concat('settings.',../mvn:id,'.',name(.),'=',translate(text(),'\','/'),'
')"/>
</xsl:template>
</xsl:stylesheet>