2015-06-27 3 views
-3

Я использую Spring, Logback и maven. Я хотел бы поместить все мои настройки в свойства, которые будут за пределами jar, которые я строю с maven. Итак, я переместил все настройки из Logback.xml. Теперь она выглядит следующим образом:Spring and maven как разместить файл свойств за пределами jar?

<configuration> 

    <property resource="application.properties" /> 

    <timestamp key="byDate" datePattern="yyyyMMdd"/> 

    <!-- Send messages to System.out - CONSOLE --> 
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
     <!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder by default --> 
     <encoder> 
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern> 
     </encoder> 
     <withJansi>true</withJansi> 
    </appender> 

    <!-- Send messages to a file --> 
    <appender name="FILE" class="ch.qos.logback.core.FileAppender"> 
     <file>${logging.path}/${spring.application.name}-${byDate}.log</file> 
     <append>true</append> 
     <!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder by default --> 
     <encoder> 
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern> 
     </encoder> 
    </appender> 

    <root level="${logging.level}"> 
     <appender-ref ref="STDOUT" /> 
     <appender-ref ref="FILE" /> 
    </root> 

</configuration> 

Мой application.properties файл:

#Spring settings 
spring.application.name=MyApp 
server.port=8087 

# Logging settings 
logging.level=INFO 
logging.path=/Users/...some path.../logs/ 

Я поставил это боб:

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
     <property name="location" value="file:application.properties"/> 
    </bean> 

И исключены application.properties из мавена строить с плагином:

<plugin> 
       <artifactId>maven-antrun-plugin</artifactId> 
       <executions> 
        <execution> 
         <phase>validate</phase> 
         <goals> 
          <goal>run</goal> 
         </goals> 
         <configuration> 
          <tasks> 
           <copy todir="target" overwrite="true"> 
            <fileset dir="src/main/resources/"> 
             <include name="*.properties"/> 
            </fileset> 
           </copy> 
          </tasks> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 

Но это не работает для меня. Имя файла журнала потеряно datePattern и ничего, что я изменил в файле свойств, не изменяется. Что не так? Пожалуйста.

ОБНОВЛЕНИЕ: ошибок не имеется. Все работает нормально. И я могу изменить все настройки при запуске в среде IDE. Поэтому я считаю, что я делаю что-то неправильно с maven build.

+0

В моем случае, нет никаких ошибок. Все работает нормально. И я могу изменить все настройки при запуске в среде IDE. Поэтому я считаю, что я делаю что-то неправильно с maven build. – user3742622

+1

«Всё отлично работает». «Так в чем ваш вопрос? –

+0

«Все работает нормально». - в среде IDE, только в среде IDE. У меня возникли проблемы после того, как я построил банку с Maven. – user3742622

ответ

1

В вашем плагине для maven Antrun вы делаете копию application.properties, а не хода, так что всегда есть копия application.properties в вашей банке! Попробуйте использовать Maven стандартной конфигурации баночки плагина, чтобы исключить файл свойств:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <version>2.6</version> 
    <configuration> 
     <excludes> 
     <exclude>path/to/application.properties</exclude> 
     </excludes> 
    </configuration> 
    </plugin> 

И убедитесь, что исключенный файл находится в приложении при выполнении классов

+0

Спасибо за помощь! Все это сложно для новичков. Я только что попробовал. В результате: logging.path читает из моего файла, но я потерял дату в имени файла журнала (теперь это просто spring.log) и logging.level тоже не работает. – user3742622

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