2012-08-30 22 views
0

行家過濾功能,我有一個與Maven的協助下開發一個Java項目。部分項目是單元測試。我打算把所有由unittests生成的臨時文件放到maven的目標目錄中。這可能是一個好主意,因爲如果通過單元測試不會被刪除不管出於什麼原因臨時文件,目標目錄可以進行清洗和與它所有的臨時文件仍然趴在文件系統周圍。所以我找到了Maven的資源插件filtering功能,想知道是否有可能以實例爲我的用例。我的計劃是在屬性入口文件這樣如何使用從Maven的資源插件

targetdir = ${project.build.directory} 

應該提供給我,揭示了內行的位置,目標目錄的屬性。現在,caveeat是,過濾的屬性文件通過maven資源插件存儲在目標目錄中。
我如何在那裏找到它?我需要屬性文件告訴我目標目錄在哪裏,但屬性文件在目標目錄中? 我的方法仍然值得做?或者這是不可能的?

+0

你的測試。那麼,爲什麼不製作'targetDir = .'? – Nishant

+0

從目標目錄運行測試,但應用程序文件存儲在不同的位置和這些位置不是命令行參數或屬性配置文件呢。它們只能作爲參數傳遞給函數調用。 – Matthias

回答

1

我有兩種方法:

1.使用Java魔術
在這裏,我只是跑了一招

@Test 
public void testpath(){ 
    //gets me surefire report dir, lies just below /target 
    File testDir = new File(TestTargetPath.class.getResource("/").getPath()); 
    //Get its parent! location of target 
    System.out.println("target? " + testDir.getParent()); 

    //modify your properties object to set this as targetDir 
} 

此打印

target? /home/naishe/workspace/in/naishe/homeapp/target 

2.閱讀co nfig文件作爲資源相對路徑

有兩個地方,把一個資源文件,如Maven的佈局配置屬性。

  1. /src/main/resources - 下面的文件將作爲工件的一部分。您可以使用getResource()從任何類下/src/main/java

  2. /src/test/resources訪問它們 - 文件下的這一點,並沒有神器的一部分,但它們可從任何類/src/test/java

因此,根據您的需要是什麼,你可以通過保持你的config.properties下一個或兩個的地方和讀取配置文件:從目標目錄中運行

Properties props = new Properties(); 
    InputStream stream = AppConfig.class.getResourceAsStream("/config.properties"); 
    props.load(stream); 
    System.out.println(">> " + props.getProperty("targetDir")); 
+0

你能否闡述一下「MyAppConfigInMainCode」一點?這是什麼?你有沒有注意到屬性文件將用於單元測試(因爲你建議把它放在src/main/resources中)。 – Matthias

+0

@Matthias更新。 – Nishant