Java Maven配置文件从属性文件读取数据

Java Maven配置文件从属性文件读取数据,java,maven,selenium,properties,maven-profiles,Java,Maven,Selenium,Properties,Maven Profiles,我有一个Selenium项目,它使用Maven作为构建工具,我想从.properties文件中读取不同的环境细节协议、域、子域等。是否可以使用Maven概要文件,以便根据触发mvn命令时指定的概要文件在不同的环境(如dev、staging、prod)上运行测试 开发人员属性: protocol=http domain=domain.com subdomain=www pom.xml: <profiles> <profile> <id>

我有一个Selenium项目,它使用Maven作为构建工具,我想从.properties文件中读取不同的环境细节协议、域、子域等。是否可以使用Maven概要文件,以便根据触发mvn命令时指定的概要文件在不同的环境(如dev、staging、prod)上运行测试

开发人员属性:

protocol=http
domain=domain.com
subdomain=www
pom.xml:

  <profiles>
    <profile>
      <id>prod</id>
      <activation>
       <activeByDefault>true</activeByDefault>
      </activation>
    </profile>
    <profile>
      <id>pre_prod</id>
    </profile>
    <profile>
      <id>dev</id>
    </profile>
  </profiles>
然后,应该在java代码中使用

System.getProperty("protocol");
System.getProperty("domain");
System.getProperty("subdomain");
任何帮助都将不胜感激


谢谢

如果您只是想根据命令行参数读取不同的属性文件,您能不能不传入一个字符串,例如-Denv=dev

然后在properties reader类中,基于System.getPropertyenv初始化属性文件

Properties generalProperties = new Properties();
    String generalPropertiesFileName = "data/"+ 
      System.getProperty("env") + ".properties";
   initProperties(generalProperties, generalPropertiesFileName);
或者,您也可以通过相同的方式将属性从命令行传递到POM-

<properties>
  <property>
    <protocol></protocol>
    <domain></domain>
    <subdomain></subdomain>
  <property>
<properties>
然后可以从命令行将它们作为-Dprotocol=foo等传递进来


希望这能有所帮助?

Hey@JackForman,非常感谢你提出了这个问题的答案。直接在pom.xml文件中定义一个用于处理环境的文件对于我的问题来说不是一个很好的解决方案,因为项目将需要测试至少10个网站,每个网站都有自己的开发、登台和产品配置。这样,pom文件将变得非常混乱,因为其中将添加大量数据。最后,我的最后一个maven任务应该看起来像mvn clean test-Dbrand=ebay-Pdev,其中brand将是测试中的一个网站。好的,第一个带有道具文件的解决方案可以在5月份使用命令行arg吗?然而,也许你可以用配置文件做一些聪明的事情,我不知道。刚刚实现了你建议的第一个解决方案,效果很好!再次感谢!
<properties>
  <property>
    <protocol></protocol>
    <domain></domain>
    <subdomain></subdomain>
  <property>
<properties>