aboutsummaryrefslogtreecommitdiff
path: root/buildScripts
diff options
context:
space:
mode:
Diffstat (limited to 'buildScripts')
-rw-r--r--buildScripts/build-support.ant.xml113
-rw-r--r--buildScripts/compile.ant.xml309
-rw-r--r--buildScripts/create-eclipse-project.ant.xml182
-rw-r--r--buildScripts/create-intellij-project.ant.xml59
-rw-r--r--buildScripts/eclipse-debug-target.template35
-rw-r--r--buildScripts/eclipse-p2.ant.xml43
-rw-r--r--buildScripts/eclipse-run-tests.template30
-rw-r--r--buildScripts/info.ant.xml306
-rw-r--r--buildScripts/ivy-repo/net.java.openjdk.custom-javac11-11_2018-09-25.xml13
-rw-r--r--buildScripts/ivy-repo/net.java.openjdk.custom-javac13-13_2019-09-17.xml12
-rw-r--r--buildScripts/ivy-repo/net.java.openjdk.custom-javac14-14-ea_2020-03-17.xml12
-rw-r--r--buildScripts/ivy-repo/net.java.openjdk.custom-javac8-1.8.0.xml12
-rw-r--r--buildScripts/ivy-repo/org.eclipse.custom-core.jobs-3.5.200.xml14
-rw-r--r--buildScripts/ivy-repo/org.eclipse.custom-core.jobs-3.5.300.xml14
-rw-r--r--buildScripts/ivy-repo/org.eclipse.custom-core.resources-3.7.0.xml14
-rw-r--r--buildScripts/ivy-repo/org.eclipse.custom-core.resources-3.8.100.xml14
-rw-r--r--buildScripts/ivy-repo/org.eclipse.custom-core.runtime-3.6.0.xml14
-rw-r--r--buildScripts/ivy-repo/org.eclipse.custom-core.runtime-3.9.0.xml14
-rw-r--r--buildScripts/ivy-repo/org.eclipse.custom-ecj-3.6.2.xml14
-rw-r--r--buildScripts/ivy-repo/org.eclipse.custom-ecj-4.3.1.xml14
-rw-r--r--buildScripts/ivy-repo/org.eclipse.custom-ecj-I20140430.xml14
-rw-r--r--buildScripts/ivy-repo/org.eclipse.custom-equinox.common-3.6.0.xml14
-rw-r--r--buildScripts/ivy-repo/org.eclipse.custom-equinox.common-3.6.200.xml14
-rw-r--r--buildScripts/ivy-repo/org.eclipse.custom-jdt.core-3.6.0.xml14
-rw-r--r--buildScripts/ivy-repo/org.eclipse.custom-jdt.core-3.9.1.xml14
-rw-r--r--buildScripts/ivy-repo/org.eclipse.custom-jdt.ui-3.6.0.xml14
-rw-r--r--buildScripts/ivy-repo/org.eclipse.custom-jdt.ui-3.9.1.xml14
-rw-r--r--buildScripts/ivy-repo/org.eclipse.custom-osgi-3.6.0.xml14
-rw-r--r--buildScripts/ivy-repo/org.eclipse.custom-osgi-3.9.0.xml14
-rw-r--r--buildScripts/ivy.xml139
-rw-r--r--buildScripts/ivysettings.xml1
-rw-r--r--buildScripts/mapstruct-old.ant.xml169
-rw-r--r--buildScripts/maven.ant.xml126
-rw-r--r--buildScripts/setup.ant.xml175
-rw-r--r--buildScripts/tests.ant.xml177
-rw-r--r--buildScripts/vm-finder.ant.xml191
-rw-r--r--buildScripts/website.ant.xml360
37 files changed, 2160 insertions, 542 deletions
diff --git a/buildScripts/build-support.ant.xml b/buildScripts/build-support.ant.xml
new file mode 100644
index 00000000..107f5f47
--- /dev/null
+++ b/buildScripts/build-support.ant.xml
@@ -0,0 +1,113 @@
+<!--
+ Copyright (C) 2010-2020 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.build-support" default="dist" xmlns:ivy="antlib:com.zwitserloot.ivyplusplus" basedir="..">
+ <description>
+This buildfile is part of projectlombok.org. It is responsible for tasks that help with setting up the build infrastructure.
+None of these tasks are normally needed, unless modifying how the build works, such as updating dependencies.
+ </description>
+
+ <condition property="executable.suffix" value=".exe" else="">
+ <os family="windows" />
+ </condition>
+
+ <condition property="java_home.exe" value="/usr/libexec/java_home">
+ <os family="mac" />
+ </condition>
+
+ <target name="-ask.target-jdk.via-javahome" if="java_home.exe" unless="target.jdk">
+ <input addproperty="target.jdk.ver">You need to specify the JDK9+ jdk whose jdk.compiler and java.compiler modules are to be converted. Use -Dtarget.jdk.ver=14 to automate this, or type a version in now (for example: 11):</input>
+ <condition property="target.jdk.ver.missing" value="true">
+ <equals arg1="${target.jdk.ver}" arg2="" trim="true" />
+ </condition>
+ <fail if="target.jdk.ver.missing">Aborted (no version entered)</fail>
+ <exec executable="${java_home.exe}" outputproperty="target.jdk" failonerror="true">
+ <arg value="-v" />
+ <arg value="${target.jdk.ver}" />
+ </exec>
+ <echo>Using VM at: ${target.jdk}</echo>
+ </target>
+
+ <target name="-ask.target-jdk" depends="-ask.target-jdk.via-javahome" unless="target.jdk">
+ <input addproperty="target.jdk">You need to specify the JDK9+ jdk whose jdk.compiler and java.compiler modules are to be converted. Run ant with -Dtarget.jdk=/full/path/here to automate this, or type the path in now (for example: /Library/JavaVirtualMachines/jdk-14.jdk/Contents/Home):</input>
+ </target>
+
+ <target name="make.javac-patch-jar" depends="-ask.target-jdk" description="to test javac13 on JDK14, for example, you need a jar (not a jmod), to use with --patch-modules. This task makes those.">
+ <exec executable="${target.jdk}/bin/java${executable.suffix}" outputproperty="target.javac.version.full" errorproperty="target.javac.version.err">
+ <arg value="--version" />
+ </exec>
+ <condition property="target.javac.tooearly" >
+ <contains string="${target.javac.version.err}" substring="Unrecognized option" />
+ </condition>
+ <fail if="target.javac.tooearly">This tool converts javac as stored in jmods of JDK distributions; JDK8 and below doesn't ship like that, and you don't need this for 8 and below.</fail>
+
+ <delete dir="build/jdk-compiler-jar" quiet="true" />
+ <mkdir dir="build/jdk-compiler-jar" />
+ <echo file="build/jdk-compiler-jar/version.txt">${target.javac.version.full}</echo>
+ <copy file="build/jdk-compiler-jar/version.txt" tofile="build/jdk-compiler-jar/shortversion.txt" />
+ <replaceregexp file="build/jdk-compiler-jar/version.txt" match="^openjdk ([^ ]+) (\d{4}-\d{2}-\d{2}).*$" replace="\1_\2" flags="si" />
+ <replaceregexp file="build/jdk-compiler-jar/shortversion.txt" match="^openjdk ([^ ]+) (\d{4}-\d{2}-\d{2}).*$" replace="\1" flags="si" />
+ <loadfile property="target.javac.version" srcfile="build/jdk-compiler-jar/version.txt" />
+ <loadfile property="target.javac.shortversion" srcfile="build/jdk-compiler-jar/shortversion.txt" />
+
+ <mkdir dir="build/jdk-compiler-jar/java.compiler" />
+ <exec executable="${target.jdk}/bin/jmod${executable.suffix}">
+ <arg value="--dir" />
+ <arg file="build/jdk-compiler-jar/java.compiler" />
+ <arg value="extract" />
+ <arg file="${target.jdk}/jmods/java.compiler.jmod" />
+ </exec>
+ <jar destfile="build/javac${target.javac.version}-java.compiler.jar" index="true">
+ <fileset dir="build/jdk-compiler-jar/java.compiler/classes" />
+ <fileset dir="build/jdk-compiler-jar/java.compiler/legal" />
+ </jar>
+
+ <mkdir dir="build/jdk-compiler-jar/jdk.compiler" />
+ <exec executable="${target.jdk}/bin/jmod${executable.suffix}">
+ <arg value="--dir" />
+ <arg file="build/jdk-compiler-jar/jdk.compiler" />
+ <arg value="extract" />
+ <arg file="${target.jdk}/jmods/jdk.compiler.jmod" />
+ </exec>
+ <jar destfile="build/javac${target.javac.version}-jdk.compiler.jar" index="true">
+ <fileset dir="build/jdk-compiler-jar/jdk.compiler/classes" />
+ <fileset dir="build/jdk-compiler-jar/jdk.compiler/legal" />
+ </jar>
+
+ <tstamp>
+ <format property="target.javac.pubstamp" pattern="yyyyMMddHHmmss" />
+ </tstamp>
+ <echo file="buildScripts/ivy-repo/net.java.openjdk.custom-javac${target.javac.shortversion}-${target.javac.version}.xml">&lt;ivy-module version="2.0"&gt;
+ &lt;info organisation="net.java.openjdk.custom" module="javac${target.javac.shortversion}" revision="${target.javac.version}" publication="${target.javac.pubstamp}"&gt;
+ &lt;license name="GNU General Public License v2 with Classpath Exception" url="https://openjdk.java.net/legal/gplv2+ce.html" /&gt;
+ &lt;description homepage="https://openjdk.java.net" /&gt;
+ &lt;/info&gt;
+ &lt;configurations&gt;
+ &lt;conf name="runtime" /&gt;
+ &lt;/configurations&gt;
+ &lt;publications&gt;
+ &lt;artifact name="javac${target.javac.shortversion}-java.compiler" conf="runtime" url="https://projectlombok.org/ivyrepo/langtools/javac${target.javac.version}-java.compiler.jar" /&gt;
+ &lt;artifact name="javac${target.javac.shortversion}-jdk.compiler" conf="runtime" url="https://projectlombok.org/ivyrepo/langtools/javac${target.javac.version}-jdk.compiler.jar" /&gt;
+ &lt;/publications&gt;
+&lt;/ivy-module&gt;</echo>
+ <echo>File build/javac${target.javac.version}-java.compiler.jar and build/javac${target.javac.version}-jdk.compiler.jar are available for upload; custom ivy target made as GAV net.java.openjdk.custom::javac${target.javac.shortversion}::${target.javac.version}</echo>
+ </target>
+</project>
diff --git a/buildScripts/compile.ant.xml b/buildScripts/compile.ant.xml
new file mode 100644
index 00000000..a68d6dc1
--- /dev/null
+++ b/buildScripts/compile.ant.xml
@@ -0,0 +1,309 @@
+<!--
+ Copyright (C) 2020 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.compile" default="dist" xmlns:ivy="antlib:com.zwitserloot.ivyplusplus" basedir="..">
+ <description>
+This buildfile is part of projectlombok.org. It takes care of compiling and building lombok itself.
+ </description>
+
+ <property name="mapstruct-binding.version" value="0.1.0" />
+
+ <!-- compiles just 'version.java' and runs the produced class file, setting up the various version properties -->
+ <target name="version" depends="ipp.setup, deps.jdk-runtime" description="Shows the version number" unless="lombok.version">
+ <mkdir dir="build/lombok" />
+ <ivy:compile destdir="build/lombok" source="1.5" target="1.5" ecj="true" nowarn="true">
+ <bootclasspath path="${jdk-rt.loc}" />
+ <src path="src/core" />
+ <include name="lombok/core/Version.java" />
+ </ivy:compile>
+ <java
+ classname="lombok.core.Version"
+ classpath="build/lombok"
+ failonerror="true"
+ output="build/version.txt">
+ <arg value="full" />
+ </java>
+ <ivy:loadversion property="lombok.fullversion" file="build/version.txt" />
+ <java
+ classname="lombok.core.Version"
+ classpath="build/lombok"
+ failonerror="true"
+ output="build/version.txt" />
+ <ivy:loadversion property="lombok.version" file="build/version.txt" />
+ <echo level="info">Lombok version: ${lombok.version} (${lombok.fullversion})</echo>
+ </target>
+
+ <target name="compile" depends="version, deps" description="Compiles the code">
+ <!--
+ 1. Compile stubs.
+ 2. Compile lombok-utils.
+ 3. Compile transplants.
+ 4. Compile lombok.
+ 5. Run SPI processor.
+ 6. Create other manifest entries. -->
+
+ <!--
+ ant includes the destination dir on the classpath (and there are good reasons to do this), but that also means
+ the bleeding edge lombok from the previous build is run (as lombok is an annotation processor), which means if
+ there are bugs in it, you can't compile anymore until you 'ant clean'. That's very undesirable. so we kill the processor,
+ which stops lombok from running. We re-create the file at the end of this target. -->
+ <delete file="build/lombok/META-INF/services/javax.annotation.processing.Processor" quiet="true" />
+
+ <!--
+ first, compile stubs. Lombok needs to produce class files that run in a wide variety of JDK, javac, and ecj/eclipse versions.
+ Instead of depending on conflicting versions, we write stub files; just enough for compilation to succeed.
+
+ However, the stubs themselves also have a ton of dependencies; to avoid _that_, we have stubs for stubs, too! -->
+ <ivy:compile destdir="build/stubsstubs" source="1.5" target="1.5" ecj="true">
+ <bootclasspath path="${jdk-rt.loc}" />
+ <src path="src/stubsstubs" />
+ </ivy:compile>
+ <ivy:compile destdir="build/stubs" source="1.5" target="1.5" ecj="true">
+ <bootclasspath path="${jdk-rt.loc}" />
+ <src path="src/stubs" />
+ <src path="src/javac-only-stubs" />
+ <classpath location="build/stubsstubs" />
+ <classpath location="build/stubs" />
+ </ivy:compile>
+
+ <!--
+ compile the eclipse agent's transplant sources.
+ This is code that is not actually run within lombok; it is bytecode that the eclipse agent extracts from the class file
+ within its own jar and injects it into the eclipse classes as a patch.
+
+ To keep the project clean of warnings, a few SuppressWarnings have been added, but we don't want them there during compilation,
+ so remove them first.
+
+ For legacy eclipse support we include them in both class file format 48 (java 1.4) and 50 (java 1.6), though in practice
+ we don't support eclipses that run on anything below java 1.8 anymore. -->
+ <mkdir dir="build/transformedSources" />
+ <copy todir="build/transformedSources">
+ <fileset dir="src/eclipseAgent">
+ <include name="**/*Transplants.java" />
+ </fileset>
+ <filterchain>
+ <lineContainsRegExp negate="true">
+ <regexp pattern="^\s*@SuppressWarnings.*$" />
+ </lineContainsRegExp>
+ </filterchain>
+ </copy>
+
+ <ivy:compile destdir="build/lombok" source="1.4" target="1.4" ecj="true">
+ <bootclasspath location="build/stubs" />
+ <bootclasspath path="${jdk-rt.loc}" />
+ <src path="build/transformedSources" />
+ </ivy:compile>
+
+ <ivy:compile destdir="build/lombok/Class50" source="1.4" target="1.6" ecj="true">
+ <bootclasspath location="build/stubs" />
+ <bootclasspath path="${jdk-rt.loc}" />
+ <src path="build/transformedSources" />
+ </ivy:compile>
+
+ <ivy:compile destdir="build/lombok" source="1.5" target="1.5" ecj="true">
+ <bootclasspath location="build/stubs" />
+ <bootclasspath path="${jdk-rt.loc}" />
+ <src path="src/utils" />
+ <exclude name="lombok/javac/**" />
+ <classpath path="build/lombok" />
+ <classpath refid="cp.javac6" />
+ <classpath refid="cp.ecj8" />
+ </ivy:compile>
+ <ivy:compile destdir="build/lombok" source="1.6" target="1.6" ecj="true">
+ <bootclasspath location="build/stubs" />
+ <bootclasspath path="${jdk-rt.loc}" />
+ <src path="src/utils" />
+ <include name="lombok/javac/**" />
+ <classpath location="build/lombok" />
+ <classpath refid="cp.javac6" />
+ </ivy:compile>
+
+ <!--
+ compile lombok proper. We target java 1.6 to be as compatible with older releases as we can, using a JDK6 boot rt to ensure we don't
+ use API that didn't exist in those versions yet. -->
+ <ivy:compile destdir="build/lombok" source="1.6" target="1.6" ecj="true" nowarn="true">
+ <bootclasspath location="build/stubs" />
+ <bootclasspath path="${jdk-rt.loc}" />
+ <src path="src/launch" />
+ <src path="src/core" />
+ <src path="src/installer" />
+ <src path="src/eclipseAgent" />
+ <src path="src/delombok" />
+ <exclude name="**/*Transplants.java" />
+ <classpath location="build/lombok" />
+ <classpath refid="cp.build" />
+ <classpath refid="cp.eclipse-oxygen" />
+ <classpath refid="cp.javac6" />
+ </ivy:compile>
+
+ <!-- This is really part of the eclipse agent, but references lombok, so that had to be compiled first -->
+ <ivy:compile destdir="build/lombok/Class50" source="1.5" target="1.6" ecj="true">
+ <bootclasspath location="build/stubs" />
+ <bootclasspath path="${jdk-rt.loc}" />
+ <src path="src/eclipseAgent" />
+ <include name="lombok/launch/PatchFixesHider.java" />
+ <classpath location="build/lombok" />
+ <classpath refid="cp.build" />
+ <classpath refid="cp.eclipse-oxygen" />
+ </ivy:compile>
+
+ <!--
+ a couple of classes to cater to the bits of javac8+ that require j8 language constructs/API types; the main lombok
+ compile refers to these via reflection -->
+ <ivy:compile destdir="build/lombok" source="1.8" target="1.8" ecj="true" nowarn="true" includesystembootclasspath="true">
+ <bootclasspath location="build/stubs" />
+ <src path="src/core8" />
+ <classpath location="build/lombok" />
+ <classpath refid="cp.javac8" />
+ </ivy:compile>
+
+ <!--
+ We also act as a jigsaw module so that module-based compile runs can use module-style dependency management. Obviously,
+ that bit we can only compile with jdk9+. -->
+ <ivy:compile destdir="build/lombok" release="9">
+ <src path="src/core9" />
+ <compilerarg value="-Xlint:none" />
+ <classpath location="build/lombok" />
+ <classpath refid="cp.build" />
+ </ivy:compile>
+
+ <!-- Run the SPI processor to create the services files listing all lombok handlers -->
+ <delete dir="build/lombok-proc-result" quiet="true" />
+ <ivy:compile destdir="build/lombok-proc-result" release="9" nowarn="true">
+ <classpath location="build/stubs" />
+ <compilerarg value="-proc:only" />
+ <compilerarg value="-processor" />
+ <compilerarg value="org.mangosdk.spi.processor.SpiProcessor" />
+ <src path="src/core" />
+ <src path="src/installer" />
+ <src path="src/eclipseAgent" />
+ <src path="src/delombok" />
+ <classpath location="build/lombok" />
+ <classpath refid="cp.build" />
+ <classpath refid="cp.javac6" />
+ <classpath refid="cp.eclipse-oxygen" />
+ </ivy:compile>
+
+ <copy todir="build/lombok">
+ <fileset dir="build/lombok-proc-result">
+ <include name="META-INF/services/*" />
+ </fileset>
+ </copy>
+
+ <mkdir dir="build/lombok/META-INF" />
+ <mkdir dir="build/lombok/META-INF/services" />
+ <echo file="build/lombok/META-INF/services/javax.annotation.processing.Processor">lombok.launch.AnnotationProcessorHider$AnnotationProcessor
+lombok.launch.AnnotationProcessorHider$ClaimingProcessor</echo>
+ <mkdir dir="build/lombok/META-INF/gradle" />
+ <echo file="build/lombok/META-INF/gradle/incremental.annotation.processors">lombok.launch.AnnotationProcessorHider$AnnotationProcessor,isolating
+lombok.launch.AnnotationProcessorHider$ClaimingProcessor,isolating</echo>
+ </target>
+
+ <!-- compiles the bit of API from mapstruct that lombok compiles against. -->
+ <target name="mapstruct.compile">
+ <mkdir dir="build/mapstruct" />
+ <ivy:compile destdir="build/mapstruct" release="9">
+ <src path="src/j9stubs" />
+ </ivy:compile>
+ <mkdir dir="build/lombok/secondaryLoading.SCL.lombok/org/mapstruct/ap/spi" />
+ <move
+ file="build/mapstruct/org/mapstruct/ap/spi/AstModifyingAnnotationProcessor.class"
+ tofile="build/lombok/secondaryLoading.SCL.lombok/org/mapstruct/ap/spi/AstModifyingAnnotationProcessor.SCL.lombok" />
+ </target>
+
+ <target name="-deps.unpack" depends="deps">
+ <ivy:cachedunjar dest="build/lombok" marker="build/unpackDeps.marker">
+ <path refid="cp.stripe" />
+ </ivy:cachedunjar>
+ </target>
+
+ <target name="dist" depends="version, compile, latest-changes.build, mapstruct.compile, -deps.unpack" description="Builds the 'everything' lombok.jar">
+ <mkdir dir="dist" />
+ <copy file="doc/changelog.markdown" tofile="build/changelog.txt" />
+ <tstamp><format property="release.timestamp" pattern="yyyy-MM-dd" /></tstamp>
+ <echo file="release-timestamp.txt">${release.timestamp}</echo>
+
+ <!-- the ant jar task doesn't quite let us do all we need to, so build with zip, then do the jar bits afterwards -->
+ <zip destfile="dist/lombok-${lombok.version}.jar">
+ <fileset dir="build" includes="changelog.txt, latestchanges.html" />
+ <fileset dir="." includes="README.md, LICENSE, AUTHORS, release-timestamp.txt" />
+
+ <!--
+ most class files that need to be in the lombok distro are loaded in a separate class loader;
+ we want any project that includes lombok.jar as a dependency to NOT get a bunch of otherwise public
+ lombok classes served up in autocomplete dialogs, amongst other reasons.
+
+ Thus, we list here only the few class files that serve as 'entry points'. -->
+ <fileset dir="build/lombok">
+ <include name="module-info.class" />
+ <include name="lombok/*.class" />
+ <include name="lombok/experimental/**" />
+ <include name="lombok/extern/**" />
+ <include name="lombok/launch/**" />
+ <include name="lombok/delombok/ant/Tasks*" />
+ <include name="lombok/javac/apt/Processor.class" />
+ <include name="lombok/META-INF/**" />
+ </fileset>
+
+ <!-- now include everything else but renamed for the shadowloader system, to make these clsases invisible to other projects. -->
+ <mappedresources>
+ <fileset dir="build/lombok">
+ <exclude name="com/sun/tools/javac/**" />
+ <exclude name="module-info.class" />
+ <exclude name="lombok/*.class" />
+ <exclude name="lombok/experimental/**" />
+ <exclude name="lombok/extern/**" />
+ <exclude name="lombok/launch/**" />
+ <exclude name="lombok/delombok/ant/Tasks*" />
+ <exclude name="lombok/javac/apt/Processor.class" />
+ <exclude name="lombok/META-INF/**" />
+ </fileset>
+ <firstmatchmapper>
+ <globmapper from="*.class" to="*.SCL.lombok" />
+ <identitymapper />
+ </firstmatchmapper>
+ </mappedresources>
+ </zip>
+
+ <!-- ... but manifest is not part of the ant zip task, so do that with the jar task -->
+ <jar destfile="dist/lombok-${lombok.version}.jar" update="true">
+ <manifest>
+ <attribute name="Premain-Class" value="lombok.launch.Agent" />
+ <attribute name="Agent-Class" value="lombok.launch.Agent" />
+ <attribute name="Can-Redefine-Classes" value="true" />
+ <attribute name="Main-Class" value="lombok.launch.Main" />
+ <attribute name="Lombok-Version" value="${lombok.version}" />
+ </manifest>
+ </jar>
+ <delete file="release-timestamp.txt" />
+ <symlink overwrite="true" link="dist/lombok.jar" resource="lombok-${lombok.version}.jar" />
+ <property name="lombok.dist.built" value="true" />
+ </target>
+
+ <target name="compile.support" depends="ipp.setup, deps" description="Compiles code that is used solely by the build, such as website and IDE project creation">
+ <ivy:compile includeDestClasses="false" includeantruntime="false" destdir="build/support" debug="on" source="1.8" target="1.8">
+ <compilerarg value="-proc:none" />
+ <compilerarg value="-Xlint:-options" />
+ <classpath refid="cp.buildtools" />
+ <src path="src/support" />
+ </ivy:compile>
+ </target>
+</project>
diff --git a/buildScripts/create-eclipse-project.ant.xml b/buildScripts/create-eclipse-project.ant.xml
new file mode 100644
index 00000000..93eed3b0
--- /dev/null
+++ b/buildScripts/create-eclipse-project.ant.xml
@@ -0,0 +1,182 @@
+<!--
+ Copyright (C) 2010-2020 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.create-eclipse-project" default="" xmlns:ivy="antlib:com.zwitserloot.ivyplusplus" basedir="..">
+ <description>
+This buildfile is part of projectlombok.org. It creates the infrastructure needed to develop lombok on eclipse.
+ </description>
+
+ <target name="eclipse" depends="eclipse.projectfiles, eclipse.testtarget.default" description="Downloads dependencies, create eclipse project files, as well as debug/run test targets. Open this directory as project in eclipse (via import... existing projects)" />
+
+ <target name="eclipse.projectfiles" depends="deps">
+ <ivy:eclipsegen source="1.6">
+ <srcdir dir="src/core" />
+ <srcdir dir="src/core8" />
+ <srcdir dir="src/launch" />
+ <srcdir dir="src/utils" />
+ <srcdir dir="src/eclipseAgent" />
+ <srcdir dir="src/installer" />
+ <srcdir dir="src/delombok" />
+ <srcdir dir="src/stubs" />
+ <srcdir dir="src/testAP" />
+ <srcdir dir="src/support" />
+ <srcdir dir="experimental/src" />
+ <srcdir dir="test/transform/src" />
+ <srcdir dir="test/core/src" />
+ <srcdir dir="test/bytecode/src" />
+ <srcdir dir="test/configuration/src" />
+ <srcdir dir="test/stubs" />
+ <conf name="build" sources="sources" />
+ <conf name="javac6" sources="sources" />
+ <conf name="eclipse-oxygen" sources="sources" />
+ <conf name="test" sources="sources" />
+ <conf name="buildtools" sources="sources" />
+ <local org="org.projectlombok" name="lombok.patcher" dir="../lombok.patcher" />
+ <settings>
+ <url url="https://projectlombok.org/downloads/lombok.eclipse.settings" />
+ </settings>
+ <apt location="lib/build/projectlombok.org-spi.jar" />
+ </ivy:eclipsegen>
+ </target>
+
+ <target name="eclipse.testtarget.default" depends="deps, compile.support">
+ <property name="cp.test" refid="cp.test" />
+ <property name="cp.stripe" refid="cp.stripe" />
+ <property name="cp.eclipse-202006" refid="cp.eclipse-202006" />
+
+ <java classname="lombok.eclipseCreate.CreateEclipseDebugTarget" failonerror="true">
+ <classpath>
+ <path refid="cp.buildtools" />
+ <pathelement location="build/support" />
+ </classpath>
+ <arg value="name=Lombok-test Base" />
+ <arg value="testType=lombok.TestBase" />
+ <arg value="jvmTarget=1.8" />
+ <arg value="conf.test=${cp.test}" />
+ <arg value="conf.stripe=${cp.stripe}" />
+ <arg value="favorite" />
+ </java>
+
+ <java classname="lombok.eclipseCreate.CreateEclipseDebugTarget" failonerror="true">
+ <classpath>
+ <path refid="cp.buildtools" />
+ <pathelement location="build/support" />
+ </classpath>
+ <arg value="name=Lombok-test Eclipse-202006" />
+ <arg value="testType=lombok.TestEclipse" />
+ <arg value="jvmTarget=1.8" />
+ <arg value="conf.test=${cp.test}" />
+ <arg value="conf.stripe=${cp.stripe}" />
+ <arg value="conf.eclipse-oxygen=${cp.eclipse-202006}" />
+ <arg value="favorite" />
+ </java>
+
+ <java classname="lombok.eclipseCreate.CreateEclipseDebugTarget" failonerror="true">
+ <classpath>
+ <path refid="cp.buildtools" />
+ <pathelement location="build/support" />
+ </classpath>
+ <arg value="name=Lombok-test Javac14" />
+ <arg value="testType=lombok.TestJavac" />
+ <arg value="jvmTarget=14" />
+ <arg value="conf.test=${cp.test}" />
+ <arg value="conf.stripe=${cp.stripe}" />
+ <arg value="favorite" />
+ </java>
+ </target>
+
+ <target name="eclipse.testtarget.javac" depends="compile.support" description="Makes an eclipse launch target for running the tests for javac">
+ <property name="cp.test" refid="cp.test" />
+ <property name="cp.stripe" refid="cp.stripe" />
+
+ <input message="Which javac do you want to target? Enter a version, such as '11'." validargs="8,11,13,14,15" addproperty="testtarget.jvmTarget.input" />
+
+ <condition