2011-11-29 81 views
9

我有以下內容的pom.xml文件:的Maven不會複製非Java文件

<sourceDirectory>${basedir}/src/main/test</sourceDirectory> 
<outputDirectory>${basedir}/src/main/bin </outputDirectory> 

裏面${basedir}/src/main/test我有一個不包含任何.java文件某些文件夾。當我開始編譯時,它們不會被複制到${basedir}/src/main/bin目錄中。

只有.java文件被移動(編譯完成後)並存儲在正確的文件夾中。

有人可以幫我解決這個問題,而不使用任何插件嗎?

我試着用

<resources> 
     <resource> 
      <filtering>false</filtering> 
      <directory>${basedir}/src/main/test/scenarios</directory> 
      <includes> 
       <include>*.xml</include> 
      </includes> 
      <targetPath>${basedir}/src/main/bin/scenarios</targetPath> 
     </resource> 

     <resource> 
      <filtering>false</filtering> 
      <directory>${basedir}/src/main/test/sut</directory> 
      <includes> 
       <include>*.xml</include> 
      </includes> 
      <targetPath>${basedir}/src/main/bin/sut</targetPath> 
     </resource> 

    </resources> 

但它不工作。哪裏不對?

+1

適用於以上文件夾結構和代碼段。你有什麼錯誤嗎?文件夾是否在'src/main/bin'中創建?在src/main/test中有'* .xml'內容嗎? – Raghuram

+0

我沒有發現任何錯誤,但我不工作,目錄目標是由編譯狀態創建的,這可能是主要問題嗎? – pedr0

+0

'mvn compile'不會創建目標文件夾; 'mvn package'或'mvn install'就行了。將內容複製到src/main/bin後,你想做什麼?這些應該進入'jar'嗎?如果是這樣,你有更多的工作來定製'maven jar插件'。 – Raghuram

回答

14

如果它們不是java文件,則應將它們移動到src/main/resources和/或src/test/resources目錄。這是存儲非java文件的maven慣例。您的其他選項是使用maven-resources-plugin

<plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-resources-plugin</artifactId> 
      <version>2.3</version> 
     </plugin> 
    </plugins> 
    <resources> 
     <resource> 
     <directory>src/main/test</directory> 
      <includes> 
       <include> <the_files_you_want_to_include></include> 
      </includes> 
     </resource> 
    </resources> 

你有另一種選擇是使用maven-antrun-plugin並執行一個Ant任務將文件手動複製。

+0

我需要在這裏舉行..存在一個解決方法? – pedr0

+0

pedr0:爲什麼你需要把它們放在那裏? Maven會在最終的神器(jar/war)中將它們複製到正確的包名下。所以如果你正在做資源查找應該可以正常工作。 – CoolBeans

+0

我的問題是我必須使用必須具有特定文件夾結構的JSystem。 – pedr0