2015-09-29 6 views
3

Я использую плагин maven-spring-boot для создания банки. У меня есть несколько файлов ресурсов с конфигурацией (application-production.yml, application-test.yml, application-development.yml).Как исключить файл ресурсов из весеннего ботинка?

Вещь, когда я генерирую выпуск для наших клиентов, я хотел бы исключить файлы разработки и тестирования. Можно ли исключить файл ресурсов в плагин maven-spring-boot?

Я попытался это:

 <build> 
      <resources> 
       <resource> 
        <directory>src/main/resources</directory> 
        <excludes> 
         <exclude>application-dev*</exclude> 
         <exclude>application-test*</exclude> 
        </excludes> 
       </resource> 
      </resources> 
     </build> 

но Maven плагин использует свои собственные сценарии для управления ресурсами (например, @ Вал @ замены и т.д.), и он не в процессе упаковки, если она добавляется в П:

Caused by: org.yaml.snakeyaml.scanner.ScannerException: while scanning for the next token 
found character @ '@' that cannot start any token. (Do not use @ for indentation) 
in 'reader', line 4, column 18: 
    project.version: @[email protected] 

без этого он работает нормально.

+0

Почему вы хотите их исключить? Это потому, что вы не хотите, чтобы они могли видеть эти файлы, потому что они вызывают ошибки? Весенняя загрузка поддерживает несколько файлов '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' по умолчанию, так что это не проблема. – g00glen00b

+0

Да, я не хочу, чтобы каждый релиз удалял файлы, которые не должны быть видимыми для клиента (пароль для test/dev db и т. Д.). Другой вариант - запустить весеннюю загрузочную банку с параметрами и, таким образом, установить все требуемые значения, но не определенно удобно. – Mejmo

+1

Вы также можете иметь внешний файл 'application.properties' (в той же папке, что и ваше приложение JAR/WAR). – g00glen00b

ответ

5

Вместо того, чтобы использовать плагин Maven-пружинно-загрузочные использовать плагин Maven-ресурс и Maven профили:

<profiles> 
    <profile> 
    <id>prod</id> 
    <build> 
     <resources> 
     <resource> 
      <filtering>true</filtering> 
      <directory>[your directory]</directory> 
      <excludes> 
      <exclude>[non-resource file #1]</exclude> 
      <exclude>[non-resource file #2]</exclude> 
      <exclude>[non-resource file #3]</exclude> 
      ... 
      <exclude>[non-resource file #n]</exclude> 
      </excludes> 
     </resource> 
     </resources> 
    </build> 
    </profile> 
</profiles> 

Убедитесь, что вы указали <filtering>true</filtering> параметр внутри элемента ресурса.

Создайте один профиль для каждой среды и отфильтруйте эти файлы.

Убедитесь, что выполнить Maven с соответствующим профилем:

mvn clean install -P prod 

Чтобы просмотреть больше примеров плагин Maven-ресурсов взглянуть на maven-resource

Если вы хотите узнать больше о профилях, возьмите Посмотрите на profiles

+0

Плагин maven-resource не использует редактирование значений свойств на месте. Вот почему вы не можете использовать @ project.version @ в своих файлах свойств. – Mejmo

+0

Убедитесь, что вы указали ' true' – jfcorugedo

+0

Спасибо за это. Наконец я вернулся к этой теме, и действительно, ты решил это ... Отлично! – Mejmo

0

Использование maven-resources-plugin, поддержка не включает тег.

Кстати, зачем вам использовать три файла yaml? вы можете написать эту конфигурацию в одном файле application.yaml с «---» и spring.profiles, например:

memcached.addresses: test03:11211 
spring.profiles.active: dev 
--- 
# dev 
spring: 
    profiles: dev 
logging.access.enabled: false 
--- 
# test 
spring: 
    profiles: test 
logging.config: classpath:log4j.test.properties 
logging.access.dir: /home/shared/log 
--- 
# online 
spring: 
    profiles: online 
logging.config: classpath:log4j.online.properties 
logging.access.dir: /home/shared/log 
+0

Spring boot также поддерживает множество файлов '.mys' -файлов {.}. – g00glen00b

+0

maven-resource-plugin не поддерживает замену @ value @ tags на месте. загрузочный плагин делает все, что – Mejmo

Смежные вопросы