본문 바로가기

Programming/Java

maven - set properties file content from command line

1. enable filtering of resources like below 

(아래와 같이 resource filtering 을 활성화 시킨다)


       <resources>

            <resource>

                <directory>src/main/resources</directory>

                <filtering>true</filtering>

            </resource>

        </resources>  




2. then, declare a place holder in your src/main/resources/my.properties, like below.

(properties 파일에 대입할 변수를 아래와 같이, 선언한다 => ${db.server.ip})


 prop1 = blah

 prop2 = ${db.server.ip}



3. declare properties and it's value in a profile.

(maven 의 설정파일인 pom.xml 에 아래와 같이 properties 파일에 대한 변수와 값을 설정한다.)


    <profiles>    

        <profile>

            <id>db-config</id>

            <activation>

                <property>

                    <name>db</name>

                    <value>config</value>

                </property>

            </activation>

            <properties>

                <db.server.ip>192.168.100.111</db.server.ip>

            </properties>

        </profile>

    </profiles>


4. run maven with option like below

(아래와 같이 maven process-resources phase 를 db=config 옵션과 같이 실행한다.)


$ mvn process-resource -Ddb=config 




5. And more, we can even set ip address (i.e. 192.168.100.111) <db.server.ip>192.168.100.111</db.server.ip> to other one like below.

(그리고, 더 나아가서 command line 으로 pom.xml 파일에 있는 변수에 대한 값을 아래와 같이 설정할 수 있다.)


 $ mvn package -Dbb.server.ip=192.168.1.1


Because, maven phase package is later than process-resources.

(왜냐하면, maven 에서 package phase 는 process-resources phase 보다 나중에 실행되기 때문이다.)