2016-09-21 4 views
0

다음과 같은 속성이 포함 된 logback.properties 파일이 있습니다. 내 POM 파일 내부속성 파일에서 POM 프로젝트 이름에 액세스하는 방법

#logging 
logging.server= 
logging.port= 
logging.path=/opt/${project.name}/logs 

나는 프로젝트 이름을 지정하는 <name> 태그를 가지고있다. 위의 lockback과 같은 몇 가지 속성 파일에이 이름을 삽입하고 싶습니다. 위의 작업을 수행하면 project.name_IS_UNDEFINED이라는 폴더가 만들어집니다. 프로젝트 이름과 방법에 액세스 할 수 있습니까?

는 UPDATE 랄프는 %project.name% 대신 ${project.name}을 이용해야하기 때문에 봄 부팅 애플리케이션을 위해, 그러나 내 의견을 확인, 정확한 답을 준!

+0

가능한 중복 http://stackoverflow.com/questions/4107222/can-i-inject-properties-from-maven-passwords-defined-in-settings-xml-into-my-s –

+0

@ A_Di-Matteo 아닙니다. –

답변

1

당신은 런타임에 응용 프로그램에 컴파일 시간을 스크립트를 받는다는에 정의 된 속성을 전송해야합니다.

가장 쉬운 방법은 당신이 logback에서 받는다는가 ${project.name}을 대체하게하기 위해 (이 속성은 텍스트/리소스 파일 교체, 그것은 파일을 선택하는 필터 아닌, 이름이 좀 오해의 소지가) maven's resource filtering 사용하는 것입니다 .properties 파일. 그런 다음 당신이 사용할 수있는 다른 마커를 대체로부터 받는다는 것을 방지하기 위해 다른 사람을 위해 단지 하나 개의 파일에 대한 리소스 필터링을 가능하게 (그리고 원하는 경우

사실 $ {BASEDIR}/SRC/메인/자원

미리보기 :의

<resources> 
    <!-- enable filtering for logback.properties only --> 
    <resource> 
     <filtering>false</filtering> 
     <directory>${basedir}/src/main/resources</directory> 
     <includes> 
      <include>**/*</include> 
     </includes> 
     <excludes> 
      <exclude>WHEREVER_LOCATED/logback.properties</exclude> 
     </excludes> 
    </resource> 
    <resource> 
     <filtering>true</filtering> 
     <directory>${basedir}/src/main/resources</directory> 
     <includes> 
      <include>WHEREVER_LOCATED/logback.properties</include> 
     </includes> 
    </resource> 
</resources> 
+0

감사합니다. Ralph. 내가 잘못했기 때문에 답이 나를 도왔습니다. 필터링 :). 그러나 스프링 부트 응용 프로그램을 작성하고 있기 때문에 문제가 완전히 해결되지 않았습니다. 대신 % project.name %를 사용했습니다. 여기를 참고하십시오 http://stackoverflow.com/questions/36501017/maven-resource-filtering-not-working-because-of-spring-boot-dependency. –

관련 문제