2015-06-27 82 views
-3

我使用Spring,Logback和maven。我想把我所有的設置都放在我用maven構建的jar外面的屬性中。 所以我從Logback.xml中移動了所有設置。現在,它看起來像:春天和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構建中做了一些錯誤。

+0

在我的情況下,當排除的文件是在您的應用程序類路徑,沒有錯誤。一切正常。我可以在IDE中運行來更改所有設置。所以我相信我在maven構建中做了一些錯誤。 – user3742622

+1

「_一切工作正常。」那麼你的問題是什麼? –

+0

「一切正常。」 - 在IDE中,僅在IDE中。在使用Maven構建jar之後,我遇到了問題。 – user3742622

回答

1

在你的maven antrun插件中,你正在做一個application.properties的副本,而不是一個移動,所以你的jar中一直存在一個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