2014-03-31 1 views
0

maven 어셈블리 플러그인을 사용하여 환경 테스트 및 생산을 위해 내부에 특성 (test1.properties 및 test2.properties)을 사용하여 difrent jar (test-properties.jar 및 prod-properties.jar)를 빌드합니다. 이제 propertyie 파일 (test1.properties 및 test2.properties)을 Java 파일 (Test1.java 및 Test2.java)로 바꾼다. 컴파일하고 어셈블리 플러그인을 다시 실행한다. 그래서 클래스 안에있는 두 개의 jar 파일을 가지고 있으며 다양한 환경에서 작동합니다.클래스 또는 텍스트 파일에서 Java 빌드 환경 구성?

-> 시험 properties.jar (Test1.class, Test2.class)

-> 자극-properties.jar (Test1.class, Test2.class)

제가 에 웹 애플리케이션을 구축하면 Produktion, 그러면 배포를 위해 prod-properties.jar를 사용합니다. 로컬 작업 공간의 경우 test-properties.jar을 사용하십시오.

내 질문 : 속성 파일 또는 Java 클래스 내부의 환경 속성을 사용하는 것이 더 좋습니까? (성능? 그나마이 FileInputStream에 필요 ... 나쁜 코드 스타일?)

자원에 내장 한 답변 :

답변

0
내가 속성 파일을 사용하는 것이 좋습니다 것

는, Java 클래스는 환경과 받는다는 간의 일정하게 유지해야 주셔서 감사합니다 필터링. 내가 지금 일하고 멀티 모듈 프로젝트에서

나는 프로파일/환경에 따라 동적으로 설정되는 속성 파일이 내가 사용

동적 특성 포인트를위한 등록 URL 내 프로젝트이며 환경에 따라 다릅니다.

REGISTRATION_URL=${REGISTRATION_URL} 

나는 다음 받는다는 프로필에 등록 URL을 지정할 수 있습니다 : 그것은 속성에 정의 된 다음과 같은 것이 같은 파일을 여기에서

<profile> 
    <id>test-environment</id> 
    <activation> 
     <property> 
      <name>environment</name> 
      <value>test</value> 
     </property> 
    </activation> 
    <properties> 
     <REGISTRATION_URL>http://test-env/register</REGISTRATION_URL> 
    </properties> 
</profile> 

을,이 프로필 특정 속성을 적용하는 방법에는 두 가지가 있습니다 :

  1. 은 등록 정보 파일을 포함하는 모듈의 POM의 빌드 섹션에서 자원 필터링을 적용

    <resources> 
        <resource> 
         <directory>src/main/resources</directory> 
         <filtering>true</filtering> 
        </resource> 
    </resources> 
    
  2. 어셈블리 내의 moduleSet 또는 fileSet 내에 리소스 필터링을 지정하십시오.

    REGISTRATION_URL=http://test-env/register 
    
    : 프로젝트가 (-P 테스트 환경)이 프로필을 사용하여 빌드 할 때

    <moduleSet> 
        <useAllReactorProjects>true</useAllReactorProjects> 
        <includes> 
         <include>${project.groupId}:core-module</include> 
        </includes> 
        <sources> 
         <fileSets> 
          <fileSet> 
           <directory>src/main/resources/META-INF</directory> 
           <outputDirectory>conf</outputDirectory> 
           <includes> 
            <include>environment.properties</include> 
           </includes> 
           <filtered>true</filtered> 
          </fileSet> 
         </fileSets> 
         <includeModuleDirectory>false</includeModuleDirectory> 
        </sources> 
    </moduleSet> 
    

가 environment.properties 위의 속성을 다음과 같이 설정됩니다 : 내 경우에는 내가 moduleSet 사용