I hav开发者_开发百科e a war packaging Maven project, in which I have a Java properties files called myapp.properties. In this properties file, I store some parameters, for example, database connection parameters, which will be used by the webapp.
- Either in a continuous integration environment or in my development environment, I want to set some testing parameters in myapp.properties to connect to my test database for example.
- At the same time, I want to leave these parameters blank in my final war package so that users can add these values by themselves during deployment to their environment. The final war package should be a build artifact generated in the continuous integration environment.
Essentially, there are two versions of myapp.properties file I want to use in different cases. My question is, what is the Maven way to solve this problem? I use Eclipse + WTP + m2eclipse in my development environment, and I hope the solution can works well together with my development tools.
You can have a look at this blog: http://blog.jayway.com/2010/01/21/one-artifact-with-multiple-configurations-in-maven/
They build different war-files and use different classifier (instead of different profiles). I am not sure if it is the maven way, but it works for some of my projects.
i would try it with
pom.xml for your project (or parent pom)
<build>
...
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
</includes>
<filtering>true</filtering>
</resource>
...
</build>
in your properties file(s) e.g.
db.url=${db.url}
and in your settings.xml (see http://maven.apache.org/settings.html#Profiles)
<db.url>jdbc:mysql://localhost:3306/testdb</db.url>
depending on your development stage (local, build server, etc.) you can use different db.url values
this will not leave the db.url property blank, but each time you package the artifact you dont want it really to stay blank do you ?
精彩评论