概述
Build的方法:
@ImportRuntimeHints(BuildPropertiesRuntimeHints.class)
public class BuildProperties extends InfoProperties {
/**
* Create an instance with the specified entries.
* @param entries the information to expose
*/
public BuildProperties(Properties entries) {
super(processEntries(entries));
}
/**
* Return the groupId of the project or {@code null}.
* @return the group
*/
public String getGroup() {
return get("group");
}
/**
* Return the artifactId of the project or {@code null}.
* @return the artifact
*/
public String getArtifact() {
return get("artifact");
}
/**
* Return the name of the project or {@code null}.
* @return the name
*/
public String getName() {
return get("name");
}
/**
* Return the version of the project or {@code null}.
* @return the version
*/
public String getVersion() {
return get("version");
}
/**
* Return the timestamp of the build or {@code null}.
* <p>
* If the original value could not be parsed properly, it is still available with the
* {@code time} key.
* @return the build time
* @see #get(String)
*/
public Instant getTime() {
return getInstant("time");
}
private static Properties processEntries(Properties properties) {
coerceDate(properties, "time");
return properties;
}
private static void coerceDate(Properties properties, String key) {
String value = properties.getProperty(key);
if (value != null) {
try {
String updatedValue = String
.valueOf(DateTimeFormatter.ISO_INSTANT.parse(value, Instant::from).toEpochMilli());
properties.setProperty(key, updatedValue);
}
catch (DateTimeException ex) {
// Ignore and store the original value
}
}
}
static class BuildPropertiesRuntimeHints implements RuntimeHintsRegistrar {
@Override
public void registerHints(RuntimeHints hints, ClassLoader classLoader) {
hints.resources().registerPattern("META-INF/build-info.properties");
}
}
2.GitProperties
/*
* Copyright 2012-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.boot.info;
import java.time.Instant;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.Properties;
import org.springframework.aot.hint.RuntimeHints;
import org.springframework.aot.hint.RuntimeHintsRegistrar;
import org.springframework.boot.info.GitProperties.GitPropertiesRuntimeHints;
import org.springframework.context.annotation.ImportRuntimeHints;
/**
* Provide git-related information such as commit id and time.
*
* @author Stephane Nicoll
* @since 1.4.0
*/
@ImportRuntimeHints(GitPropertiesRuntimeHints.class)
public class GitProperties extends InfoProperties {
public GitProperties(Properties entries) {
super(processEntries(entries));
}
/**
* Return the name of the branch or {@code null}.
* @return the branch
*/
public String getBranch() {
return get("branch");
}
/**
* Return the full id of the commit or {@code null}.
* @return the full commit id
*/
public String getCommitId() {
return get("commit.id");
}
/**
* Return the abbreviated id of the commit or {@code null}.
* @return the short commit id
*/
public String getShortCommitId() {
String shortId = get("commit.id.abbrev");
if (shortId != null) {
return shortId;
}
String id = getCommitId();
if (id == null) {
return null;
}
return (id.length() > 7) ? id.substring(0, 7) : id;
}
/**
* Return the timestamp of the commit or {@code null}.
* <p>
* If the original value could not be parsed properly, it is still available with the
* {@code commit.time} key.
* @return the commit time
* @see #get(String)
*/
public Instant getCommitTime() {
return getInstant("commit.time");
}
private static Properties processEntries(Properties properties) {
coercePropertyToEpoch(properties, "commit.time");
coercePropertyToEpoch(properties, "build.time");
Object commitId = properties.get("commit.id");
if (commitId != null) {
// Can get converted into a map, so we copy the entry as a nested key
properties.put("commit.id.full", commitId);
}
return properties;
}
private static void coercePropertyToEpoch(Properties properties, String key) {
String value = properties.getProperty(key);
if (value != null) {
properties.setProperty(key, coerceToEpoch(value));
}
}
/**
* Attempt to convert the specified value to epoch time. Git properties information
* are known to be specified either as epoch time in seconds or using a specific date
* format.
* @param s the value to coerce to
* @return the epoch time in milliseconds or the original value if it couldn't be
* converted
*/
private static String coerceToEpoch(String s) {
Long epoch = parseEpochSecond(s);
if (epoch != null) {
return String.valueOf(epoch);
}
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ");
try {
return String.valueOf(format.parse(s, Instant::from).toEpochMilli());
}
catch (DateTimeParseException ex) {
return s;
}
}
private static Long parseEpochSecond(String s) {
try {
return Long.parseLong(s) * 1000;
}
catch (NumberFormatException ex) {
return null;
}
}
static class GitPropertiesRuntimeHints implements RuntimeHintsRegistrar {
@Override
public void registerHints(RuntimeHints hints, ClassLoader classLoader) {
hints.resources().registerPattern("git.properties");
}
}
}
3.InfoProperties:
public class InfoProperties implements Iterable<InfoProperties.Entry> {
private final Properties entries;
/**
* Create an instance with the specified entries.
* @param entries the information to expose
*/
public InfoProperties(Properties entries) {
Assert.notNull(entries, "Entries must not be null");
this.entries = copy(entries);
}
/**
* Return the value of the specified property or {@code null}.
* @param key the key of the property
* @return the property value
*/
public String get(String key) {
return this.entries.getProperty(key);
}
/**
* Return the value of the specified property as an {@link Instant} or {@code null} if
* the value is not a valid {@link Long} representation of an epoch time.
* @param key the key of the property
* @return the property value
*/
public Instant getInstant(String key) {
String s = get(key);
if (s != null) {
try {
return Instant.ofEpochMilli(Long.parseLong(s));
}
catch (NumberFormatException ex) {
// Not valid epoch time
}
}
return null;
}
@Override
public Iterator<Entry> iterator() {
return new PropertiesIterator(this.entries);
}
/**
* Return a {@link PropertySource} of this instance.
* @return a {@link PropertySource}
*/
public PropertySource<?> toPropertySource() {
return new PropertiesPropertySource(getClass().getSimpleName(), copy(this.entries));
}
private Properties copy(Properties properties) {
Properties copy = new Properties();
copy.putAll(properties);
return copy;
}
private static final class PropertiesIterator implements Iterator<Entry> {
private final Iterator<Map.Entry<Object, Object>> iterator;
private PropertiesIterator(Properties properties) {
this.iterator = properties.entrySet().iterator();
}
@Override
public boolean hasNext() {
return this.iterator.hasNext();
}
@Override
public Entry next() {
Map.Entry<Object, Object> entry = this.iterator.next();
return new Entry((String) entry.getKey(), (String) entry.getValue());
}
@Override
public void remove() {
throw new UnsupportedOperationException("InfoProperties are immutable.");
}
}
/**
* Property entry.
*/
public static final class Entry {
private final String key;
private final String value;
private Entry(String key, String value) {
this.key = key;
this.value = value;
}
public String getKey() {
return this.key;
}
public String getValue() {
return this.value;
}
}
}
JavaInfo:
public class JavaInfo {
private final String version;
private final JavaVendorInfo vendor;
private final JavaRuntimeEnvironmentInfo runtime;
private final JavaVirtualMachineInfo jvm;
public JavaInfo() {
this.version = System.getProperty("java.version");
this.vendor = new JavaVendorInfo();
this.runtime = new JavaRuntimeEnvironmentInfo();
this.jvm = new JavaVirtualMachineInfo();
}
public String getVersion() {
return this.version;
}
public JavaVendorInfo getVendor() {
return this.vendor;
}
public JavaRuntimeEnvironmentInfo getRuntime() {
return this.runtime;
}
public JavaVirtualMachineInfo getJvm() {
return this.jvm;
}
/**
* Information about the Java Vendor of the Java Runtime the application is running
* in.
*
* @since 2.7.0
*/
public static class JavaVendorInfo {
private final String name;
private final String version;
public JavaVendorInfo() {
this.name = System.getProperty("java.vendor");
this.version = System.getProperty("java.vendor.version");
}
public String getName() {
return this.name;
}
public String getVersion() {
return this.version;
}
}
/**
* Information about the Java Runtime Environment the application is running in.
*/
public static class JavaRuntimeEnvironmentInfo {
private final String name;
private final String version;
public JavaRuntimeEnvironmentInfo() {
this.name = System.getProperty("java.runtime.name");
this.version = System.getProperty("java.runtime.version");
}
public String getName() {
return this.name;
}
public String getVersion() {
return this.version;
}
}
/**
* Information about the Java Virtual Machine the application is running in.
*/
public static class JavaVirtualMachineInfo {
private final String name;
private final String vendor;
private final String version;
public JavaVirtualMachineInfo() {
this.name = System.getProperty("java.vm.name");
this.vendor = System.getProperty("java.vm.vendor");
this.version = System.getProperty("java.vm.version");
}
public String getName() {
return this.name;
}
public String getVendor() {
return this.vendor;
}
public String getVersion() {
return this.version;
}
}
}
osinfo:
public class OsInfo {
private final String name;
private final String version;
private final String arch;
public OsInfo() {
this.name = System.getProperty("os.name");
this.version = System.getProperty("os.version");
this.arch = System.getProperty("os.arch");
}
public String getName() {
return this.name;
}
public String getVersion() {
return this.version;
}
public String getArch() {
return this.arch;
}
}
最后
以上就是欣喜丝袜为你收集整理的java 属性消息的全部内容,希望文章能够帮你解决java 属性消息所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复