2014-04-25 238 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

相关问题