Многопрофильный Maven с развертыванием в WEB-INF / классах - PullRequest
0 голосов
/ 26 октября 2011

Мне нужно включить кое-что в мою последнюю войну:

У меня есть ситуация с файлами нескольких профилей в src / main / resources:

 configuration.properties (local)
 configuration.dev.properties
 configuration.production.properties

Итак, я хотел бы, чтобы, например, при выполнении '-Pproduction' файл configuration.production.properties копировался во время войны в классы dir WEB-INF / и переименовывался в 'configuration.properties'. Как я могу получить это?

Спасибо

Randomize

Ответы [ 3 ]

2 голосов
/ 26 октября 2011

Я бы так не делал.

Вместо этого у меня была бы одна конфигурация.properties, содержащая заполнители для значений, которые различаются в зависимости от профиля:

numberOfThreads=${config.numberOfThreads} # depends on the profile
foo=bar #doesnt depend on the profile

Изатем используйте возможности фильтрации плагина ресурсов, чтобы заменить местозаполнитель фактическими значениями, извлеченными из профиля:

filter-dev.properties :
    config.numberOfThreads=2
filter-prod.properties :
    config.numberOfThreads=16

А теперь в вашем пом:

<profile>
  <id>dev</id>
  <properties>
    <env>dev</env>
  </properties>
</profile>
<profile>
  <id>prod</id>
  <properties>
    <env>prod</env>
  </properties>
</profile>

<filters>
  <filter>src/main/filters/filter-${env}.properties</filter>
</filters>

<resources>
  <resource>
    <directory>src/main/resources</directory>
    <filtering>true</filtering>
  </resource>
</resources>
0 голосов
/ 26 октября 2011

Ресурсы могут быть включены для каждого профиля, и я думаю, было бы более элегантно, если бы вы сгруппировали их по среде / профилю:

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <excludes>
                <exclude>commons-logging.properties</exclude>
            </excludes>
        </resource>
        <resource>
            <directory>${env.resources.dir}</directory>
        </resource>
    </resources>
[...]
</build>
<profiles>
    <profile>
        <id>local</id>
        <properties>                
            <env.resources.dir>src/test/resources</env.resources.dir>
            [...]

Пока я не знаю, могу ли я включать источники для каждого профиля (, помогите, если можете : D).

0 голосов
/ 26 октября 2011

Почему бы вам не отфильтровать их?Только один файл с именем и вы делаете:

http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html

<resources>
  <resource>
    <directory>src/main/resources</directory>
    <filtering>true</filtering>
  </resource>
</resources>
...