mirror of
https://github.com/tiennm99/lombok.git
synced 2026-05-14 06:59:07 +00:00
320 lines
13 KiB
XML
320 lines
13 KiB
XML
<!--
|
|
Copyright (C) 2020-2023 The Project Lombok Authors.
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
of this software and associated documentation files (the "Software"), to deal
|
|
in the Software without restriction, including without limitation the rights
|
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
copies of the Software, and to permit persons to whom the Software is
|
|
furnished to do so, subject to the following conditions:
|
|
|
|
The above copyright notice and this permission notice shall be included in
|
|
all copies or substantial portions of the Software.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
THE SOFTWARE.
|
|
-->
|
|
<project name="lombok-website" basedir=".." default="website" xmlns:ivy="antlib:com.zwitserloot.ivyplusplus">
|
|
<description>
|
|
This buildfile is part of projectlombok.org. It is responsible for building the website and all website-related aspects,
|
|
such as applying the templates to produce the website, converting the changelog into HTML, and creating javadoc.
|
|
</description>
|
|
|
|
<property name="web.root" value="https://projectlombok.org/" />
|
|
<property name="SNIPPET_TAB_STOP" value="2" />
|
|
|
|
<target name="-website.clean">
|
|
<delete dir="build/website" quiet="true" />
|
|
</target>
|
|
|
|
<!-- Fetches the current (latest) lombok available from projectlombok.org, tracking this 'latest available version' in ant properties -->
|
|
<target name="-website.fetch-version" depends="compile.support">
|
|
<java classname="lombok.website.FetchCurrentVersion" outputproperty="lombok.version.live" failonerror="true">
|
|
<classpath>
|
|
<path refid="cp.buildtools" />
|
|
<pathelement location="build/support" />
|
|
</classpath>
|
|
<arg value="${web.root}" />
|
|
<arg value="base" />
|
|
</java>
|
|
<java classname="lombok.website.FetchCurrentVersion" outputproperty="lombok.fullversion.live" failonerror="true">
|
|
<classpath>
|
|
<path refid="cp.buildtools" />
|
|
<pathelement location="build/support" />
|
|
</classpath>
|
|
<arg value="${web.root}" />
|
|
<arg value="full" />
|
|
</java>
|
|
</target>
|
|
|
|
<target name="website.print-live-version" depends="-website.fetch-version" description="Print the current version of lombok available from projectlombok.org">
|
|
<echo>Live version: ${lombok.version.live}</echo>
|
|
<echo>Live full versionstring : ${lombok.fullversion.live}</echo>
|
|
</target>
|
|
|
|
<target name="changelog.build" depends="version, deps, compile.support" description="Turns the current changelog (doc/changelog.markdown) into HTML">
|
|
<mkdir dir="build/website" />
|
|
<java classname="lombok.website.WebsiteMaker" failonerror="true">
|
|
<classpath>
|
|
<path refid="cp.buildtools" />
|
|
<pathelement location="build/support" />
|
|
</classpath>
|
|
<arg value="${web.root}" />
|
|
<arg value="${lombok.version}" />
|
|
<arg value="${lombok.fullversion}" />
|
|
<arg value="changelog" />
|
|
</java>
|
|
</target>
|
|
|
|
<macrodef name="website.make">
|
|
<attribute name="version" />
|
|
<attribute name="fullversion" />
|
|
<attribute name="cmd" />
|
|
<sequential>
|
|
<mkdir dir="build/website" />
|
|
<copy todir="build/website">
|
|
<fileset dir="website/resources" />
|
|
<fileset dir="." includes="LICENSE" />
|
|
</copy>
|
|
|
|
<java classname="lombok.website.WebsiteMaker" failonerror="true">
|
|
<classpath>
|
|
<path refid="cp.buildtools" />
|
|
<pathelement location="build/support" />
|
|
</classpath>
|
|
<arg value="${web.root}" />
|
|
<arg value="@{version}" />
|
|
<arg value="@{fullversion}" />
|
|
<arg value="@{cmd}" />
|
|
</java>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<target name="website.release-build" depends="version, -website.clean, javadoc.build, compile.support">
|
|
<website.make version="${lombok.version}" fullversion="${lombok.fullversion}" cmd="all-newrelease" />
|
|
</target>
|
|
|
|
<target name="website.build" depends="-website.fetch-version, -website.clean, compile.support" description="Builds the website based on current live version">
|
|
<website.make version="${lombok.version.live}" fullversion="${lombok.fullversion.live}" cmd="all" />
|
|
</target>
|
|
|
|
<target name="website.open" depends="website.build, compile.support" description="Builds the website, then serves it locally, opening a browser.">
|
|
<local name="dir.build.website" />
|
|
<property name="dir.build.website" location="build/website" />
|
|
<java classname="lombok.website.RunSite" failonerror="true">
|
|
<classpath>
|
|
<path refid="cp.buildtools" />
|
|
<pathelement location="build/support" />
|
|
</classpath>
|
|
<arg value="${dir.build.website}" />
|
|
<arg value="open" />
|
|
</java>
|
|
</target>
|
|
|
|
<target name="website.print-all-versions" depends="compile.support">
|
|
<java classname="lombok.website.WebsiteMaker" failonerror="true">
|
|
<classpath>
|
|
<path refid="cp.buildtools" />
|
|
<pathelement location="build/support" />
|
|
</classpath>
|
|
<arg value="${web.root}" />
|
|
<arg value="1" />
|
|
<arg value="1" />
|
|
<arg value="print-allversions" />
|
|
</java>
|
|
</target>
|
|
|
|
<target name="-website.init-hostgit">
|
|
<property name="loc.hostingGit" location="../website-cloudflare" />
|
|
<fail>
|
|
You need the website-cloudflare repo as a sibling to your lombok repo to publish the website.
|
|
<condition>
|
|
<not><available file="${loc.hostingGit}/.git" /></not>
|
|
</condition>
|
|
</fail>
|
|
</target>
|
|
|
|
<target name="-website.copyto-hostgit">
|
|
<sync todir="${loc.hostingGit}/website">
|
|
<fileset dir="build/website" />
|
|
</sync>
|
|
</target>
|
|
|
|
<target name="-website.pull-hostgit" depends="deps, -website.init-hostgit">
|
|
<exec executable="${exe.git}" failonerror="true" dir="${loc.hostingGit}">
|
|
<arg value="pull" />
|
|
</exec>
|
|
</target>
|
|
|
|
<target name="-website.commit-and-push-hostgit">
|
|
<exec executable="${exe.git}" failonerror="true" dir="${loc.hostingGit}">
|
|
<arg value="add" />
|
|
<arg value="-A" />
|
|
</exec>
|
|
<exec executable="${exe.git}" failonerror="true" dir="${loc.hostingGit}">
|
|
<arg value="commit" />
|
|
<arg value="-m" />
|
|
<arg value="website update" />
|
|
</exec>
|
|
<exec executable="${exe.git}" failonerror="true" dir="${loc.hostingGit}">
|
|
<arg value="push" />
|
|
</exec>
|
|
</target>
|
|
|
|
<target name="website.publish" depends="-website.pull-hostgit, website.build, -website.copyto-hostgit" description="Builds the website and copies it to the git repo serving as source for the cloudflare-hosted projectlombok.org site">
|
|
<antcall target="-website.commit-and-push-hostgit" />
|
|
</target>
|
|
|
|
<target name="website.release-publish" depends="dist, -website.pull-hostgit, website.release-build, -website.copyto-hostgit" description="Builds the website and copies it to the git repo serving as source for the cloudflare-hosted projectlombok.org site">
|
|
<sync todir="${loc.hostingGit}/api">
|
|
<fileset dir="doc/api" />
|
|
</sync>
|
|
<echo file="${loc.hostingGit}/CURRENT_VERSION">${lombok.version}</echo>
|
|
<copy file="dist/lombok-${lombok.version}.jar" todir="${loc.hostingGit}/releases" />
|
|
<antcall target="-website.commit-and-push-hostgit" />
|
|
</target>
|
|
|
|
<target name="javadoc.build" description="Generates the javadoc" depends="version, compile" unless="skip.javadoc">
|
|
<delete dir="build/api" quiet="true" />
|
|
<delete dir="doc/api" quiet="true" />
|
|
<mkdir dir="build/api" />
|
|
<property name="javadoc.overview.html" location="build/javadoc.overview.html" />
|
|
<echo file="${javadoc.overview.html}"><![CDATA[<html><body>
|
|
Welcome to the lombok javadoc. If you're just looking to learn more about using lombok
|
|
You probably want to look at <a href="https://projectlombok.org/features/all">the feature documentation</a>. Otherwise,
|
|
check the <a href="lombok/package-summary.html">lombok</a> package. If you're trying to extend lombok or
|
|
write your own plugins, the other packages are what you're looking for.</body></html>
|
|
]]></echo>
|
|
<tstamp>
|
|
<format property="javadoc.year" pattern="yyyy" />
|
|
</tstamp>
|
|
<javadoc sourcepath="src/core" defaultexcludes="yes" destdir="build/api" windowtitle="Lombok" source="1.8" Overview="${javadoc.overview.html}">
|
|
<package name="lombok" />
|
|
<package name="lombok.experimental" />
|
|
<package name="lombok.extern.*" />
|
|
<classpath location="build/lombok-main" />
|
|
<classpath location="build/lombok-utils" />
|
|
<header><![CDATA[<a href='https://projectlombok.org/' target='_blank'>Lombok</a> - ]]>v${lombok.version}</header>
|
|
<bottom><![CDATA[<i>Copyright © 2009-${javadoc.year} The Project Lombok Authors, licensed under the <a href='http://www.opensource.org/licenses/mit-license.php' target='_blank'>MIT licence</a>.</i>]]></bottom>
|
|
</javadoc>
|
|
<!-- bugfix for boneheaded javadoc bug where ?is-external=true is inserted before an anchor ref, breaking the anchor ref.
|
|
is-external=true doesn't actually do anything except mess with titles, so, we'll just get rid of it. -->
|
|
<replaceregexp match="\?is-external=true#" replace="#" flags="gi">
|
|
<fileset dir="build/api" includes="**/*.html" />
|
|
</replaceregexp>
|
|
<mkdir dir="doc/api" />
|
|
<copy todir="doc/api">
|
|
<fileset dir="build/api" includes="**/*.html" />
|
|
<filterchain>
|
|
<linecontainsregexp negate="true">
|
|
<regexp pattern="(Generated by javadoc)|(.META NAME=.date.)|(meta name=.dc.created.)" />
|
|
</linecontainsregexp>
|
|
</filterchain>
|
|
</copy>
|
|
<copy todir="doc/api">
|
|
<fileset dir="build/api" includes="**/*.css" />
|
|
<filterchain>
|
|
<linecontainsregexp negate="true">
|
|
<regexp pattern="@import.*dejavu.css.*" />
|
|
</linecontainsregexp>
|
|
</filterchain>
|
|
</copy>
|
|
<copy todir="doc/api">
|
|
<fileset dir="build/api">
|
|
<exclude name="**/*.html" />
|
|
<exclude name="**/*.css" />
|
|
</fileset>
|
|
</copy>
|
|
<echo append="true" file="doc/api/module-search-index.js"></echo>
|
|
<echo append="true" file="doc/api/tag-search-index.js"></echo>
|
|
</target>
|
|
|
|
<target name="latest-changes.build" depends="compile.support, version" description="Creates the latest changes HTML file from the markdown in doc/changelog">
|
|
<mkdir dir="build/website" />
|
|
<java classname="lombok.website.WebsiteMaker" failonerror="true">
|
|
<classpath>
|
|
<path refid="cp.buildtools" />
|
|
<pathelement location="build/support" />
|
|
</classpath>
|
|
<arg value="${web.root}" />
|
|
<arg value="${lombok.version}" />
|
|
<arg value="${lombok.fullversion}" />
|
|
<arg value="changelog-latest" />
|
|
<arg value="website" />
|
|
<arg value="build/latestchanges.html" />
|
|
</java>
|
|
</target>
|
|
|
|
<target name="release.pack" depends="dist, website.release-build">
|
|
<tar destfile="dist/website-release.tar.bz2" compression="bzip2">
|
|
<tarfileset dir="dist" includes="lombok-${lombok.version}.jar" prefix="downloads/" />
|
|
<tarfileset dir="dist" includes="lombok-${lombok.version}.jar" fullpath="downloads/lombok.jar" />
|
|
<tarfileset dir="dist" includes="lombok-${lombok.version}.jar" fullpath="lombok-edge.jar" />
|
|
<tarfileset dir="build/website" includes="all-versions.html,download.html,download-edge.html" />
|
|
</tar>
|
|
</target>
|
|
|
|
<target name="release.publish" depends="-test.release.version, maven, website.release-publish, eclipsep2.publish, maven.publish, -edge.publish" description="Deploys a new official lombok release everywhere: maven, website, p2 site" />
|
|
|
|
<target name="edge.website" depends="compile.support, version, dist">
|
|
<delete quiet="true" file="build/website/download-edge.html" />
|
|
<mkdir dir="build/website-edge" />
|
|
<java classname="lombok.website.WebsiteMaker" failonerror="true">
|
|
<classpath>
|
|
<path refid="cp.buildtools" />
|
|
<pathelement location="build/support" />
|
|
</classpath>
|
|
<arg value="${web.root}" />
|
|
<arg value="${lombok.version}" />
|
|
<arg value="${lombok.fullversion}" />
|
|
<arg value="download-edge" />
|
|
<arg value="website" />
|
|
<arg value="build/website-edge/download-edge.html" />
|
|
</java>
|
|
</target>
|
|
|
|
<target name="-edge.website.tohost" depends="edge.website, -website.init-hostgit, -website.pull-hostgit">
|
|
<copy file="build/website-edge/download-edge.html" todir="${loc.hostingGit}/website" />
|
|
</target>
|
|
|
|
<target name="-edge.website.publish" depends="-edge.website.tohost, -website.commit-and-push-hostgit" />
|
|
|
|
<target name="edge.publish" depends="-edge.website.publish, -edge.publish" description="Builds an edge release, sends it to the projectlombok.org server and deploys it by updating the download-edge link" />
|
|
|
|
<target name="-edge.publish" depends="dist, maven.edge">
|
|
<copy file="dist/lombok-${lombok.version}.jar" tofile="build/edge-releases/lombok-edge.jar" />
|
|
<java classname="lombok.publish.PublishToBucket" failonerror="true">
|
|
<classpath>
|
|
<path refid="cp.buildtools" />
|
|
<pathelement location="build/support" />
|
|
</classpath>
|
|
<arg value="${gpg.keyrings}/s3_creds.txt" />
|
|
<arg value="build/edge-releases" />
|
|
<arg value="edge" />
|
|
<arg value="true" />
|
|
</java>
|
|
<exec executable="/usr/bin/git" failonerror="true">
|
|
<arg value="merge-base" />
|
|
<arg value="--is-ancestor" />
|
|
<arg value="edge" />
|
|
<arg value="master" />
|
|
</exec>
|
|
<exec executable="/usr/bin/git">
|
|
<arg value="branch" />
|
|
<arg value="-f" />
|
|
<arg value="edge" />
|
|
<arg value="master" />
|
|
</exec>
|
|
<exec executable="/usr/bin/git">
|
|
<arg value="push" />
|
|
<arg value="origin" />
|
|
<arg value="edge:refs/heads/edge" />
|
|
</exec>
|
|
</target>
|
|
</project>
|