복붙노트

[SPRING] Spring 설정 파일에서 maven 프로젝트 버전에 접근하기

SPRING

Spring 설정 파일에서 maven 프로젝트 버전에 접근하기

페이지에서 현재 실행중인 웹 응용 프로그램 버전을 표시하고 싶습니다. 이 프로젝트는 Maven, Spring 및 Wicket을 기반으로합니다.

어떻게 든 maven의 $ {project.version}의 가치를 얻고 스프링 XML 파일에서 사용하고 싶습니다. Spring PropertyPlaceholderConfigurer를 사용하여 응용 프로그램에서 사용하는 설정에 대한 속성 파일을 읽는 방법과 비슷합니다.

Spring의 config에서 변수로 사용할 수있는 maven project.version이 있다면 다음과 같이 할 수 있습니다.

<bean id="applicationBean" class="com.mysite.web.WicketApplication">
<property name="version"><value>${project.version}</value></property>
</bean>

어떻게해야합니까?

해결법

  1. ==============================

    1.이미 제안 된대로 Maven 필터링을 사용할 수 있습니다.

    이미 제안 된대로 Maven 필터링을 사용할 수 있습니다.

    아니면 Maven이 만든 META-INF 디렉토리에서 Spring으로 직접 만든 pom.properties 파일을 읽을 수도있다.

    <util:properties id="pom" 
         location="classpath:META-INF/groupId/artifactId/pom.properties" />
    

    빈을 사용하십시오.

    나중의 접근 방식의 유일한 단점은 패키지 단계에서 pom.properties가 생성된다는 것입니다 (테스트 중에는 존재하지 않습니다).

  2. ==============================

    2.한 기술은 mavens 필터링을 사용하는 것입니다. 자리 표시자를 리소스 파일에 삽입하여 리소스 단계에서 빌드의 값으로 대체 할 수 있습니다.

    한 기술은 mavens 필터링을 사용하는 것입니다. 자리 표시자를 리소스 파일에 삽입하여 리소스 단계에서 빌드의 값으로 대체 할 수 있습니다.

    "리소스 파일을 어떻게 필터링합니까?" Maven 시작하기 가이드

  3. ==============================

    3.@PropertySource 주석을 사용하여 Maven에서 만든 pom.properties 파일을 META-INF 디렉토리에 추가합니다. 패키지 단계 이전에는 파일이 존재하지 않습니다. 테스트하는 동안 오류를 방지하려면 ignoreResourceNotFound = true를 설정하고 읽을 속성에 기본값을 추가하십시오 (예 : 아래에 없음).

    @PropertySource 주석을 사용하여 Maven에서 만든 pom.properties 파일을 META-INF 디렉토리에 추가합니다. 패키지 단계 이전에는 파일이 존재하지 않습니다. 테스트하는 동안 오류를 방지하려면 ignoreResourceNotFound = true를 설정하고 읽을 속성에 기본값을 추가하십시오 (예 : 아래에 없음).

    @Service
    @PropertySource(value = "classpath:META-INF/maven/io.pivotal.poc.tzolov/hawq-rest-server/pom.properties", ignoreResourceNotFound=true)
    public class MyClass {
        private String applicationPomVersion;
    
        @Autowired
        public MyClass(@Value("${version:none}") String applicationVersion ) {
            this.applicationPomVersion = applicationVersion;
        }
    
        public String getApplicationPomVersion() {
            return this.applicationPomVersion;
        }
    }
    
  4. ==============================

    4.우리는 웹 애플리케이션 외부에 특성 파일을 배치합니다. 그런 다음 파일을 배포 할 때 필터링 할 수 있습니다.

    우리는 웹 애플리케이션 외부에 특성 파일을 배치합니다. 그런 다음 파일을 배포 할 때 필터링 할 수 있습니다.

    Jetty를 사용하는 경우 파일을 $ JETTY_HOME / resources 아래에 두거나 extraClassPath 기능을 사용하여 런타임에 속성 파일을로드 할 수 있습니다.

  5. ==============================

    5.응용 프로그램 버전을 모으는 올바른 방법은이 스레드에서 설명한 것입니다 : https://stackoverflow.com/a/2713013/840635 getClass (). getPackage (). getImplementationVersion ().

    응용 프로그램 버전을 모으는 올바른 방법은이 스레드에서 설명한 것입니다 : https://stackoverflow.com/a/2713013/840635 getClass (). getPackage (). getImplementationVersion ().

  6. from https://stackoverflow.com/questions/3886753/access-maven-project-version-in-spring-config-files by cc-by-sa and MIT license