header

Configuration with Apache Commons

The Commons Configuration software library provides a generic configuration interface which enables a Java application to read configuration data from a variety of sources. Go here for more information: Apache Commons. In this post I will show you how to read a properties file using Apache commons. First we need to create a Java basic project and a cool way to do it is with: lazybones.

lazybones create java-basic properties-apache-commons

Previous command will create this structure

<proj>
      |
      +- src
          |
          +- main
          |     |
          |     +- java
          |
          +- test
          |   |
          |   +- java

Edit your build.gradle file to create a make a Jar task and add Apache commons dependencies.

apply plugin: "java"
apply plugin: "application"

version = '0.0.1'

task buildJar(type: Jar) {
  manifest {
    attributes 'Implementation-Title': 'Reading properties files with Apache Configuration',
    'Implementation-Version': version,
    'Main-Class': 'example.ConfigurationLauncher'
  }
  baseName = project.name + '-all'
  from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
  with jar
}

repositories {
  mavenCentral()
}

dependencies {
  compile 'org.apache.commons:commons-configuration2:2.4'
  compile 'commons-beanutils:commons-beanutils:1.9.3'
}

Then define Java classes under project-dir/src/main/java/example/

The easiest way to read configuration is via the Configurations helper class. This class offers a bunch of convenience methods for creating configuration objects from different sources. For reading a properties file the code looks as follows:

ConfigurationLauncher.java

package example;

import java.io.File;

import org.apache.commons.configuration2.Configuration;
import org.apache.commons.configuration2.builder.fluent.Configurations;
import org.apache.commons.configuration2.ex.ConfigurationException;

public class ConfigurationLauncher {

  private void readProperties(){
    Configurations configurations = new Configurations();
    try{
      Configuration configuration = configurations.properties(new File("configuration.properties"));
      String username = configuration.getString("username");
      String password = configuration.getString("password");
      System.out.println("{username:" + username + ",password:"+ password + "}");
    } catch (ConfigurationException cex) {
      System.out.println("Error: " + cex.getMessage());
    }
  }

  public static void main(String[] args){
    new ConfigurationLauncher().readProperties();
  }

}

Configuration information is frequently stored in a properties file. Consider the following simple file that defines some properties related to storing user’s credentials.

username=josdem
password=12345678

That’s it configurations.properties will read our configuration.properties file from the class path.

To build the project type:

gradle buildJar

To run the project go to <Project>/build/libs and type:

java -jar properties-apache-commons-all-0.0.1.jar

To download the code:

git clone https://github.com/josdem/java-topics.git
cd properties-apache-commons

Return to the main article

comments powered by Disqus