mirror of
https://github.com/tiennm99/lombok.git
synced 2026-05-20 07:26:33 +00:00
350 lines
16 KiB
XML
350 lines
16 KiB
XML
<!--
|
|
Copyright (C) 2020-2021 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.setup" default="deps" xmlns:ivy="antlib:com.zwitserloot.ivyplusplus" basedir="..">
|
|
<description>
|
|
This buildfile is part of projectlombok.org. It sets up the build itself.
|
|
</description>
|
|
|
|
<!-- increment this number to force a clean of the 'build' dir -->
|
|
<property name="build.version" value="2021-03-18_001" />
|
|
|
|
<property name="pattern.jdk11plus" value="^(\d\d\d+|1[1-9]|[2-9]\d)(\..*)?$" />
|
|
<property name="ivy.retrieve.pattern" value="lib/[conf]/[organisation]-[artifact].[ext]" />
|
|
<property environment="env" />
|
|
<available file="lib/ivyplusplus.jar" property="ivyplusplus.available" />
|
|
|
|
<property name="jdk6-rt.loc" location="lib/openjdk6_rt.jar" />
|
|
<property name="jdk8-rt.loc" location="lib/openjdk8_rt.jar" />
|
|
<property name="rtstubs18.loc" location="lib/rtstubs18.jar" />
|
|
<available file="${jdk6-rt.loc}" property="jdk6-rt.available" />
|
|
<available file="${jdk8-rt.loc}" property="jdk8-rt.available" />
|
|
<available file="${rtstubs18.loc}" property="rtstubs18.available" />
|
|
<property name="ssh.configuration.file" location="ssh.configuration" />
|
|
|
|
<property name="gpg.keyrings" location="gpg.keyring" />
|
|
<property name="exe.gpg" value="gpg" />
|
|
<property name="exe.curl" value="curl" />
|
|
<property name="exe.git" value="git" />
|
|
|
|
<condition property="os.specific.native-swt-lib" value="org.eclipse.swt.gtk.linux.aarch64">
|
|
<os name="Linux" arch="aarch64" />
|
|
</condition>
|
|
<condition property="os.specific.native-swt-lib" value="org.eclipse.swt.gtk.linux.x86_64">
|
|
<os name="Linux" />
|
|
</condition>
|
|
<condition property="os.specific.native-swt-lib" value="org.eclipse.swt.cocoa.macosx.aarch64">
|
|
<os name="Mac OS X" arch="aarch64" />
|
|
</condition>
|
|
<condition property="os.specific.native-swt-lib" value="org.eclipse.swt.cocoa.macosx.x86_64">
|
|
<os name="Mac OS X" />
|
|
</condition>
|
|
<condition property="os.specific.native-swt-lib" value="org.eclipse.swt.win32.win32.aarch64">
|
|
<os family="windows" arch="aarch64" />
|
|
</condition>
|
|
<condition property="os.specific.native-swt-lib" value="org.eclipse.swt.win32.win32.x86_64">
|
|
<os family="windows" />
|
|
</condition>
|
|
<fail unless="os.specific.native-swt-lib">Full eclipse testing requires downloading a native SWT binding. This script knows how to download for OS = [mac, linux, or windows] and architecture = [aarch64 or x86-64]. You have something different, you unique snowflake you. Your OS: "${os.name}", Your arch: "${os.arch}".</fail>
|
|
|
|
<target name="-autoclean.check">
|
|
<available type="dir" file="build" property="existingbuild.present" />
|
|
<loadresource property="existingbuild.ver">
|
|
<first count="1">
|
|
<resources>
|
|
<restrict>
|
|
<fileset dir="." includes="build/build-ver.txt" />
|
|
<exists />
|
|
</restrict>
|
|
<string>0</string>
|
|
</resources>
|
|
</first>
|
|
</loadresource>
|
|
<condition property="existingbuild.mismatch">
|
|
<and>
|
|
<isset property="existingbuild.present" />
|
|
<not><equals arg1="${existingbuild.ver}" arg2="${build.version}" trim="true" /></not>
|
|
</and>
|
|
</condition>
|
|
</target>
|
|
|
|
<target name="autoclean" depends="-autoclean.check" if="existingbuild.mismatch" description="Checks if a change in the build or deplist neccessitates a clean">
|
|
<echo>build ver has been incremented, neccessitating a clean...</echo>
|
|
<delete dir="build" />
|
|
</target>
|
|
|
|
<target name="-setup.build" depends="autoclean">
|
|
<mkdir dir="build" />
|
|
<echo file="build/build-ver.txt">${build.version}</echo>
|
|
</target>
|
|
|
|
<target name="clean" description="Removes all generated files.">
|
|
<delete dir="build" quiet="true" />
|
|
</target>
|
|
|
|
<target name="clean.dist" depends="clean" description="Deletes everything that this build script has ever generated.">
|
|
<delete dir="lib" quiet="true" />
|
|
<delete dir="dist" quiet="true" />
|
|
<delete file=".project" quiet="true" />
|
|
<delete file=".classpath" quiet="true" />
|
|
<delete dir=".settings" quiet="true" />
|
|
<delete dir=".idea" quiet="true" />
|
|
<delete file="lombok.iml" quiet="true" />
|
|
<delete dir="ivyCache" quiet="true" />
|
|
</target>
|
|
|
|
<target name="-ipp.download" unless="ivyplusplus.available">
|
|
<mkdir dir="lib" />
|
|
<get src="https://projectlombok.org/downloads/ivyplusplus.jar" dest="lib/ivyplusplus.jar" usetimestamp="true" />
|
|
</target>
|
|
|
|
<target name="-ipp.load" depends="-ipp.download">
|
|
<taskdef classpath="lib/ivyplusplus.jar" resource="com/zwitserloot/ivyplusplus/antlib.xml" uri="antlib:com.zwitserloot.ivyplusplus" />
|
|
<ivy:ensureippversion version="1.40" property="ivyplusplus.minimumAvailable" />
|
|
</target>
|
|
|
|
<target name="-ipp.redownload" unless="ivyplusplus.minimumAvailable">
|
|
<get src="https://projectlombok.org/downloads/ivyplusplus.jar" dest="lib/ivyplusplus.jar" />
|
|
<fail>A new version of ivyplusplus was required and has been downloaded. Rerun the script to continue.</fail>
|
|
</target>
|
|
|
|
<target name="ipp.setup" depends="-ipp.load, -ipp.redownload" />
|
|
|
|
<target name="ivy.config" depends="ipp.setup" unless="ivy.config">
|
|
<ivy:configure file="buildScripts/ivysettings.xml" />
|
|
<property name="ivy.config" value="true" />
|
|
</target>
|
|
|
|
<target name="deps.jdk6-runtime" unless="jdk6-rt.available">
|
|
<echo>To ensure stable builds and avoid accessing API that was not available in JDK6, most of lombok is set up to build against OpenJDK6's runtime, which will now be downloaded...</echo>
|
|
<mkdir dir="lib" />
|
|
<get src="https://projectlombok.org/ivyrepo/langtools/rt-openjdk6.jar" dest="${jdk6-rt.loc}" verbose="true" usetimestamp="true" />
|
|
</target>
|
|
|
|
<target name="deps.jdk8-runtime" unless="jdk8-rt.available">
|
|
<echo>To test java8, we need a java8 runtime, which will now be downloaded...</echo>
|
|
<mkdir dir="lib" />
|
|
<get src="https://projectlombok.org/ivyrepo/langtools/rt-openjdk8.jar" dest="${jdk8-rt.loc}" verbose="true" usetimestamp="true" />
|
|
</target>
|
|
|
|
<target name="deps.rtstubs18" unless="rtstubs18.available">
|
|
<echo>To test in eclipse, we need a java runtime, which will now be downloaded...</echo>
|
|
<mkdir dir="lib" />
|
|
<get src="https://github.com/eclipse-jdt/eclipse.jdt.ui/raw/master/org.eclipse.jdt.ui.tests/testresources/rtstubs18.jar" dest="${rtstubs18.loc}" verbose="true" usetimestamp="true" />
|
|
</target>
|
|
|
|
<target name="deps.jdk-runtime" depends="deps.jdk6-runtime, deps.jdk8-runtime" />
|
|
|
|
<target name="deps.custom" depends="ivy.config" description="Download the dependencies that comprise a configuration (from ivy.xml)">
|
|
<fail unless="deps.conf">Supply ant with -Ddeps.conf=confname to pick the configuration you want to fetch</fail>
|
|
<ivy:resolve file="buildScripts/ivy.xml" refresh="true" conf="${deps.conf}" />
|
|
<ivy:retrieve symlink="true" />
|
|
</target>
|
|
|
|
<target name="deps.eclipse.oxygen" depends="deps.rtstubs18, compile.support">
|
|
<fetchdep.eclipse.osgi name="oxygen" version="4.7/R-4.7-201706120950" />
|
|
</target>
|
|
|
|
<target name="deps.eclipse.2022-03" depends="deps.rtstubs18, compile.support">
|
|
<fetchdep.eclipse.osgi name="2022-03" version="4.23/R-4.23-202203080310" />
|
|
</target>
|
|
|
|
<macrodef name="fetchdep.ecj">
|
|
<attribute name="version" />
|
|
<sequential>
|
|
<ivy:resolve file="buildScripts/ivy.xml" refresh="true" conf="ecj@{version}" />
|
|
<ivy:retrieve symlink="true" />
|
|
<ivy:cachepath pathid="cp.ecj@{version}" conf="ecj@{version}" />
|
|
<property name="cp.ecj@{version}" refid="cp.ecj@{version}" />
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<macrodef name="fetchdep.eclipse">
|
|
<attribute name="version" />
|
|
<sequential>
|
|
<ivy:resolve file="buildScripts/ivy.xml" refresh="true" conf="eclipse-@{version}" />
|
|
<ivy:retrieve symlink="true" />
|
|
<ivy:cachepath pathid="cp.eclipse-@{version}" conf="eclipse-@{version}" />
|
|
<property name="cp.eclipse-@{version}" refid="cp.eclipse-@{version}" />
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<macrodef name="fetchdep.eclipse.osgi">
|
|
<attribute name="target" default="testenv" />
|
|
<attribute name="name" />
|
|
<attribute name="version" />
|
|
<sequential>
|
|
<java classname="lombok.eclipse.dependencies.DownloadEclipseDependencies" failonerror="true">
|
|
<classpath>
|
|
<path refid="cp.buildtools" />
|
|
<pathelement location="build/support" />
|
|
</classpath>
|
|
<arg value="@{target}" />
|
|
<arg value="eclipse-@{name}" />
|
|
<arg value="https://download.eclipse.org/eclipse/updates/@{version}/plugins/" />
|
|
<arg value="com.ibm.icu" />
|
|
<arg value="com.sun.jna" />
|
|
<arg value="com.sun.jna.platform" />
|
|
<arg value="javax.inject" />
|
|
<arg value="javax.annotation" />
|
|
<arg value="org.apache.batik.constants" />
|
|
<arg value="org.apache.batik.css" />
|
|
<arg value="org.apache.batik.i18n" />
|
|
<arg value="org.apache.batik.util" />
|
|
<arg value="org.apache.commons.io" />
|
|
<arg value="org.apache.commons.logging" />
|
|
<arg value="org.apache.commons.jxpath" />
|
|
<arg value="org.apache.felix.scr" />
|
|
<arg value="org.apache.xmlgraphics" />
|
|
<arg value="org.bouncycastle.bcpg" />
|
|
<arg value="org.bouncycastle.bcprov" />
|
|
<arg value="org.eclipse.compare" />
|
|
<arg value="org.eclipse.compare.core" />
|
|
<arg value="org.eclipse.core.commands" />
|
|
<arg value="org.eclipse.core.contenttype" />
|
|
<arg value="org.eclipse.core.databinding" />
|
|
<arg value="org.eclipse.core.databinding.observable" />
|
|
<arg value="org.eclipse.core.databinding.property" />
|
|
<arg value="org.eclipse.core.expressions" />
|
|
<arg value="org.eclipse.core.filebuffers" />
|
|
<arg value="org.eclipse.core.filesystem" />
|
|
<arg value="org.eclipse.core.jobs" />
|
|
<arg value="org.eclipse.core.resources" />
|
|
<arg value="org.eclipse.core.runtime" />
|
|
<arg value="org.eclipse.core.variables" />
|
|
<arg value="org.eclipse.debug.core" />
|
|
<arg value="org.eclipse.debug.ui" />
|
|
<arg value="org.eclipse.e4.core.commands" />
|
|
<arg value="org.eclipse.e4.core.contexts" />
|
|
<arg value="org.eclipse.e4.core.di" />
|
|
<arg value="org.eclipse.e4.core.di.annotations" />
|
|
<arg value="org.eclipse.e4.core.di.extensions" />
|
|
<arg value="org.eclipse.e4.core.di.extensions.supplier" />
|
|
<arg value="org.eclipse.e4.core.services" />
|
|
<arg value="org.eclipse.e4.emf.xpath" />
|
|
<arg value="org.eclipse.e4.ui.bindings" />
|
|
<arg value="org.eclipse.e4.ui.css.core" />
|
|
<arg value="org.eclipse.e4.ui.css.swt" />
|
|
<arg value="org.eclipse.e4.ui.css.swt.theme" />
|
|
<arg value="org.eclipse.e4.ui.di" />
|
|
<arg value="org.eclipse.e4.ui.dialogs" />
|
|
<arg value="org.eclipse.e4.ui.ide" />
|
|
<arg value="org.eclipse.e4.ui.model.workbench" />
|
|
<arg value="org.eclipse.e4.ui.services" />
|
|
<arg value="org.eclipse.e4.ui.widgets" />
|
|
<arg value="org.eclipse.e4.ui.workbench" />
|
|
<arg value="org.eclipse.e4.ui.workbench.addons.swt" />
|
|
<arg value="org.eclipse.e4.ui.workbench.renderers.swt" />
|
|
<arg value="org.eclipse.e4.ui.workbench.swt" />
|
|
<arg value="org.eclipse.e4.ui.workbench3" />
|
|
<arg value="org.eclipse.emf.common" />
|
|
<arg value="org.eclipse.emf.ecore" />
|
|
<arg value="org.eclipse.emf.ecore.change" />
|
|
<arg value="org.eclipse.emf.ecore.xmi" />
|
|
<arg value="org.eclipse.equinox.app" />
|
|
<arg value="org.eclipse.equinox.bidi" />
|
|
<arg value="org.eclipse.equinox.common" />
|
|
<arg value="org.eclipse.equinox.p2.artifact.repository" />
|
|
<arg value="org.eclipse.equinox.p2.core" />
|
|
<arg value="org.eclipse.equinox.p2.engine" />
|
|
<arg value="org.eclipse.equinox.p2.jarprocessor" />
|
|
<arg value="org.eclipse.equinox.p2.metadata" />
|
|
<arg value="org.eclipse.equinox.p2.metadata.repository" />
|
|
<arg value="org.eclipse.equinox.p2.repository" />
|
|
<arg value="org.eclipse.equinox.preferences" />
|
|
<arg value="org.eclipse.equinox.registry" />
|
|
<arg value="org.eclipse.equinox.security" />
|
|
<arg value="org.eclipse.help" />
|
|
<arg value="org.eclipse.jdt.core" />
|
|
<arg value="org.eclipse.jdt.core.manipulation" />
|
|
<arg value="org.eclipse.jdt.debug" />
|
|
<arg value="org.eclipse.jdt.launching" />
|
|
<arg value="org.eclipse.jdt.ui" />
|
|
<arg value="org.eclipse.jface" />
|
|
<arg value="org.eclipse.jface.databinding" />
|
|
<arg value="org.eclipse.jface.text" />
|
|
<arg value="org.eclipse.ltk.core.refactoring" />
|
|
<arg value="org.eclipse.ltk.ui.refactoring" />
|
|
<arg value="org.eclipse.osgi" />
|
|
<arg value="org.eclipse.osgi.services" />
|
|
<arg value="org.eclipse.osgi.util" />
|
|
<arg value="org.eclipse.search" />
|
|
<arg value="org.eclipse.swt" />
|
|
<arg value="${os.specific.native-swt-lib}" />
|
|
<arg value="org.eclipse.team.core" />
|
|
<arg value="org.eclipse.team.ui" />
|
|
<arg value="org.eclipse.text" />
|
|
<arg value="org.eclipse.ui" />
|
|
<arg value="org.eclipse.ui.console" />
|
|
<arg value="org.eclipse.ui.editors" />
|
|
<arg value="org.eclipse.ui.forms" />
|
|
<arg value="org.eclipse.ui.ide" />
|
|
<arg value="org.eclipse.ui.navigator" />
|
|
<arg value="org.eclipse.ui.navigator.resources" />
|
|
<arg value="org.eclipse.ui.views" />
|
|
<arg value="org.eclipse.ui.views.properties.tabbed" />
|
|
<arg value="org.eclipse.ui.workbench" />
|
|
<arg value="org.eclipse.ui.workbench.texteditor" />
|
|
<arg value="org.eclipse.urischeme" />
|
|
<arg value="org.tukaani.xz" />
|
|
<arg value="org.w3c.css.sac" />
|
|
<arg value="org.w3c.dom.events" />
|
|
<arg value="org.w3c.dom.smil" />
|
|
<arg value="org.w3c.dom.svg" />
|
|
</java>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<target name="deps" depends="ivy.config, deps.jdk-runtime" description="Downloads all dependencies needed for common tasks">
|
|
<ivy:resolve file="buildScripts/ivy.xml" refresh="true" conf="javac6,javac8,ecj8,build,eclipse-oxygen,mapstruct,sources,stripe,buildtools,test" />
|
|
<ivy:retrieve symlink="true" />
|
|
<ivy:cachepath pathid="cp.javac6" conf="javac6" />
|
|
<ivy:cachepath pathid="cp.javac8" conf="javac8" />
|
|
<ivy:cachepath pathid="cp.ecj8" conf="ecj8" />
|
|
<ivy:cachepath pathid="cp.build" conf="build" />
|
|
<ivy:cachepath pathid="cp.eclipse-oxygen" conf="eclipse-oxygen" />
|
|
<ivy:cachepath pathid="cp.mapstruct" conf="mapstruct" />
|
|
<ivy:cachepath pathid="cp.stripe" conf="stripe" />
|
|
<ivy:cachepath pathid="cp.buildtools" conf="buildtools" />
|
|
<ivy:cachepath pathid="cp.test" conf="test" />
|
|
</target>
|
|
|
|
<target name="-setup.ossrh">
|
|
<loadfile quiet="true" failonerror="false" encoding="UTF-8" property="ossrh.password" srcfile="${gpg.keyrings}/ossrh.password">
|
|
<filterchain>
|
|
<striplinebreaks />
|
|
</filterchain>
|
|
</loadfile>
|
|
<property name="ossrh.username" value="rzwitserloot" />
|
|
</target>
|
|
|
|
<fail>ant needs to be at least v1.10.0 or higher to build lombok. Your version is: ${ant.version}
|
|
<condition>
|
|
<not><antversion atleast="1.10.0" /></not>
|
|
</condition>
|
|
</fail>
|
|
<fail>lombok must be compiled on jdk11 or later. Your version is: ${ant.java.version}
|
|
<condition>
|
|
<not><matches string="${ant.java.version}" pattern="${pattern.jdk11plus}" /></not>
|
|
</condition>
|
|
</fail>
|
|
</project>
|