【问题标题】:maven antrun copy resources to base target directorymaven antrun 将资源复制到基本目标目录
【发布时间】:2010-07-20 09:56:31
【问题描述】:

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

我尝试使用 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>

感谢您的帮助。

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

【问题讨论】:

    标签: maven-2 resources copy target


    【解决方案1】:
    • 尝试使用&lt;plugins ... /&gt; 而不是&lt;pluginManagement ... /&gt;
    • 复制东西到目标来测试感觉有点奇怪。您会在每次需要测试应用程序时运行 maven 吗?

    【讨论】:

    • 终于成功了!因此我快疯了(我必须调查插件和插件管理之间的差异)我也会使用 maven 来做单元测试,但我不会每次都复制资源(一堆静态文件)。感谢您的帮助。
    【解决方案2】:

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

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

    如果你有一些额外的资源在测试中需要,你可以添加

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

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

    【讨论】:

    • 也谢谢你的回复,现在我知道“pluginmanagement”和“plugin”的区别了
    • 我认为主要问题并不是真正的pluginManagement vs plugin。我认为你在准备单元测试资源时不需要做这样的事情
    【解决方案3】:

    您可以使用copy todir 来执行此操作,使用maven-antrun-plugin

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

    【讨论】:

      猜你喜欢
      • 2014-06-10
      • 2013-10-24
      • 2019-06-20
      • 1970-01-01
      • 2017-09-25
      • 2022-12-22
      • 2016-06-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多