Use an alternative Maven Profile during test phase
Asked Answered
S

2

3

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?

Sundin answered 14/5, 2009 at 22:6 Comment(0)
L
7

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
Librium answered 14/5, 2009 at 22:28 Comment(3)
While this is certainly a good way to switch property files from maven execution to maven execution I was hoping for something more granular. I want to simply execute mvn clean jetty:run or similar and then resources are filled in with placeholders that come from the test profile, then, once the tests ran through, I'd like to switch automatically to another profile, that will then be used to replace the placeholders and then start the jetty server. Basically I want to run the unit tests on another database configuration :-)Sundin
I see -- so you want to use different profiles for different phases of the Maven lifecycle? I'm not sure if that is possible, but we'll see if anybody else answers.Librium
You can't use different profiles for different phases of the same run. I've bumped into this problem since 2.0.3 days. I get around this with mvn -PlocalTest clean package;mvn -PfullBuild clean package deploy.Niehaus
S
2

Not sure if this can help you at all but you can specify alternative resource files in the /src/test/resources folder which override the ones in /src/main/resources when running tests only.

I define an alternative placeholders.properties file here to specify another db connection to be used by the test phase.

Spaniard answered 23/3, 2012 at 12:28 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.