The exec-maven-plugin target does not start at build time

Hello,

I try to run the main method during my maven build process. Therefore, I added the exec-maven plugin and the following snippet to my pom.xml

<plugin> <!-- http://www.vineetmanohar.com/2009/11/3-ways-to-run-java-main-from-maven/ --> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.1.1</version> <executions> <execution> <id>compile-reports</id> <phase>compile</phase> <goals> <goal>java</goal> </goals> <configuration> <mainClass>at.xyz.dls.util.JasperReportCompiler</mainClass> </configuration> </execution> </executions> </plugin> 

The main class exists and also executes when I call it from the command line:

 mvn exec:java -Dexec.mainClass="at.xyz.dls.util.JasperReportCompiler" 

I also tried creating an empty new project to check if another problem in pom was causing the problem but was unsuccessful. In maven settings.xml in the ~ / .m2 folder there is only an entry for the mirror, but not profiles or anything else that might cause the problem.

He just does not start it. When I deleted all my artifacts in my repo in org.codehouse, it did not load the exec-maven plugin. Only when I made a command line call.

Any clues? Thanks in advance!

edit: I forgot to mention that I used "mvn clean install". so he had to go through the compilation phase ...

edit:

So far, I have not been able to solve the problem. Thank you for your responses! I will try to give all the information again, and I hope that one of you guys will find the fish part. I don’t know anymore.

What I've done:

  • Delete the org / codehouse / mojo folder in my maven proxy. just to show when dependencies load.
  • show java and maven version information
  • run the project with: mvn -clean install (which must go through the testing phase to complete my main method)
  • execute the main method for showing, the exec-maven plugin only loads later and works

As I understand it, the call to "mvn clean install" should go through the testing phase (tests are running ...), so exec-maven-plugin should be called, which should execute the main method. I'm right?

 D:\Eclipse-3.6.1-JSF\ws\exec-test>java -version java version "1.6.0_21" Java(TM) SE Runtime Environment (build 1.6.0_21-b07) Java HotSpot(TM) Client VM (build 17.0-b17, mixed mode, sharing) D:\Eclipse-3.6.1-JSF\ws\exec-test>mvn -version Apache Maven 2.2.1 (r801777; 2009-08-06 21:16:01+0200) Java version: 1.6.0_21 Java home: C:\Programme\Java\jdk1.6.0_21\jre Default locale: de_AT, platform encoding: Cp1252 OS name: "windows xp" version: "5.1" arch: "x86" Family: "windows" D:\Eclipse-3.6.1-JSF\ws\exec-test>mvn clean install [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] Building Unnamed - at.test:exec-test:jar:0.0.1-SNAPSHOT [INFO] task-segment: [clean, install] [INFO] ------------------------------------------------------------------------ [INFO] [clean:clean {execution: default-clean}] [INFO] Deleting directory D:\Eclipse-3.6.1-JSF\ws\exec-test\target [INFO] [resources:resources {execution: default-resources}] [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] Copying 0 resource [INFO] [compiler:compile {execution: default-compile}] [INFO] Compiling 1 source file to D:\Eclipse-3.6.1-JSF\ws\exec-test\target\classes [INFO] [resources:testResources {execution: default-testResources}] [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] Copying 0 resource [INFO] [compiler:testCompile {execution: default-testCompile}] [INFO] Compiling 1 source file to D:\Eclipse-3.6.1-JSF\ws\exec-test\target\test-classes [INFO] [surefire:test {execution: default-test}] [INFO] Surefire report directory: D:\Eclipse-3.6.1-JSF\ws\exec-test\target\surefire-reports TESTS Running at.test.ExecTestTest JUnit Test call: end of junit test. Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.031 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 [INFO] [jar:jar {execution: default-jar}] [INFO] Building jar: D:\Eclipse-3.6.1-JSF\ws\exec-test\target\exec-test.jar [INFO] [install:install {execution: default-install}] [INFO] Installing D:\Eclipse-3.6.1-JSF\ws\exec-test\target\exec-test.jar to D:\maven.m2\repository\at\test\exec-test\0.0.1-SNAPSHOT\exec-test-0.0.1-SNAPSHOT.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 3 seconds [INFO] Finished at: Thu Mar 10 12:07:08 CET 2011 [INFO] Final Memory: 15M/37M [INFO] ------------------------------------------------------------------------ D:\Eclipse-3.6.1-JSF\ws\exec-test>mvn exec:java -Dexec.mainClass="at.test.ExecTest" [INFO] Scanning for projects... [INFO] Searching repository for plugin with prefix: 'exec'. Downloading: http://pced06.vab.sozvers.at:8080/artifactory/repo/org/codehaus/mojo/exec-maven-plugin/1.2/exec-maven-plugin-1.2.pom 6K downloaded (exec-maven-plugin-1.2.pom) Downloading: http://pced06.vab.sozvers.at:8080/artifactory/repo/org/codehaus/mojo/exec-maven-plugin/1.2/exec-maven-plugin-1.2.jar 35K downloaded (exec-maven-plugin-1.2.jar) [INFO] ------------------------------------------------------------------------ [INFO] Building Unnamed - at.test:exec-test:jar:0.0.1-SNAPSHOT [INFO] task-segment: [exec:java] [INFO] ------------------------------------------------------------------------ [INFO] Preparing exec:java [WARNING] Removing: java from forked lifecycle, to prevent recursive invocation. [INFO] No goals needed for project - skipping [INFO] [exec:java {execution: default-cli}] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 7 seconds [INFO] Finished at: Thu Mar 10 12:07:20 CET 2011 [INFO] Final Memory: 5M/15M [INFO] ------------------------------------------------------------------------ D:\Eclipse-3.6.1-JSF\ws\exec-test> 

now changed pom.xml again:

 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>at.test</groupId> <artifactId>exec-test</artifactId> <version>0.0.1-SNAPSHOT</version> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <build> <finalName>exec-test</finalName> <defaultGoal>install</defaultGoal> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.6</source> <target>1.6</target> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <!-- http://www.vineetmanohar.com/2009/11/3-ways-to-run-java-main-from-maven/ --> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.2</version> <executions> <execution> <id>compile-reports</id> <phase>test</phase> <goals> <goal>java</goal> </goals> <configuration> <mainClass>at.test.ExecTest</mainClass> </configuration> </execution> </executions> </plugin> </plugins> </pluginManagement> </build> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.2</version> </dependency> </dependencies> 

Main class:

 package at.test; public class ExecTest { /** * @param args */ public static void main(String[] args) { System.out.println("##################################"); } } 

And the JUnit testing class:

 package at.test; import org.junit.Test; import at.test.ExecTest; public class ExecTestTest { @Test public void testTestTest() { System.err.println("JUnit Test call:"); ExecTest.main(null); System.err.println("end of junit test."); } } 
+4
source share
3 answers

Finally, I found the problem. There was a pretty dumb mistake:

In pom.xml, I used <pluginManagement> around the <plugins> node.

Maven did not complain, but ignored all plugin configurations. Maybe someone can use this information ...

Thank you for your help!

+13
source

The compilation phase may not be acceptable, have you tried

  <phase>test</phase> 
+2
source

If you set it to phase compilation, you need to tell maven that you need to compile at startup. You do not go through any stages with the maven command. You should have mvn compile exec:java ... or higher (test, install, ...).

This is my use of the exec maven plugin (with the mvn clean package):

  <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.2</version> <executions> <execution> <phase>test</phase> <goals> <goal>java</goal> </goals> </execution> </executions> <configuration> <mainClass>com.xxx.LanguageGenerator</mainClass> <arguments> <argument>${project.build.outputDirectory}/build/PMLanguage.xls</argument> <argument>PM${project.version}</argument> <argument>${project.build.outputDirectory}/com/laco/projectmaster/props/resources</argument> <argument>Created during maven build (POM Version: ${project.version})</argument> </arguments> </configuration> </plugin> 
+1
source

Source: https://habr.com/ru/post/1342003/


All Articles