title: From Maven, how do I run a class that lives under src/test/java?
body: <p>I have inherited a codebase :)</p>
  
  <p>Under src/test/java/ there's a file that I need to run (I need to run its <code>public static void main(String[] args)</code>, not a <code>@Test</code> method within it).</p>
  
  <p>The closest I have got is:</p>
  
  <pre><code>mvn -e exec:java -Dexec.mainClass="com.me.packagex.RunFile" -Dexec.classpathScope="test"
  </code></pre>
  
  <p>but that then fails, and it appears to be because RunFile wants to use classes that exist under src/main/java/com/me/packagex/ (notice, /main/, not /test/).  The files under there are in the same package as RunFile, i.e. 'package com.me.packagex;'.</p>
  
  <p>If I remove the <code>-Dexec.classpathScope="test"</code> then it can't find RunFile at all.  It's as if I need to give it two scopes, but it doesn't accept "test,compile".</p>
  
  <p>The person I've inherited this from (dearly departed) used to run it from Eclipse.  I need a way to run it from the command-line.</p>
  
  <p>I hope this is clearly explained.</p>
  
  <p>tyvm,</p>
  
  <hr>
  
  <p>This is promising.  Pascal, I've tried your example and that <em>doesn't</em> work for me.</p>
  
  <p>Although now I look at it - it's not finding Demo, rather than not finding Dog.</p>
  
  <pre><code>Apache Maven 2.2.1 (rdebian-1)
  Java version: 1.6.0_18
  Java home: /usr/lib/jvm/java-6-openjdk/jre
  Default locale: en_GB, platform encoding: UTF-8
  OS name: "linux" version: "2.6.32-25-generic" arch: "i386" Family: "unix"
  
  $ mvn -e exec:java -Dexec.mainClass="com.stackoverflow.Demo" -Dexec.classpathScope="test"
  
  [ERROR] BUILD ERROR
  [INFO] ------------------------------------------------------------------------
  [INFO] An exception occured while executing the Java class. com.stackoverflow.Demo
  
  [INFO] ------------------------------------------------------------------------
  [INFO] Trace
  org.apache.maven.lifecycle.LifecycleExecutionException: An exception occured while executing the Java class. com.stackoverflow.Demo
          at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:719)
          at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:569)
          at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:539)
          at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
          at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
          at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
          at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
          at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
          at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
          at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
          at java.lang.reflect.Method.invoke(Method.java:597)
          at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
          at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
          at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
          at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
  Caused by: org.apache.maven.plugin.MojoExecutionException: An exception occured while executing the Java class. com.stackoverflow.Demo
          at org.codehaus.mojo.exec.ExecJavaMojo.execute(ExecJavaMojo.java:346)
          at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
          at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
          ... 17 more
  Caused by: java.lang.ClassNotFoundException: com.stackoverflow.Demo
          at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
          at java.security.AccessController.doPrivileged(Native Method)
          at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
          at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
          at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
          at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:284)
          at java.lang.Thread.run(Thread.java:619)
  </code></pre>