You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2021/04/21 22:10:39 UTC
[tomee] branch master updated: More aggressively rename datestamped
versions to SNAPSHOT
This is an automated email from the ASF dual-hosted git repository.
dblevins pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomee.git
The following commit(s) were added to refs/heads/master by this push:
new 50aca7f More aggressively rename datestamped versions to SNAPSHOT
new 2c7ac38 Merge branch 'master' of github.com:apache/tomee
50aca7f is described below
commit 50aca7f187e803ea837fe11e54d335e602fcfbde
Author: David Blevins <da...@gmail.com>
AuthorDate: Wed Apr 21 15:09:51 2021 -0700
More aggressively rename datestamped versions to SNAPSHOT
---
tomee/apache-tomee/pom.xml | 4 ++
.../java/org/apache/tomee/installer/Installer.java | 71 ++++++++++++++++++++--
.../org/apache/tomee/installer/InstallerTest.java | 38 +++++++++++-
3 files changed, 106 insertions(+), 7 deletions(-)
diff --git a/tomee/apache-tomee/pom.xml b/tomee/apache-tomee/pom.xml
index 86034dd..c35dea4 100644
--- a/tomee/apache-tomee/pom.xml
+++ b/tomee/apache-tomee/pom.xml
@@ -333,6 +333,7 @@
<properties>
<tomee.workdir>${webprofile.work-dir}</tomee.workdir>
<tomee.webapp>tomee-webapp</tomee.webapp>
+ <remove.datestamp>${tomee.version}, ${project.version}, ${cxf.version}</remove.datestamp>
</properties>
<source>
new commands.SetupCommand(pom: this, log: log, project: project, ant: ant, properties: properties).execute()
@@ -349,6 +350,7 @@
<properties>
<tomee.workdir>${plus.work-dir}</tomee.workdir>
<tomee.webapp>tomee-plus-webapp</tomee.webapp>
+ <remove.datestamp>${tomee.version}, ${project.version}, ${cxf.version}</remove.datestamp>
</properties>
<source>
new commands.SetupCommand(pom: this, log: log, project: project, ant: ant, properties: properties).execute()
@@ -365,6 +367,7 @@
<properties>
<tomee.workdir>${plume.work-dir}</tomee.workdir>
<tomee.webapp>tomee-plume-webapp</tomee.webapp>
+ <remove.datestamp>${tomee.version}, ${project.version}, ${cxf.version}</remove.datestamp>
</properties>
<source>
new commands.SetupCommand(pom: this, log: log, project: project, ant: ant, properties: properties).execute()
@@ -381,6 +384,7 @@
<properties>
<tomee.workdir>${microprofile.work-dir}</tomee.workdir>
<tomee.webapp>tomee-microprofile-webapp</tomee.webapp>
+ <remove.datestamp>${tomee.version}, ${project.version}, ${cxf.version}</remove.datestamp>
</properties>
<source>
new commands.SetupCommand(pom: this, log: log, project: project, ant: ant, properties: properties).execute()
diff --git a/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java b/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
index a6e6ce6..a5e2a60 100644
--- a/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
+++ b/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
@@ -24,6 +24,7 @@ import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
+import java.util.function.Function;
import java.util.jar.JarFile;
public class Installer implements InstallerInterface {
@@ -285,7 +286,54 @@ public class Installer implements InstallerInterface {
*/
private void moveLibs() {
- final String tomeeVersion = System.getProperty("tomee.version");
+
+ /*
+ * When there are several SNAPSHOT versions of a jar available, Maven will often copy
+ * the jar into the assembly as openejb-core-8.0.7-20210418.032600-163.jar rather than
+ * openejb-core-8.0.7-SNAPSHOT.jar. This breaks our TCK setup which expects it can
+ * point at jars like "lib/openejb-core-$version.jar", where $version is something like
+ * "8.0.7-SNAPSHOT".
+ *
+ * If we see that for any jar containing our version we will rename it from the date
+ * stamped version to the "-SNAPSHOT" version.
+ */
+
+ Function<String, String> normalizeVersion = Function.identity();
+ if (properties.containsKey("remove.datestamp")) {
+ final String removeDatestamp = properties.get("remove.datestamp");
+ final String[] strings = removeDatestamp.split(" *, *");
+ for (final String string : strings) {
+ if (!string.contains("-SNAPSHOT")) continue;
+ normalizeVersion = normalizeVersion.andThen(removeDatestamp(string.trim()));
+ }
+ }
+
+ /*
+ * In TomEE 9 we produce the final server zip by bytecode transforming the classes
+ * so they use jakarta instead of javax. We do this by inputting the TomEE 8.x
+ * jar and running them through a transformer and creating a new TomEE 9.x zip.
+ *
+ * In this process we also want to rename any libraries from 8.x to 9.x
+ */
+ if (properties.containsKey("rename.version")) {
+ final String renameVersion = properties.get("rename.version");
+
+ final String[] split = renameVersion.split(" *, *");
+ if (split.length != 2) {
+ throw new IllegalStateException("rename.version should be in the form of " +
+ "'version1, version2' for example '8.0.7, 9.0.0'. Found '" + renameVersion + "'");
+ }
+
+ final String from = split[0].trim();
+ final String to = split[1].trim();
+
+ normalizeVersion = normalizeVersion
+ .andThen(removeDatestamp(from))
+ .andThen(removeDatestamp(to))
+ .andThen(changeVersion(from, to));
+
+ }
+
final File libs = paths.getCatalinaLibDir();
final File[] files = paths.getOpenEJBLibDir().listFiles();
@@ -295,7 +343,7 @@ public class Installer implements InstallerInterface {
continue;
}
- final String name = normalizeVersion(tomeeVersion, file.getName());
+ final String name = normalizeVersion.apply(file.getName());
if (!name.endsWith(".jar")) {
continue;
@@ -315,6 +363,17 @@ public class Installer implements InstallerInterface {
}
}
+ public static Function<String, String> removeDatestamp(final String version) {
+ return jarName -> removeDatestamp(version, jarName);
+ }
+
+ public static Function<String, String> changeVersion(final String from, final String to) {
+ return jarName -> {
+ if (!jarName.endsWith(from + ".jar")) return jarName;
+ return jarName.replace(from + ".jar", to + ".jar");
+ };
+ }
+
/**
* Maven will occasionally give a datestamped version of a snapshot. Our TCK
* test harness and likely tooling others have expects the version number to
@@ -326,10 +385,10 @@ public class Installer implements InstallerInterface {
* If we see any Maven datestamps on our jars where we are expecting SNAPSHOT,
* rename the jar to the expected "-SNAPSHOT" name.
*/
- public static String normalizeVersion(final String tomeeVersion, final String jarName) {
- if (!tomeeVersion.contains("-SNAPSHOT")) return jarName;
+ public static String removeDatestamp(final String version, final String jarName) {
+ if (!version.contains("-SNAPSHOT")) return jarName;
- final String versionNumber = tomeeVersion.replaceAll("-SNAPSHOT", "");
+ final String versionNumber = version.replaceAll("-SNAPSHOT", "");
if (!jarName.contains(versionNumber)) return jarName;
// Replace 8.0.7-20210418.035728-165 with 8.0.7-SNAPSHOT
@@ -340,7 +399,7 @@ public class Installer implements InstallerInterface {
// replace the 'd' with '[0-9]'
+ "-dddddddd.dddddd-ddd".replace("d", "[0-9]");
- return jarName.replaceAll(regex, tomeeVersion);
+ return jarName.replaceAll(regex, version);
}
/*
private void addJavaeeInEndorsed() {
diff --git a/tomee/tomee-common/src/test/java/org/apache/tomee/installer/InstallerTest.java b/tomee/tomee-common/src/test/java/org/apache/tomee/installer/InstallerTest.java
index 7ccc2df..6e3ce9e 100644
--- a/tomee/tomee-common/src/test/java/org/apache/tomee/installer/InstallerTest.java
+++ b/tomee/tomee-common/src/test/java/org/apache/tomee/installer/InstallerTest.java
@@ -58,8 +58,44 @@ public class InstallerTest {
}
+ @Test
+ public void normalizeOddVersion() {
+
+ assertVersion("openejb-api-8.0.7-SNAPSHOT.jar", "openejb-api-8.0.7-20210418.032427-163.jar");
+ assertVersion("openejb-client-8.0.7-SNAPSHOT.jar", "openejb-client-8.0.7-20210418.032621-163.jar");
+ assertVersion("openejb-core-8.0.7-SNAPSHOT.jar", "openejb-core-8.0.7-20210418.032600-163.jar");
+ assertVersion("openejb-core-eclipselink-8.0.7-SNAPSHOT.jar", "openejb-core-eclipselink-8.0.7-20210418.033130-163.jar");
+ assertVersion("openejb-cxf-8.0.7-SNAPSHOT.jar", "openejb-cxf-8.0.7-20210418.032810-163.jar");
+ assertVersion("openejb-cxf-rs-8.0.7-SNAPSHOT.jar", "openejb-cxf-rs-8.0.7-20210418.032736-163.jar");
+ assertVersion("openejb-cxf-transport-8.0.7-SNAPSHOT.jar", "openejb-cxf-transport-8.0.7-20210418.032721-163.jar");
+ assertVersion("openejb-derbynet-8.0.7-SNAPSHOT.jar", "openejb-derbynet-8.0.7-SNAPSHOT.jar");
+ assertVersion("openejb-ejbd-8.0.7-SNAPSHOT.jar", "openejb-ejbd-8.0.7-20210418.032656-163.jar");
+ assertVersion("openejb-hsql-8.0.7-SNAPSHOT.jar", "openejb-hsql-8.0.7-20210418.032814-163.jar");
+ assertVersion("openejb-http-8.0.7-SNAPSHOT.jar", "openejb-http-8.0.7-20210418.032703-163.jar");
+ assertVersion("openejb-javaagent-8.0.7-SNAPSHOT.jar", "openejb-javaagent-8.0.7-20210418.032436-163.jar");
+ assertVersion("openejb-javaagent.jar", "openejb-javaagent.jar");
+ assertVersion("openejb-jee-8.0.7-SNAPSHOT.jar", "openejb-jee-8.0.7-20210418.032447-163.jar");
+ assertVersion("openejb-jee-accessors-8.0.7-SNAPSHOT.jar", "openejb-jee-accessors-8.0.7-20210418.032458-163.jar");
+ assertVersion("openejb-jpa-integration-8.0.7-SNAPSHOT.jar", "openejb-jpa-integration-8.0.7-20210418.032423-164.jar");
+ assertVersion("openejb-loader-8.0.7-SNAPSHOT.jar", "openejb-loader-8.0.7-20210418.032432-163.jar");
+ assertVersion("openejb-rest-8.0.7-SNAPSHOT.jar", "openejb-rest-8.0.7-20210418.032713-163.jar");
+ assertVersion("openejb-server-8.0.7-SNAPSHOT.jar", "openejb-server-8.0.7-20210418.032647-163.jar");
+ assertVersion("openejb-webservices-8.0.7-SNAPSHOT.jar", "openejb-webservices-8.0.7-20210418.032756-163.jar");
+ assertVersion("tomee-catalina-8.0.7-SNAPSHOT.jar", "tomee-catalina-8.0.7-SNAPSHOT.jar");
+ assertVersion("tomee-common-8.0.7-SNAPSHOT.jar", "tomee-common-8.0.7-SNAPSHOT.jar");
+ assertVersion("tomee-config-8.0.7-SNAPSHOT.jar", "tomee-config-8.0.7-20210418.032613-163.jar");
+ assertVersion("tomee-jaxrs-8.0.7-SNAPSHOT.jar", "tomee-jaxrs-8.0.7-SNAPSHOT.jar");
+ assertVersion("tomee-jdbc-8.0.7-SNAPSHOT.jar", "tomee-jdbc-8.0.7-20210418.032642-163.jar");
+ assertVersion("tomee-loader-8.0.7-SNAPSHOT.jar", "tomee-loader-8.0.7-SNAPSHOT.jar");
+ assertVersion("tomee-mojarra-8.0.7-SNAPSHOT.jar", "tomee-mojarra-8.0.7-20210418.032823-163.jar");
+ assertVersion("tomee-plume-webapp-9.0.0-M7-SNAPSHOT.jar", "tomee-plume-webapp-9.0.0-M7-SNAPSHOT.jar");
+ assertVersion("tomee-security-8.0.7-SNAPSHOT.jar", "tomee-security-8.0.7-20210418.033034-163.jar");
+ assertVersion("tomee-webservices-8.0.7-SNAPSHOT.jar", "tomee-webservices-8.0.7-20210418.032838-163.jar");
+
+ }
+
private static void assertVersion(final String expected, final String jarName) {
- final String s = Installer.normalizeVersion("8.0.7-SNAPSHOT", jarName);
+ final String s = Installer.removeDatestamp("8.0.7-SNAPSHOT", jarName);
assertEquals(expected, s);
}
}