maven antrun将资源复制到基目标目录

时间:2010-07-20 09:56:32

标签: maven-2 resources copy target

我正在学习如何将maven用于我的独立java应用程序,但我不明白如何从/ src / main / resources到/ taget目录的所有目录的递归副本。

我尝试使用antrun和资源插件,但资源被复制到/ target / classes而不是/ target。

这里有什么问题?

<build>
  <pluginManagement><plugin>
     <artifactId>maven-antrun-plugin</artifactId>
     <version>1.4</version>
     <executions>
      <execution>
       <phase>process-resources</phase>
       <configuration>
        <tasks>
         <copy todir="${basedir}/target">
          <fileset dir="${basedir}/src/main/resources" includes="**/*" />
         </copy>
        </tasks>
       </configuration>
       <goals>
        <goal>run</goal>
       </goals>
      </execution>
     </executions>
    </plugin>  </pluginManagement>
 </build>

感谢您的帮助。

编辑: 我会复制到/目标目录,如“bin”,“logs”,“conf”,所以我可以测试应用程序。并且,使用另一个maven任务,将所有内容(jar和bin / conf / tmp dirs)打包到zip / tar.gz文件中。

3 个答案:

答案 0 :(得分:5)

  • 尝试使用<plugins ... />代替<pluginManagement ... />
  • 复制目标以测试它感觉有点奇怪。每次需要测试应用程序时,你都会运行maven吗?

答案 1 :(得分:1)

我认为你是以错误的方式使用maven。

Normall您不需要将资源“复制”到目标。它已由maven自动完成。

如果您有一些测试所需的额外资源,可以添加

<build>
   <testResources>
        <testResource>
            <directory>${basedir}/src/test/anotherKindOfResourceDir</directory>
        </testResource>
    </testResources>
<build>

而且,正如lexicore所说,你不应该使用pluginManagement。 “pluginManagement”就像“dependencyManagement”一样,在项目真正使用该插件/具有该依赖性时提供“模板”。这意味着,添加pluginManagement / dependencyManagement不会触发任何插件/不会向您的项目添加任何依赖。

答案 2 :(得分:0)

您可以使用 copy todir 使用 maven-antrun-plugin

执行此操作
<tasks>
    <mkdir dir="${basedir}/target/folder"/>
    <copy todir="${basedir}/target/folder">
        <fileset dir="${basedir}/src/folder" includes="**/*" />
    </copy>
</tasks>