Вы можете, но это зависит от того, что вам это нужно. Это наиболее распространенный способ сделать это:
<profiles>
<profile>
<id>profile-1</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0-alpha-2</version>
<executions>
<execution>
<goals>
<goal>set-system-properties</goal>
</goals>
<configuration>
<properties>
<my-prop>Yabadabadoo!</my-prop>
</properties>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
, но это только устанавливает системное свойство во время выполнения Maven, поэтому, если вы хотите (например) этот класс, чтобы забрать его:
package org.example;
public class App {
public static void main(String[] args) {
System.out.println("-->" + System.getProperty("my-prop"));
}
}
вам нужно запустить его с mvn -P profile-1 compile exec:java -Dexec.mainClass=org.example.App
и даст следующий результат:
[INFO] --- exec-maven-plugin:1.4.0:java (default-cli) @ sys-prop ---
-->Yabadabadoo!
Запуск его без compile
цели даст вам null
, поскольку плагин exec
не связан ни с одной фазой сборки в этом случае.
Но если вам нужны системные свойства для (скажем) модульных тестов, тогда вам нужен плагин surefire
.
Возможный дубликат [Установка системной переменной в профиле maven] (http://stackoverflow.com/questions/25604969/setting-a-system-variable-within-a-maven-profile) – kryger