views:

116

answers:

2

Hello,

I'm learning how to use maven for my standalone java apps but I don't understand how to do a recursive copy of all directories from /src/main/resources to /taget directory.

I tried using antrun and resources plugin, but resources are copied to /target/classes and not to /target.

What is wrong here?

<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>

Thank's for your help.

EDIT: I would copy to /target directories like "bin","logs","conf", so I can test the app. and, with another maven task, package everything (jars and bin/conf/tmp dirs) into a zip/tar.gz file.

+1  A: 
  • Try with <plugins ... /> instead of <pluginManagement ... />.
  • Copying things to target to test it feels a bit weird. Will you run maven every time you need to test your application?
lexicore
Finally, it works! I was going crazy due to that (i have to investigate about the differences between plugin and pluginmanagement)I'll use maven also to do unitTests, but I don't copy resources (a bounch of static files) every time.Thank's for your help.
A: 

I think you are using maven in a wrong way.

Normall you don't need to "copy" resources to target. It is done by maven automatically already.

If you have some extra resources that is needed in testing, you can add

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

And, as told by lexicore, you are not suppose to use pluginManagement. "pluginManagement", just like "dependencyManagement", provides a "template" when project really use that plugin/ have that dependency. That means, adding pluginManagement/dependencyManagement won't trigger any plugin / won't add any dependency to your project.

Adrian Shum
Thank you also for your reply, now I know the difference between "pluginmanagement" and "plugin"
I think the main problem is not really pluginManagement vs plugin. I think you don't need to do such thing in preparing unit-test resources
Adrian Shum