2016-04-07 3 views
1

Я пытаюсь реализовать функцию соответствия шаблону конфигурации весеннего облака на основе различных профилей для приложения. На основе документации в http://cloud.spring.io/spring-cloud-config/spring-cloud-config.html#_environment_repository можно сопоставить репозитории на основе профилей. Ниже мой конфигурации сервера application.ymlсопоставление шаблонов весеннего облака для профиля

server: 
    port: 8888 
spring: 
    cloud: 
    config: 
     server: 
     git: 
      uri: ssh://[email protected]/sample/cloud-config-properties.git 
      repos: 
      development: 
      pattern: 
       -*/development  
       -*/staging 
      uri: ssh://[email protected]/development.git 
      test: 
      pattern: 
       -*/test 
       -*/perf 
      uri: ${HOME}/Documents/cloud-config-sample-test 

У меня есть клиентское приложение конфигурации «пользователь» и есть user.properties, user-development.properties, user-test.properties

На основе документации - независимо от имени приложения, если шаблон соответствует */development i, e localhost: 8888/user/development или localhost: 8888/demo/development, мой конфигурационный сервер должен соответствовать шаблону профиля и извлекать соответствующие свойства. Ex: http://localhost:8888/demo/development я должен получить demo-development.properties от SSH: //[email protected]/development.git

Но в моем приложении, Ури по умолчанию используется для всех профилей, то есть мой файл свойство демку .properties возвращается с uri: ssh: //[email protected]/sample/cloud-config-properties.git

Любые указатели на это?

EDIT: pom.xml

<parent> 
     <groupId>org.springframework.cloud</groupId> 
     <artifactId>spring-cloud-starter-parent</artifactId> 
     <version>Brixton.M5</version> 
     <relativePath /> 
    </parent> 
    <dependencies> 
     <dependency> 
      <groupId>org.springframework.cloud</groupId> 
      <artifactId>spring-cloud-config-server</artifactId> 
     </dependency> 
<dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.cloud</groupId> 
      <artifactId>spring-cloud-config-monitor</artifactId> 
     </dependency> 
<dependency> 
      <groupId>org.springframework.cloud</groupId> 
      <artifactId>spring-cloud-starter-bus-amqp</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-security</artifactId> 
     </dependency> 
    </dependencies> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 
<repositories> 
     <repository> 
      <id>spring-snapshots</id> 
      <name>Spring Snapshots</name> 
      <url>http://repo.spring.io/libs-snapshot-local</url> 
      <snapshots> 
       <enabled>true</enabled> 
      </snapshots> 
     </repository> 
     <repository> 
      <id>spring-snapshots-continuous</id> 
      <name>Spring Snapshots Continuous</name> 
      <url>http://repo.spring.io/libs-snapshot-continuous-local</url> 
      <snapshots> 
       <enabled>true</enabled> 
      </snapshots> 
     </repository> 
     <repository> 
      <id>spring-milestones</id> 
      <name>Spring Milestones</name> 
      <url>http://repo.spring.io/libs-milestone-local</url> 
      <snapshots> 
       <enabled>false</enabled> 
      </snapshots> 
     </repository> 
     <repository> 
      <id>spring-releases</id> 
      <name>Spring Releases</name> 
      <url>http://repo.spring.io/libs-release-local</url> 
      <snapshots> 
       <enabled>false</enabled> 
      </snapshots> 
     </repository> 
    </repositories> 
    <pluginRepositories> 
     <pluginRepository> 
      <id>spring-snapshots</id> 
      <name>Spring Snapshots</name> 
      <url>http://repo.spring.io/libs-snapshot-local</url> 
      <snapshots> 
       <enabled>true</enabled> 
      </snapshots> 
     </pluginRepository> 
     <pluginRepository> 
      <id>spring-milestones</id> 
      <name>Spring Milestones</name> 
      <url>http://repo.spring.io/libs-milestone-local</url> 
      <snapshots> 
       <enabled>false</enabled> 
      </snapshots> 
     </pluginRepository> 
    </pluginRepositories> 
+0

Какая версия вы используете? – spencergibb

+0

Brixton.M5 pom.xml: \t org.springframework.cloud \t весна-облако стартер-родитель \t Brixton.M5 \t \t

ответ

1

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

application.yml 
server: 
    port: 8888 
spring: 
    cloud: 
    config: 
     server: 
     git: 
      uri: ssh://[email protected]/sample/cloud-config-properties.git 
      repos: 
      development: 
      pattern: '*/development' ## give in quotes 
      uri: ssh://[email protected]/development.git 

ИЛИ

development: 
    pattern: xx*/development,*/development ##since it is not allowed to have a value starting with a wildcard('*')after pattern I first gave a generic matching but the second value is */development. Since pattern takes multiple values, the second pattern will match with the profile 
    uri: ssh://[email protected]/development.git 

схема: */development.Error на YML Файл- ожидается, алфавитный или цифровой символ, но обнаружила, но обнаружила /.

Причина, по которой шаблон профиля git repo не был идентифицирован, потому что: хотя весна допускает несколько значений массива для шаблона, начинающегося с символа '-' в файле yml, совпадение шаблонов принимало строку «-» в качестве строки. то есть ищет шаблон '-*/development' вместо '*/development'.

repos: 
    development: 
    pattern: 
     -*/development  
     -*/staging 

Другой вопрос, я наблюдал было, я получаю ошибку компиляции на YML файл, если я должен был упомянуть массив шаблон, как '- */development' - примечание пространство после дефиса (который предназначен, чтобы показать, что он может содержать несколько значений, как массив) и начинать с «*/development» с ошибкой: ожидаемый буквенный или цифровой символ, но найденный, но найденный/

repos: 
     development: 
     pattern: 
      - */development  
      - */staging 
+0

Да, извините, я не видел этого раньше.Это проблема YML, строки, начинающиеся с '*', должны быть окружены '' '. – spencergibb