2014-06-13 2 views
0

취한 예 : jhipster-sample-app 다른 구성을 가진 여러 컴퓨터에 동일한 응용 프로그램이 설치된다면 여러 프로필을 어떻게 관리 할 수 ​​있습니까?Jhipster에서 여러 프로필을 관리하는 방법

배포는 아파치 톰캣을 사용하여 이루어집니다, 그리고 하나 이상의 jhipster 기반 응용 프로그램을 실행 할 수 있기 때문에, 내가 사용하지 싶습니다

-Dspring.profiles.active = MY_PROFILE

은 JAVA_OPTS 변수에 있습니다.

동일한 tomcat 인스턴스에서 다른 프로필을 사용하여 동일한 응용 프로그램을 실행할 수도 있습니다.

답변

3

dev, test, prod와 같은 다양한 환경을 지원하는 응용 프로그램 구성 프로파일을 얻는 것은 좋지 않은 아이디어입니다. dev, test, prod와 같은 세 개의 프로파일로 간단하게 만들었다 고 가정 해 보겠습니다. 그래서 지금 당신은이 같은 dev 환경 구축 : 좋아

mvn -Pdev clean package 

지금 당신은 당신의 유물을하고 배포 할 수 있습니다. 다음 번에 테스트 환경이 필요하면 다음과 같이해야합니다.

mvn -Ptest clean package 

유물을 가져와 배포 할 수 있습니다. 그러나 두 가지 환경 또는 세 가지 환경을 만들려는 경우 어떻게됩니까?

mvn -Pdev,test,prod clean package 

이것은 (불가능와 같은 지역에서) 정말 까다로운 원인 일반적으로 실패합니다 세 가지 유물을 생산하기 위해 다른 프로파일을 처리 할 수 ​​있습니다.

mvn clean package 

당신이 테스트 dev에 하나, 하나는 자극에 대한 하나의 필요한 모든 패키지를 : 그래서 가장 좋은 방법은 바로하여 빌드 농산물을 프로파일을 제거하도록하는 것입니다.

One solution

이 같은 프로젝트 구조를 만드는 것입니다 :

. 
|-- pom.xml 
`-- src 
    |-- main 
    | |-- java 
    | |-- resources 
    | |-- environment 
    | | |-- test 
    | | | `-- database.properties 
    | | |-- qa 
    | | | `-- database.properties 
    | | `-- production 
    | |  `-- database.properties 
    | `-- webapp 

서로 다른 폴더와 속성 파일이 장소 홀더 그냥 경로를 보여주고 있습니다.

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> 

    <id>test</id> 
    <formats> 
    <format>war</format> 
    </formats> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <dependencySets> 
    <dependencySet> 
     <unpack>true</unpack> 
     <useProjectArtifact>true</useProjectArtifact> 
    </dependencySet> 
    </dependencySets> 
    <fileSets> 
    <fileSet> 
     <outputDirectory>WEB-INF</outputDirectory> 
     <directory>${basedir}/src/main/environment/test/</directory> 
     <includes> 
     <include>**</include> 
     </includes> 
    </fileSet> 
    </fileSets> 
</assembly> 

그리고 마지막으로이 같은 받는다는 - 조립 플러그인 구성해야합니다 : 결국이에서

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <executions> 
    <execution> 
     <id>test</id> 
     <phase>package</phase> 
     <goals> 
     <goal>single</goal> 
     </goals> 
     <configuration> 
     <descriptors> 
      <descriptor>${project.basedir}/src/main/assembly/test.xml</descriptor> 
     </descriptors> 
     </configuration> 
    </execution> 
    <execution> 
     <id>qa</id> 
     <phase>package</phase> 
     <goals> 
     <goal>single</goal> 
     </goals> 
     <configuration> 
     <descriptors> 
      <descriptor>${project.basedir}/src/main/assembly/qa.xml</descriptor> 
     </descriptors> 
     </configuration> 
    </execution> 
    <execution> 
     <id>production</id> 
     <phase>package</phase> 
     <goals> 
     <goal>single</goal> 
     </goals> 
     <configuration> 
     <descriptors> 
      <descriptor>${project.basedir}/src/main/assembly/production.xml</descriptor> 
     </descriptors> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

을 다음은이 같은 각 환경에 대한 assembly-descriptor 하나가 필요합니다 Maven을 한 번 호출하면 artifact-VERSION-dev.war, artifact-VERSION-test.warartifact-VERSION-prod.war이라는 아티팩트가 생성됩니다. 그걸 더 자세히 들여다 보면 blog article 위는 훨씬 더 우아해질 수 있습니다.