-
Notifications
You must be signed in to change notification settings - Fork 163
Working towards Java $N plus 1 ‐ organizational issues
For various reasons (incl. legal reasons), development for the next, unreleased Java version happens in branches named BETA_JAVA23, BETA_JAVA24 etc.
This page captures organizational aspects of this work (work in progress).
describe basic process here
- versions of productive bundles o.e.j.core and o.e.j.c.compiler.batch should use the following pattern to ensure that the beta branch is always ahead of master:
- master: X.Y.Z -- where Z is incremented by 100 when needed
- beta: X.Y.(Z+50)
- this version, however is not considered an official release, mainly used for producing a patch build
- when merging beta back to master then versions and
@sincetags will be incremented to X.(Y+1).0- this version should be used by clients consuming new API from the previous beta branch
- test bundles can keep the same X.Y.Z as in master, as there is no context that will "see" versions from both branches
Changes to be done in pom.xml & test.xml:
-
/pom.xmladd properties-
<eclipse-p2-repo.url>https://download.eclipse.org/eclipse/updates/4.xx-Y-builds</eclipse-p2-repo.url>- needed mostly in jdt.ui and jdt.debug to be able to see new API from jdt.core
- indeed referencing the exact Y-build stream avoids break down during switch of streams
<skipAPIAnalysis>true</skipAPIAnalysis>
-
-
*.tests.*/pom.xml- create test profile
test-on-javase-N
- create test profile
-
*/test.xml- update
vmargsproperty likevalue="-Dcompliance.jre.17=1.8,11,17 ... -Dcompliance.jre.N=1.8,11,17,21,N"
- update
Changes to be done in Jenkinsfile
- select JDK to run on:
jdk 'openjdk-jdkN-latest' - select test profile for the new java version:
-Ptest-on-javase-N - update set of compliance levels to test:
-Dcompliance=1.8,11,17,21,N
- Build job:
- Test job against current Java EA:
- Technical documentation: https://github.com/eclipse-jdt/eclipse.jdt/tree/BETA_JAVA25/org.eclipse.jdt.releng/patchbuild#readme
- Build job: https://ci.eclipse.org/jdt/job/org.eclipse.jdt-patch-feature/
For those who can't access the job configuration, this is what it does (aside from parameter declarations and a few printouts):
git clone https://github.com/eclipse-jdt/eclipse.jdt.git -b BETA_JAVA25
cd eclipse.jdt/org.eclipse.jdt.releng/patchbuild
./build.sh
In jdt.core this consists of
- Remove BETA Disclaimers in class headers
- And update the APIs to remove BETA tags
- Fix the version in API filter
jdt.ui also needs to update the isBetaVersion() method in ComplianceConfigurationBlock
Beta disclaimers must be removed also in https://github.com/eclipse-jdt/eclipse.jdt/tree/BETA_JAVA25/org.eclipse.jdt.releng/patchbuild - see the README for details.
Be prepared to use the fresh openjdk GA download for tests on latest (early access will have expired just then).