Hi, Plug-in has a problem with finding a class and wanted to use mailing list members expertise on it. It may well be I'm using it wrong, if so, please point where. Also, if you know a better way of doing what I need to achieve - also please share. I tried searching archive but this ain't possible due to 404 page when accessing the link that should point there*.
*What I'm trying to achieve:* I have a class that makes a naming check (adheres standards or not) and I wish to run it during build and fail the build with explanation if findings are not to my liking. I have the check, it works, reports findings as it should. Now, I wish to plug that in Maven build, so even folks who run mvn clean install -DskipTests would get the message if needed. Enter exec plugin. I wish to run my main class with it, and set a system property which then will be checked for by "enforce". *How I'm going * 1) In my <build> I've added this: <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.2.1</version> <executions> <execution> <id>REST-naming-standard</id> <phase>test</phase> <goals> <goal>exec</goal> </goals> </execution> </executions> <configuration> <executable>java</executable> <arguments> <argument>-classpath</argument> <classpath/> <argument>com.company.naming.RestPathNameITest.Main</argument> </arguments> </configuration> </plugin> 2) You might want to say, I should try <goal>java</goal> with the required parameter: <mainClass>. Well, I did. Very similar section with <mainClass> and without argument with main class was my other try.* * <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.2.1</version> <executions> <execution> <id>REST-naming-standard</id> <phase>test</phase> <goals> <goal>java</goal> </goals> </execution> </executions> <configuration> <executable>java</executable> <mainClass>com.company.naming.RestPathNameITest.Main</mainClass> <arguments> <argument>-classpath</argument> <classpath/> </arguments> </configuration> </plugin> * Errors I'm getting: *Both are classloader related and (most likely) are thrown by FindClassInClasspath.isClassInClasspath, either on normal path or exception path. 1) If I go as in 1, above, Maven can't find the class, though documentation suggests making argument -classpath with empty <classpath/> will result in full project classpath, and the class I'm trying to run is a test class. Documentation: http://mojo.codehaus.org/exec-maven-plugin/examples/example-exec-for-java-programs.html [INFO] [exec:exec {execution: REST-naming-standard}] Exception in thread "main" java.lang.NoClassDefFoundError: com/company/naming/RestPathNameITest/Main Caused by: java.lang.ClassNotFoundException: com.company.naming.RestPathNameITest.Main 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:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) Could not find the main class: com.company.naming.RestPathNameITest.Main. Program will exit. [INFO] ------------------------------------------------------------------------ [ERROR] BUILD ERROR [INFO] ------------------------------------------------------------------------ [INFO] Command execution failed. 2) The other error is more intriguing, it (I think) occurs when the isClassInClasspath function does the forName and catches exception. Arrays suggest that something attempted to load the class from one classloader into another. [INFO] Preparing exec:java [WARNING] Removing: java from forked lifecycle, to prevent recursive invocation. [INFO] No goals needed for project - skipping [INFO] ------------------------------------------------------------------------ [ERROR] FATAL ERROR [INFO] ------------------------------------------------------------------------ [INFO] null [INFO] ------------------------------------------------------------------------ [INFO] Trace java.lang.ArrayStoreException at java.util.ArrayList.toArray(ArrayList.java:305) at org.codehaus.plexus.component.configurator.converters.composite.ArrayConverter.fromConfiguration(ArrayConverter.java:141) at org.codehaus.plexus.component.configurator.converters.ComponentValueSetter.configure(ComponentValueSetter.java:247) at org.codehaus.plexus.component.configurator.converters.composite.ObjectWithFieldsConverter.processConfiguration(ObjectWithFieldsConverter.java:137) at org.codehaus.plexus.component.configurator.BasicComponentConfigurator.configureComponent(BasicComponentConfigurator.java:56) at org.apache.maven.plugin.DefaultPluginManager.populatePluginFields(DefaultPluginManager.java:1357) at org.apache.maven.plugin.DefaultPluginManager.getConfiguredMojo(DefaultPluginManager.java:724) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:468) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535) 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) [INFO] ------------------------------------------------------------------------ [INFO] Total time: 49 seconds [INFO] Finished at: Mon Sep 10 13:19:35 CEST 2012 [INFO] Final Memory: 124M/404M [INFO] ------------------------------------------------------------------------ Any ideas? regards, Tomasz Borek * Page I found the link: http://mojo.codehaus.org/exec-maven-plugin/mail-lists.html Link itself: http://archive.codehaus.org/lists/org.codehaus.mojo.user