From bffd322c1d70542a8d54581797234e634d420f98 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Tue, 7 Mar 2017 12:06:00 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B0=D0=B7=D0=BB=D0=B8=D1=87=D0=BD?= =?UTF-8?q?=D1=8B=D0=B5=20=D1=81=D0=BF=D0=BE=D1=81=D0=BE=D0=B1=D1=8B=20?= =?UTF-8?q?=D1=83=D0=BA=D0=B0=D0=B7=D0=B0=D1=82=D1=8C=20=D1=84=D0=B0=D0=B9?= =?UTF-8?q?=D0=BB=20=D1=81=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9?= =?UTF-8?q?=D0=BA=D0=B0=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Файл с настройками ищется по убывающей последовательности: - указан через параметр asys.props.file; - указан в системном окружении ASYS_PROPS; - находится в той же папке, откуда запустили ASys. Если файл не был найден, берется из по-умолчанию из classpath. --- core/src/main/java/asys/core/Main.java | 63 +++++++++++++++++++++++--- 1 file changed, 56 insertions(+), 7 deletions(-) diff --git a/core/src/main/java/asys/core/Main.java b/core/src/main/java/asys/core/Main.java index dd86d25..cc468e4 100644 --- a/core/src/main/java/asys/core/Main.java +++ b/core/src/main/java/asys/core/Main.java @@ -4,20 +4,69 @@ */ package asys.core; -import java.io.IOException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.*; import java.util.Properties; public class Main { + private static final Logger logger = LoggerFactory.getLogger("Launcher"); + public static void main(String[] args) { - Properties asysProperties = new Properties(); + Core asysCore = new Core(); + asysCore.setProperties(getProperties()); + asysCore.start(); + } + + private static Properties getProperties() { + String pathToProps; + Properties properties = new Properties(); + + // Указан в строке запуска + pathToProps = System.getProperty("asys.props.file"); + if (pathToProps != null && !pathToProps.trim().isEmpty()) { + try { + properties.load(new FileReader(pathToProps)); + logger.debug("asys.props.file = {}", pathToProps); + } catch (IOException e) { + throw new RuntimeException(e); + } + return properties; + } + + // Указан в системном окружении + pathToProps = System.getenv("ASYS_PROPS"); + if (pathToProps != null && !pathToProps.trim().isEmpty()) { + try { + properties.load(new FileReader(pathToProps)); + logger.debug("ASYS_PROPS = {}", pathToProps); + } catch (IOException e) { + throw new RuntimeException(e); + } + return properties; + } + + // Находится в той же рабочей папке + File asysPropsFile = new File("asys.properties"); + if (asysPropsFile.exists() && !asysPropsFile.isDirectory() && + asysPropsFile.canRead() && asysPropsFile.length() > 0) { + try { + properties.load(new FileInputStream(asysPropsFile)); + logger.debug("File = {}", asysPropsFile.getCanonicalPath()); + } catch (IOException e) { + throw new RuntimeException(e); + } + return properties; + } + + // Берем файл по умолчанию, из classpath try { - asysProperties.load(Main.class.getResourceAsStream("/asys.properties")); + properties.load(Main.class.getResourceAsStream("/asys.properties")); + logger.debug("Use default properties file"); } catch (IOException e) { throw new RuntimeException(e); } - - Core asysCore = new Core(); - asysCore.setProperties(asysProperties); - asysCore.start(); + return properties; } }