2014-04-25 180 views
6

我目前正在在具有以下配置的pom.xml文件現有項目:如何使用Maven將資源複製到src目標目錄?

<resources> 
    <resource> 
     <filtering>false</filtering> 
     <directory>src</directory> 
     <includes> 
      <include>**/*.properties</include> 
     </includes> 
    </resource> 
</resources> 

我在基本路徑名爲properties目錄包含屬性文件。打包所有屬性文件包含在屬性/在我的src目錄中時(否則由於缺少配置文件而導致程序崩潰),我想複製它。

所以我的問題是:

哪能,與Maven包括未src目錄下位於資源文件?

我試試這一個,但它似乎並沒有工作:

<resources> 
    <resource> 
     <filtering>false</filtering> 
     <directory>src</directory> 
     <includes> 
      <include>**/*.properties</include> 
      <include>../properties/**</include> 
     </includes> 
    </resource> 
</resources> 

感謝的對你有所幫助。

回答

13

如果你的文件結構是這樣的: Standard Directory Layout

enter image description here

然後你沒有添加的資源elemt。 Maven的副本由默認所有的文件和位於你的/ src目錄/主/資源文件夾到你的build文件夾,並找到他們在您的類路徑編譯的文件的根文件夾。
如果你有,例如一個名爲運行mvn clean compile當這個文件configuration.properties位於/src/main/resources/configuration.properties然後如果你刪除部分文件將位於其中u希望他們

<resource> 
    <filtering>false</filtering> 
    <directory>src</directory> 
    <includes> 
     <include>**/*.properties</include> 
    </includes> 
</resource> 
將被複制到您的 /target/classes/configuration.properties 所以
+0

感謝您回答這個問題,問題是項目比較老(在maven之前),所以它不遵循maven標準的目錄佈局。你的答案非常有用,我只需要添加我的屬性目錄作爲資源目錄。 – stankoua

+0

不,最好是改變文件夾結構並遵循使您的生活更輕鬆的約定。 – khmarbaise

+0

很高興我能幫到你。正如khmarbaise它使你的生活更容易遵循標準的對話。使生活更輕鬆爲您和其他every1使用該項目:) – zpontikas

6

通過從螞蟻的項目遷移到Maven在不改變項目結構在構建設置你的sourceDirectory testSourceDirectory和使用maven-資源插件作爲在至極階段如下因素照顧你執行的目標。

 <plugin> 
      <artifactId>maven-resources-plugin</artifactId> 
      <version>2.6</version> 
      <executions> 
       <execution> 
        <id>copy-resources01</id> 
        <phase>process-classes</phase> 
        <goals> 
         <goal>copy-resources</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>${basedir}/target/classes</outputDirectory> 
         <encoding>UTF-8</encoding> 
         <resources> 
          <resource> 
           <directory>${basedir}/src</directory> 
           <includes> 
            <include>**/*.properties</include> 
           </includes> 
          </resource> 
         </resources> 
        </configuration> 
       </execution> 
       <execution> 
        <id>copy-resources02</id> 
        <phase>verify</phase> 
        <goals> 
         <goal>copy-resources</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>${basedir}/build/lib</outputDirectory> 
         <encoding>UTF-8</encoding> 
         <resources> 
          <resource> 
           <directory>${basedir}/target/</directory> 
           <include>*.jar</include> 
          </resource> 
         </resources> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
+0

Thx回覆,如果zpontikas沒有給我一個解決方案,我會試試看。 – stankoua

+1

那麼,什麼是發生在這裏: 1.execution與身份證複印件resources01複製所有* .property文件查找在$ {BASEDIR}目錄$/src目錄複製在同一個包{} BASEDIR /目標/班,如他們是src。 2.execution與身份證複印件resources02將會把結果*。jar文件在$ {basedir}/build/lib中,這是ant項目已經把結果放在前面的地方。 我知道有點硬,最終你需要通過mvn清除build/lib。 命令:mvn安裝你應該使用 – aberes

相關問題