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.war
및 artifact-VERSION-prod.war
이라는 아티팩트가 생성됩니다. 그걸 더 자세히 들여다 보면 blog article 위는 훨씬 더 우아해질 수 있습니다.