我的实用程序类
Properties prop = new Properties();
ClassLoader loader = Thread.currentThread().getContextClassLoader();
String profile = System.getProperty("env");
//InputStream in = loader.getResourceAsStream(fileName + ".properties");
InputStream in = loader.getResourceAsStream(fileName + "_" + profile + ".properties");
始终返回null。
我确实在pom中添加了properties-maven-plugin
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0.0</version>
<executions>
<execution>
<goals>
<goal>set-system-properties</goal>
</goals>
<configuration>
<properties>
<property>
<name>env</name>
<value>prod</value>
</property>
</properties>
</configuration>
</execution>
</executions>
</plugin>
但在获取util类中的属性值时仍然没有运气。
答案 0 :(得分:1)
据我了解set-system-properties
目标的文档,它在当前机器上设置环境变量。根据它的工作方式,可以仅在构建期间定义这些环境变量,仅限当前用户,或者如果您还拥有当前计算机的管理员权限,则可以定义这些环境变量。
在任何情况下,它只会在构建项目的机器上设置变量。
如果我正确理解您的问题,您希望存储构建是release
(生产)还是debug
构建?
在这种情况下,您可以使用maven-assembly-plugin
并定义清单值。此清单值将写入jar的清单,您可以在运行时读取该清单,例如: G。使用JCabi Manifest库。
答案 1 :(得分:0)
<systemProperties>
<systemProperty>
<name>env</name>
<value>prod</value>
</systemProperty>
</systemProperties>
答案 2 :(得分:0)
作为旁注 - 如果你在看到错误时使用surefire来运行它,你可能应该使用它的内置系统属性功能:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemPropertyVariables>
<env>prod</env>
</systemPropertyVariables>
</configuration>
</plugin>