Skip to content
Advertisement

How to make a parameter override while running a Java jar file?

I have a Java maven project whose Jar file is used as a SDK library in other projects. This SDK is used to call other APIs which are by default in the prod environment. I want to make it run on testing environment by overriding a variable.

public class Routes {

    public Map<String, String> routes;
    private static String _baseUrl = "https://production-env.com";

    @SuppressWarnings("serial")
    public Routes() {
        routes = new HashMap<String, String>() {
            {
                put("api.login", "/rest/login");
                put("api.register", "/rest/register");

            }
        };
    }
}

This is the Routes class which contains the base URL for prod/testing is used by other classes. I want to have the default _baseUrl as the same one as above. But I want to be able to override it to "https://testing-env.com" while running the Jar. And I don’t want to add a public setter for that. I want to be able to do so by passing some arguments while running the Jar file.

Advertisement

Answer

As @Thomas mentioned in comment:

// Get system property with default if property does not exist
public class Routes {

    private static String _baseUrl = System.getProperty("base.url", "https://production-env.com");

    public Map<String, String> routes;
    
    @SuppressWarnings("serial")
    public Routes() {
        routes = new HashMap<String, String>() {
            {
                put("api.login", "/rest/login");
                put("api.register", "/rest/register");

            }
        };
    }
}

Set property when executing jar

java -Dbase.url=https://dev-env.com -jar my.jar
10 People found this is helpful
Advertisement