[java] Maven 속성 다루기

Maven은 프로젝트 빌드 및 관리를 위한 강력한 도구입니다. Maven을 사용하면 프로젝트의 여러 측면을 구성할 수 있는데, 이 중에서도 속성(Properties)를 다루는 것은 매우 중요합니다. 속성은 프로젝트의 여러 부분에서 사용되는 값들을 저장하고, 사용하기 쉽게 만들어줍니다.

이 블로그 포스트에서는 Maven 속성의 기본 사용법부터 고급 기능까지 알아보겠습니다.

기본적인 속성 선언

Maven 속성은 pom.xml 파일에 선언됩니다. 다음은 간단한 속성의 선언 예시입니다.

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

위 예시에서 속성은 <properties> 태그 안에 선언되며, 각 속성은 <속성명>값</속성명> 형식으로 정의됩니다.

속성 값 사용하기

선언된 속성 값을 사용할 때에는 ${속성명} 형식으로 사용합니다.

<sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>

외부 파일에서 속성 로드하기

가끔은 속성을 pom.xml에 직접 선언하는 것이 아니라, 외부 파일에서 로드하여 사용하는 경우가 있습니다.

<build>
    <filters>
        <filter>config.properties</filter>
    </filters>
</build>

config.properties 파일에는 다음과 같이 속성을 정의합니다.

db.url=jdbc:mysql://localhost:3306/mydb
db.username=myusername
db.password=mypassword

프로파일을 활용한 속성 설정

Maven은 프로파일(Profile) 기능을 제공하여 특정 환경에서만 적용되는 속성을 설정할 수 있습니다. 예를 들어, 개발 환경과 운영 환경에서는 서로 다른 데이터베이스 연결 설정이 필요할 때 프로파일을 사용할 수 있습니다.

<profiles>
    <profile>
        <id>development</id>
        <properties>
            <db.url>jdbc:mysql://localhost:3306/devdb</db.url>
            <db.username>devuser</db.username>
            <db.password>devpassword</db.password>
        </properties>
    </profile>
    <profile>
        <id>production</id>
        <properties>
            <db.url>jdbc:mysql://localhost:3306/proddb</db.url>
            <db.username>produser</db.username>
            <db.password>prodpassword</db.password>
        </properties>
    </profile>
</profiles>

결론

Maven을 사용하여 프로젝트를 빌드하고 관리할 때 속성을 적절히 활용하는 것은 매우 중요합니다. 속성을 올바르게 선언하고 활용하여 프로젝트를 효율적으로 구성하는 것은 좋은 개발 실천법이 될 것입니다.

위에서 설명한 내용 외에도 Maven 속성에 대해 더 많은 기능과 사용법이 있으니, 공식 Maven 문서를 참고하여 더 많은 정보를 얻을 수 있습니다.