Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中从maven读取系统属性_Java_Maven_System Properties - Fatal编程技术网

如何在java中从maven读取系统属性

如何在java中从maven读取系统属性,java,maven,system-properties,Java,Maven,System Properties,我正在开发一个运行在tomcat服务器上的web应用程序。 对于不同的环境,我有不同的属性文件,因此我想从java文件中的pom文件中读取我的环境变量,并在运行命令mvn clean install时设置该环境属性 这是我的pom文件: 4.0.0 营销中心 营销中心 0.0.1-快照 战争 javax.ws.rs jsr311 api 1.1.1 泽西岛 泽西服务器 1.8 log4j log4j 1.2.17 发展 真的 环境与发展 戳 假的 环境产品 质量保证 假的 环境质量保证 规则

我正在开发一个运行在tomcat服务器上的web应用程序。 对于不同的环境,我有不同的属性文件,因此我想从java文件中的pom文件中读取我的环境变量,并在运行命令
mvn clean install
时设置该环境属性

这是我的pom文件:


4.0.0
营销中心
营销中心
0.0.1-快照
战争
javax.ws.rs
jsr311 api
1.1.1
泽西岛
泽西服务器
1.8
log4j
log4j
1.2.17
发展
真的
环境与发展
戳
假的
环境产品
质量保证
假的
环境质量保证
规则
假的
环境
src
src
**/*.爪哇
maven编译器插件
3.7.0
1.8
1.8
maven战争插件
3.0.0
网络内容
org.apache.maven.plugins
maven surefire插件
2.21.0
环境与发展
我尝试过多个被注释的东西,但都给出了相同的问题空值。 我通过以下代码读取环境属性,这些代码在DBUtils类中-

公共类DBUtils{
私有静态最终记录器LOG=Logger.getLogger(DBUtils.class);
公共静态连接getConnection()引发SQLException{
连接=空;
String str=System.getProperty(“环境”);
System.out.println(“deven”+str);
//静态属性_config=PropertyLoader.loadProperties(System.getProperty(“环境”));
Properties prop=PropertyLoader.loadProperties(str);
字符串url=prop.getProperty(“databaseUrl”);
String driverName=prop.getProperty(“databaseDriver”);
}
}
但我每次都会变空。 这就是结果-

devennull
devennull
2018-04-20 12:52:22,424 [http-nio-8080-exec-8] ERROR
java.lang.IllegalArgumentException: null input: name
        at com.app.data.PropertyLoader.loadProperties(PropertyLoader.java:51)
        at com.app.data.PropertyLoader.loadProperties(PropertyLoader.java:128)
        at com.app.data.DBUtils.getConnection(DBUtils.java:23)

据我所知,当您想要在maven阶段使用main方法执行java类时,会使用该插件。系统属性不会传递给保存web应用程序执行的JVM

如果在DBUtils类中设置了void main,那么在具有系统属性的JVM中执行时,将看到系统属性

public static void main(String[] args) {
        String k = System.getProperty("environment");
        System.out.println(k);
}

最简单的方法-使用中间
app.properties
文件: 例如:

1-使用
environment.server.name
变量的配置文件的Maven片段:

<profile>
    <id>dev</id>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
    <properties>
        <environment.server.name>DEVELOPMENT</environment.server.name>
    </properties>
</profile>
3-创建将处理应用程序属性的简单类:

public class AppProperties {
 private static final String PROPERTIES_FILE_NAME = "app.properties";
 public static final String SERVER_NAME;
 static {
     try {
          final PropertiesConfiguration configuration = new 
          PropertiesConfiguration(PROPERTIES_FILE_NAME);
          SERVER_NAME = configuration.getString("environment.server.name");
         } catch (ConfigurationException e) {
                 throw new RuntimeException("Failed to load properties", e);
           } 
   }
  private AppProperties() {}
}
4-您现在可以在应用程序中使用属性文件:

String serverName = AppProperties.SERVER_NAME;

此解决方案的可能副本对我不起作用。你能在DBUtils中发布你的void main方法吗?@kimy82我没有任何main方法。这是一个网络应用我建议你可以看看它的一个网络应用我不能用主要方法
String serverName = AppProperties.SERVER_NAME;