Merge pull request #6149 from eclipse/jetty-9.4.x-start-tag-name

Issue #6148 - update jetty.tag.version behavior
This commit is contained in:
Joakim Erdfelt 2021-04-12 09:03:18 -05:00 committed by GitHub
commit 23c45c094b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 86 additions and 39 deletions

View File

@ -13,7 +13,30 @@
<spotbugs.onlyAnalyze>org.eclipse.jetty.start.*</spotbugs.onlyAnalyze> <spotbugs.onlyAnalyze>org.eclipse.jetty.start.*</spotbugs.onlyAnalyze>
</properties> </properties>
<build> <build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins> <plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<executions>
<execution>
<id>create-buildnumber</id>
<goals>
<goal>create</goal>
</goals>
<configuration>
<doCheck>false</doCheck>
<doUpdate>false</doUpdate>
<revisionOnScmFailure>${nonCanonicalRevision}</revisionOnScmFailure>
</configuration>
</execution>
</executions>
</plugin>
<plugin> <plugin>
<artifactId>maven-jar-plugin</artifactId> <artifactId>maven-jar-plugin</artifactId>
<configuration> <configuration>

View File

@ -19,7 +19,9 @@
package org.eclipse.jetty.start; package org.eclipse.jetty.start;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.net.URL;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
@ -365,4 +367,32 @@ public final class Props implements Iterable<Prop>
{ {
return props.toString(); return props.toString();
} }
public static Props load(ClassLoader classLoader, String resourceName)
{
StartLog.debug("Looking for classloader resource: %s", resourceName);
return load(classLoader.getResource(resourceName));
}
public static Props load(URL url)
{
Props props = new Props();
if (url != null)
{
StartLog.debug("Loading Props: %s", url.toExternalForm());
try (InputStream in = url.openStream())
{
Properties properties = new Properties();
properties.load(in);
String urlStr = url.toExternalForm();
properties.stringPropertyNames().forEach((name) ->
props.setProperty(name, properties.getProperty(name), urlStr));
}
catch (IOException x)
{
StartLog.debug(x);
}
}
return props;
}
} }

View File

@ -21,9 +21,7 @@ package org.eclipse.jetty.start;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.net.URL;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
@ -40,6 +38,7 @@ import java.util.Map;
import java.util.Properties; import java.util.Properties;
import java.util.Set; import java.util.Set;
import java.util.StringTokenizer; import java.util.StringTokenizer;
import java.util.jar.Attributes;
import java.util.jar.Manifest; import java.util.jar.Manifest;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.StreamSupport; import java.util.stream.StreamSupport;
@ -66,61 +65,51 @@ public class StartArgs
public static final Set<String> ARG_PARTS = Collections.unmodifiableSet(new HashSet<>(Arrays.asList( public static final Set<String> ARG_PARTS = Collections.unmodifiableSet(new HashSet<>(Arrays.asList(
"args"))); "args")));
private static final String JETTY_VERSION_KEY = "jetty.version";
private static final String JETTY_TAG_NAME_KEY = "jetty.tag.version";
private static final String JETTY_BUILDNUM_KEY = "jetty.build";
static static
{ {
// Use command line versions // Use command line versions
String ver = System.getProperty("jetty.version", null); String ver = System.getProperty(JETTY_VERSION_KEY);
String tag = System.getProperty("jetty.tag.version", "master"); String tag = System.getProperty(JETTY_TAG_NAME_KEY);
// Use META-INF/MANIFEST.MF versions // Use META-INF/MANIFEST.MF versions
if (ver == null) if (ver == null)
{ {
ver = ManifestUtils.getManifest(StartArgs.class) ver = ManifestUtils.getManifest(StartArgs.class)
.map(Manifest::getMainAttributes) .map(Manifest::getMainAttributes)
.filter(attributes -> "Eclipse Jetty Project".equals(attributes.getValue("Implementation-Vendor"))) .filter(attributes -> "Eclipse Jetty Project".equals(attributes.getValue(Attributes.Name.IMPLEMENTATION_VENDOR)))
.map(attributes -> attributes.getValue("Implementation-Version")) .map(attributes -> attributes.getValue(Attributes.Name.IMPLEMENTATION_VERSION))
.orElse(null); .orElse(null);
} }
// Use jetty-version.properties values ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
if (ver == null) // use old jetty-version.properties (as seen within various linux distro repackaging of Jetty)
Props jettyVerProps = Props.load(classLoader, "jetty-version.properties");
// use build-time properties (included in start.jar) to pull version and buildNumber
Props buildProps = Props.load(classLoader, "org/eclipse/jetty/start/build.properties");
String sha = buildProps.getString("buildNumber", System.getProperty(JETTY_BUILDNUM_KEY));
if (Utils.isNotBlank(sha))
{ {
URL url = Thread.currentThread().getContextClassLoader().getResource("jetty-version.properties"); System.setProperty(JETTY_BUILDNUM_KEY, sha);
if (url != null)
{
try (InputStream in = url.openStream())
{
Properties props = new Properties();
props.load(in);
ver = props.getProperty("jetty.version");
}
catch (IOException x)
{
StartLog.debug(x);
}
}
} }
// Default values if (Utils.isBlank(ver))
if (ver == null)
{ {
ver = "0.0"; ver = jettyVerProps.getString("version", buildProps.getString("version", "0.0"));
if (tag == null)
tag = "master";
}
else
{
if (tag == null)
tag = "jetty-" + ver;
} }
// Set Tag Defaults if (Utils.isBlank(tag))
if (tag.contains("-SNAPSHOT")) {
tag = "master"; tag = jettyVerProps.getString("tag", buildProps.getString("tag", "jetty-" + ver));
}
VERSION = ver; VERSION = ver;
System.setProperty("jetty.version", VERSION); System.setProperty(JETTY_VERSION_KEY, VERSION);
System.setProperty("jetty.tag.version", tag); System.setProperty(JETTY_TAG_NAME_KEY, tag);
} }
private static final String MAIN_CLASS = "org.eclipse.jetty.xml.XmlConfiguration"; private static final String MAIN_CLASS = "org.eclipse.jetty.xml.XmlConfiguration";
@ -323,8 +312,9 @@ public class StartArgs
System.out.println(); System.out.println();
System.out.println("Jetty Environment:"); System.out.println("Jetty Environment:");
System.out.println("-----------------"); System.out.println("-----------------");
dumpProperty("jetty.version"); dumpProperty(JETTY_VERSION_KEY);
dumpProperty("jetty.tag.version"); dumpProperty(JETTY_TAG_NAME_KEY);
dumpProperty(JETTY_BUILDNUM_KEY);
dumpProperty("jetty.home"); dumpProperty("jetty.home");
dumpProperty("jetty.base"); dumpProperty("jetty.base");

View File

@ -0,0 +1,4 @@
buildNumber=${buildNumber}
timestamp=${timestamp}
version=${project.version}
scmUrl=${project.scm.connection}