从POM读取属性到java代码

时间:2012-03-28 13:46:45

标签: java maven webdriver pom.xml

假设我有两个用于运行项目Web测试的maven配置文件:  1.首先使用说http://ci.blahblah.com:8080地址部署到CI tomcat实例,然后运行测试  2.可以使用tomcat:run部署到嵌入式tomcat的开发人员的第二个配置文件。因此,他们的网络测试地址就像http://localhost:8080

现在我在pom文件中创建了两个配置文件,并在<properties>部分中创建了每个配置文件。我还为每个配置文件创建了具有不同地址的<base.url>属性。

我现在有什么方法可以将这些值读入我的java类,在那里我使用Webdriver启动web测试,所以我可能会像driver.get("address from pom <base.url>")一样......

它只允许开发人员在提交他/她的代码之前在本地运行Web测试。

3 个答案:

答案 0 :(得分:3)

您可以使用maven resource filtering。例如:

首先更改代码,以便从属性文件中提取地址。许多方法(使用spring propertyplaceholderconfigurer等直接读取属性文件)

String address = getAddressFromPropertiesFileOrInjectedFromSpringOrWherever();
driver.get(address)

接下来创建将存储此信息的属性文件,最有可能在src / main / resources中。确保您的属性的值使用与maven变量相同的名称:

webAddres=${base.url}

确保根据上面的链接在您的个人资料中设置过滤。

答案 1 :(得分:0)

如果我理解正确,请尝试调用此系统:

mvn org.apache.maven.plugins:maven-help-plugin:evaluate -Dexpression=base.url

答案 2 :(得分:0)

您还可以在 web.xml 中使用环境条目,并在您的网络应用中解析它。

示例:

<强>的web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
  <env-entry>
    <env-entry-name>projectStage</env-entry-name>
    <env-entry-type>java.lang.String</env-entry-type>
    <env-entry-value>Development</env-entry-value>
  </env-entry>

  ...
</web-app>

Webapp代码

String projectStage = "";

try {
  Context context = new InitialContext();
  Context environment = (Context) context.lookup("java:comp/env");
  projectStage = (String) environment.lookup("projectStage");
} catch (NamingException ex) {
  //
}