Передача spring.config.location в задачу bootRun

Сделайте три разных соответствия и обработайте комбинацию трех ситуаций, используя условную логику в программе. Вам не нужно обрабатывать все в одном гигантском регулярном выражении.

EDIT: позвольте мне немного расшириться, потому что вопрос просто стал более интересным: -)

Общая идея, которую вы пытаетесь для захвата здесь следует сопоставлять определенный шаблон регулярного выражения, но не тогда, когда в тестовой строке присутствуют некоторые другие (могут быть любые числа) шаблоны. К счастью, вы можете использовать свой язык программирования: просто сохраняйте регулярные выражения и просто используйте составной условный. Лучшей практикой было бы захватить эту идею в многократно используемом компоненте, поэтому давайте создадим класс и метод, которые его реализуют:

using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

public class MatcherWithExceptions {
  private string m_searchStr;
  private Regex m_searchRegex;
  private IEnumerable<Regex> m_exceptionRegexes;

  public string SearchString {
    get { return m_searchStr; }
    set {
      m_searchStr = value;
      m_searchRegex = new Regex(value);
    }
  }

  public string[] ExceptionStrings {
    set { m_exceptionRegexes = from es in value select new Regex(es); }
  }

  public bool IsMatch(string testStr) {
    return (
      m_searchRegex.IsMatch(testStr)
      && !m_exceptionRegexes.Any(er => er.IsMatch(testStr))
    );
  }
}

public class App {
  public static void Main() {
    var mwe = new MatcherWithExceptions();

    // Set up the matcher object.
    mwe.SearchString = @"\b\d{5}\b";
    mwe.ExceptionStrings = new string[] {
      @"\.$"
    , @"\(.*" + mwe.SearchString + @".*\)"
    , @"if\(.*" + mwe.SearchString + @".*//endif"
    };

    var testStrs = new string[] {
      "1." // False
    , "11111." // False
    , "(11111)" // False
    , "if(11111//endif" // False
    , "if(11111" // True
    , "11111" // True
    };

    // Perform the tests.
    foreach (var ts in testStrs) {
      System.Console.WriteLine(mwe.IsMatch(ts));
    }
  }
}

Итак, мы установили строку поиска (пять цифр) , несколько строк исключения (ваши s1, s2 и s3), а затем попытайтесь сопоставить несколько тестовых строк. Печатные результаты должны быть такими, как показано в комментариях рядом с каждой тестовой строкой.

0
задан Carol Han 16 January 2019 в 18:11
поделиться

1 ответ

systemProperties используются для передачи свойств, которые вы обычно передаете с -D, во время выполнения.

jvmArgs предназначены для передачи аргументов в JVM.

То, что вы хотите использовать, это args вместо одного из вышеперечисленных.

bootRun {
  args = [
    '--spring.config.additional-location=file:C:/demo_class_path/',
    '--server.port=8090'
    ]
}

Важно включить / в конце для spring.config.additional-location. Когда он не заканчивается на /, он интерпретируется как базовое имя файла, а не местоположение файла.

0
ответ дан M. Deinum 16 January 2019 в 18:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: