2011-11-29 80 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