Hey David and all,

Thanks for the detailed write up.
I made some changes to being able to patch Tomcat both in tomee-jakarta and
in the Maven tomee-patch-plugin.
Made some small changes to bring back Jenkins to green because it was
failing.

We should be good to move on.

While doing this, I realized an issue with the packaging that makes the
execution fail.
Maven seems to pull both the -SNAPSHOT jar and the timestamped version like

$ ls apache-tomee-plume-9.0.0-M7-SNAPSHOT/lib/tomee*
> apache-tomee-plume-9.0.0-M7-SNAPSHOT/lib/tomee-catalina-8.0.7-20210327.040242-103.jar
>    apache-tomee-plume-9.0.0-M7-SNAPSHOT/lib/tomee-jdbc-8.0.7-SNAPSHOT.jar
> apache-tomee-plume-9.0.0-M7-SNAPSHOT/lib/tomee-catalina-8.0.7-SNAPSHOT.jar
>
> apache-tomee-plume-9.0.0-M7-SNAPSHOT/lib/tomee-juli-8.0.7-20210327.040051-103.jar
> apache-tomee-plume-9.0.0-M7-SNAPSHOT/lib/tomee-common-8.0.7-SNAPSHOT.jar
>
> apache-tomee-plume-9.0.0-M7-SNAPSHOT/lib/tomee-loader-8.0.7-20210327.040109-103.jar
> apache-tomee-plume-9.0.0-M7-SNAPSHOT/lib/tomee-config-8.0.7-20210327.035954-103.jar
>
>  apache-tomee-plume-9.0.0-M7-SNAPSHOT/lib/tomee-loader-8.0.7-SNAPSHOT.jar
> apache-tomee-plume-9.0.0-M7-SNAPSHOT/lib/tomee-config-8.0.7-SNAPSHOT.jar
>
> apache-tomee-plume-9.0.0-M7-SNAPSHOT/lib/tomee-mojarra-8.0.7-SNAPSHOT.jar
> apache-tomee-plume-9.0.0-M7-SNAPSHOT/lib/tomee-jaxrs-8.0.7-20210327.040512-103.jar
>
> apache-tomee-plume-9.0.0-M7-SNAPSHOT/lib/tomee-security-8.0.7-SNAPSHOT.jar
> apache-tomee-plume-9.0.0-M7-SNAPSHOT/lib/tomee-jaxrs-8.0.7-SNAPSHOT.jar
>
>  apache-tomee-plume-9.0.0-M7-SNAPSHOT/lib/tomee-webapp-8.0.7-SNAPSHOT.jar
> apache-tomee-plume-9.0.0-M7-SNAPSHOT/lib/tomee-jdbc-8.0.7-20210327.040122-103.jar
>
>  
> apache-tomee-plume-9.0.0-M7-SNAPSHOT/lib/tomee-webservices-8.0.7-20210327.040612-103.jar
>

If someone can look at it, or I'll have a look today
--
Jean-Louis Monteiro
http://twitter.com/jlouismonteiro
http://www.tomitribe.com


On Sat, Mar 27, 2021 at 5:05 AM David Blevins <[email protected]>
wrote:

> Hi All,
>
> Some updates.  I went ahead and merged that change so we're now building
> wars, zips, tars and officially using Tomcat 10 in TomEE 9!
>
> We're using Mojarra 3.0.0 and Eclipselink 3.0.0 and I've made improvements
> to the TomEE Patch Plugin to ensure that the versions we have in the dists
> is completely unmodified by the Eclipse Transformer or TomEE Patch Plugin.
> Here's how that works (I'll add this to the README).
>
> In the configuration of the plugin you can have a directive like the
> following:
>
>         <configuration>
>           <select>tomee-plume-webapp-transformed-.*\.war</select>
>           <patchSources>
>
> <source>${project.basedir}/../../transform/src/patch/java/</source>
>             <source>${project.basedir}/src/patch/java/</source>
>           </patchSources>
>           <replace>
>             <jars>
>
> <jakarta.faces-3.0.0.jar>org.glassfish:jakarta.faces:jar:3.0.0</jakarta.faces-3.0.0.jar>
>
> <eclipselink-3.0.0.jar>org.eclipse.persistence:eclipselink:jar:3.0.0</eclipselink-3.0.0.jar>
>             </jars>
>             <resources>
>
> <openejb-version.properties>${project.build.outputDirectory}/openejb-version.properties</openejb-version.properties>
>             </resources>
>           </replace>
>         </configuration>
>
> ## select
>
> The `<select>` setting is what tells the plugin which binaries to modify.
> In the above setting we're saying we want to patch the output of the
> Eclipse Transformer.  The input to the transformer is the regular
> `tomee-plume-webapp-9.0.0-M123-SNAPSHOT.war` file and the output is a new
> `tomee-plume-webapp-transformed-9.0.0-M123-SNAPSHOT.war` file.  It's the
> "transformed" file we want to further patch.
>
> ## patchSources
>
> The `<patchSources>` list allows us to specify locations where *.java
> files live.  We will copy these into the `target/` directory and compile
> them using any *.jar files we find in the war file to create the
> classpath.  These compiled classes are then used to overwrite any classes
> by that name in any part of the war or its libraries.  This is how we
> handle corner cases that are too complicated to deal with using bytecode
> tools -- we can just specify an alternate source file.
>
> Being able to have multiple locations for patch files keeps us from having
> to duplicate patch files as we build multiple war files in multiple
> modules.  The above configuration says grab the *.java files from the
> `transform` module and the *.java files from this module.
>
> ## replace/jars
>
> The `<replace><jars>` list allows us to tell the plugin, "when you see a
> `jakarta.faces-3.0.0.jar` in the war file, replace it with the
> `org.glassfish:jakarta.faces:jar:3.0.0` artifact from our local maven
> repo."  We can use this to effectively restore any jars we do not want the
> Eclipse Transformer to modify.  This will be any jar file that already
> fully supports the Jakarta namespace, like the latest Eclipselink, Mojarra
> or MyFaces.  Of course in theory the Transformer shouldn't have a negative
> impact on jars that already support the new namespace, but why risk it when
> it's easy to gain 100% confidence the jar we ship is byte for byte the same
> one produced by the respective project.
>
> This setting could potentially also be used to do library upgrades via the
> patch plugin.
>
> ## replace/resources
>
> The `<replace><jars>` list allows us to tell the plugin, "when you see an
> `openejb-version.properties` file anywhere in the war file or its
> libraries, replace it with the specially modified version from
> `target/classes/`."  In the module we're generating a new
> `openejb-version.properties` so we can change the version TomEE reports
> from "8.0.7-SNAPSHOT" to "9.0.0-M7-SNAPSHOT"
>
> # Current Jakarta EE 9.1 Results
>
> With all these changes to library upgrades and how we're doing the
> bytecode modification, we're now down to 218 test failures against the
> March 8th snapshot of the Jakarta EE 9.1 TCK.
>
>  - https://tck.work/tomee/build?id=1616775424416
>
> The Jakarta EE 9.1 release is scheduled for mid-may, so that'd give us
> till end of April to get on the official ballot and surprise the world :)
> It would take some intense hours over the next month and a bunch of work
> both here and in Jakarta, but I think we have a real shot.  Not an easy
> shot, but one worth going for.
>
> I'll try to post some details tomorrow on running the TCK locally.  The
> current instructions don't cover 9.1.
>
>
> -David
>
>

Reply via email to