Вот мой pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.heliosophiclabs</groupId>
<artifactId>artifactId</artifactId>
<version>0.0.1-SNAPSHOT</version>
<profiles>
<profile>
<id>local</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<serverAddr>localhost</serverAddr>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<serverAddr>heliosophiclabs.com</serverAddr>
</properties>
</profile>
</profiles>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
I have a config.properties file in src/main/resources, which looks like this:
serverIp=${serverAddr}
а потом делаю:
mvn clean resources:resources -Pprod
Обратите внимание, что профиль указан здесь как «prod», и все же, как бы я ни настаивал, файл config.properties после указанной выше командной строки выглядит так:
serverIp=localhost
тогда как это должно быть:
serverIp=heliosophiclabs.com
Если я укажу несуществующий профиль в этой командной строке, тогда maven выдаст мне ошибку, поэтому он определенно что-то делает.
Пожалуйста ... что я здесь делаю не так ??
РЕДАКТИРОВАТЬ:
По запросу, результат "mvn -X -Pprod install" доступен здесь, поскольку он слишком большой, чтобы размещать здесь.
И вот что я вижу:
C:\Users\Marc\workspace_mars_2\entourage>mvn -X -Pprod install > mvn.out
C:\Users\Marc\workspace_mars_2\entourage>more target\classes\config.properties
serverAddr=localhost
В entourage-0.0.1-SNAPSHOT.jar config.properties находится в корне, и его содержимое такое же, как указано выше (т.е. localhost).
Я не придумываю это!
env
, определенное в pom (например, heliosophiclabs.com/~mad /pom.xml.txt) ... а теперь вы говорите, что мне тоже нужно определитьserverAddr
? Я предполагаю, что все это - обходной путь для необъяснимой проблемы, связанной с тем, как я это делал с самого начала, что действительно должно работать нормально. Прав ли я, или я делал это раньше неправильно? - person Marc   schedule 11.03.2015mvn -X process-resources -Pprod > mvn.out
... результат здесь: heliosophiclabs.com/~mad/mvn.out Как видите,[DEBUG] properties used { ... env=prod
и[DEBUG] (f) buildFilters = [C:\Users\Marc\workspace_mars_2\entourage\filters\prod.properties]
- person Marc   schedule 11.03.2015key=value
. В этом случае нам нужны два фильтра, один для локального и один для prod, у каждого из них будет только одно свойство (serverAddr), но с разными значениями. Вы указалиserverAddr=localhost
в local.properties иserverAddr=heliosophiclabs.com
в prod.properties? Простите за плохой английский? - person Pablo Lascano   schedule 11.03.2015buildFilters = [C:\Users\Marc\workspace_mars_2\entourage\filters\prod.properties]
, а maven фактически фильтрует ваши ресурсы:filtering C:\Users\Marc\workspace_mars_2\entourage\src\main\resources\config.properties to C:\Users\Marc\workspace_mars_2\entourage\target\classes\config.properties
. Содержимоеprod.properties
должно бытьserverAddr=heliosophiclabs.com
, а содержимоеconfig.properties
(внутри src / main / resources) должно бытьserverIp=${serverAddr}
- person Pablo Lascano   schedule 11.03.2015${serverAddr}
? свойствоserverAddr
больше не определено в моем pom. Ваш английский потрясающий ... во всяком случае лучше моего испанского :) - person Marc   schedule 11.03.2015-P
, профильactiveByDefault
используется для фильтрации. Последний mvn.out: heliosophiclabs.com/~mad/mvn.out - person Marc   schedule 12.03.2015buildFilters = [C:\Users\Marc\workspace_mars_2\entourage\filters\prod.properties]
, Значит активируется прод профиля. Это так редко. Вы используете eclipse с плагином m2e? Иногда этот плагин обновляет файлы при обновлении (я думаю) и использует профиль по умолчанию. В этом случае щелкните правой кнопкой мыши свой проект (тот, который имеет пометку), перейдите в раздел «Свойства» - ›Maven и заполните поле« Активные профили Maven ». Если вы запускаете maven из консоли Windows, то я не знаю, что происходит! - person Pablo Lascano   schedule 12.03.2015mvn clean
, теперь перейдите в eclipse ... цель там, с файлами и всем остальным! Разве maven не стерла цель? да, но Eclipse восстанавливает его. Снятие флажков «Обновлять при доступе» и «Обновлять с помощью хуков ...» не решает проблему. Если вы установите в eclipse Active Maven Profiles значение prod и запуститеmvn process-resources -P local
, вы увидите, что eclipse заменяет его профилем prod. Я не знаю, это ошибка или особенность! : P определенно, я не хочу такой возможности. - person Pablo Lascano   schedule 12.03.2015-P
с eclipse, вы должны использоватьCtrl+Alt+P
для выбора профиля ...: P Приятно знать! - person Pablo Lascano   schedule 12.03.2015