Search code examples
javaunit-testingmaven-2appfuse

Use an alternative Maven Profile during test phase


I'm trying to build an application starting from an Appfuse Archetype, but I get some strange problems. For once I'd like to use a hsqldb for automated unit tests and integration tests, and a mysql db for my manual testing so that I can easily manipulate the data when I need to, so it would be nice to automatically switch profiles during the testing phases. Is there a way to do that?


Solution

  • I'm not sure if this is exactly what you are asking for, but you can do the following to setup multiple filters for your Maven project.

    <filters>
      <filter>/your/path/filter-${env}.properties</filter>
    </filters>
    

    This way you can setup multiple profiles using:

    <profiles>
      <profile>
        <id>local</id>
        <properties>
          <env>local</env>
        </properties>
      </profile>
      <profile>
        <id>test</id>
        <properties>
          <env>test</env>
        </properties>
      </profile>
    </profiles>
    

    You can then run the build with the relevant property file using:

    mvn -P <profile id>
    

    This would require having property files located at:

    /your/path/filter-local.properties
    /your/path/filter-test.properties