2012-03-28 95 views
0

比方說,我對運行項目的網絡測試兩個行家概況: 1.首先部署了一個說http://ci.blahblah.com:8080地址,然後測試運行 2.第二規格爲開發商CI Tomcat實例誰可以使用tomcat部署到嵌入式tomcat:運行。因此,他們的地址,網頁測試會像http://localhost:8080讀取屬性轉換爲Java代碼

現在我在POM文件中創建兩個配置文件,並在部分<properties>他們每個人我還創建<base.url>屬性不同的地址,每個配置文件。

有沒有什麼辦法,我現在可以讀取這些值到我的Java類,我使用Webdriver啓動網絡測試,所以我可以像...... driver.get("address from pom <base.url>")

它只是允許開發人員在提交他/她的代碼之前在本地運行Web測試。

回答

3

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

首先更改您的代碼,以便從屬性文件中提取地址。很多方法可以做到這一點(讀取屬性文件直接,使用彈簧propertyplaceholderconfigurer等)

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

接下來創建一個將存儲這些信息的屬性文件,最有可能在的src/main /資源。確保您的財產的價值使用相同的名稱作爲您的maven變量:

webAddres=${base.url} 

確保根據上面的鏈接在您的配置文件中設置過濾。

+0

你能描述如何實現,使用彈簧注入? – Arek 2012-03-29 06:26:39

+0

此博客條目可能是一個很好的開始:http://www.mkyong.com/spring/spring-propertyplaceholderconfigurer-example/ – 2012-03-29 14:31:13

+0

Thx爲您的答案 – Arek 2012-03-30 07:02:21

0

如果我理解正確的話,儘量把這個系統:

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

您也可以在您的web.xml中使用環境條目並將其解析到您的Web應用程序中。

例子:

的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) { 
    // 
}