Hi,
I am using the maven-plugin-plugin for a hibernate project to provide a user plugin. I am finding the Mojo definition is not generated. I found a workaround for the issue. This discussion is related to the issue discussed here
http://mail-archives.apache.org/mod_mbox/maven-users/201303.mbox/ajax/%3C201303081348.35442.thomas%40koch.ro%3E

I'm using Java5 annotations to define things like the goal and lifecycle phase. There are no parameters for the Mojo. These are the only annotations defined in the Mojo.

...
@Mojo ( name="enhance", defaultPhase = LifecyclePhase.COMPILE )
@Execute ( goal ="enhance" , phase = LifecyclePhase.COMPILE )
public class MavenEnhancePlugin extends AbstractMojo implements EnhancementContext {
...

I've found the two descriptor files generated can be generated either with or without a Mojo definition. Depending on the execution of the goal 'package' happening sequentially once or twice. Two examples are provided to demonstrate this.
 These are two descriptor files referred to.

META-INF/maven/plugin.xml
META-INF/maven/org.hibernate.orm.tooling/hibernate-enhance-maven-plugin/plugin-help.xml

For comparison here is command line output. Some of it is omitted for brevity. You'll notice in "Example 2" after the second package goal execution there is a <mojo> tag in the descriptor.

Example 1)

$ mvn clean package -DskipTests
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------ [INFO] Building Enhance Plugin of the Hibernate project for use with Maven build system. 4.2.8.Final [INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ hibernate-enhance-maven-plugin --- [INFO] Deleting /run/media/whitingjr/theark/work/redhat/java/jboss/hibernate/hibernate-orm/hibernate-enhance-maven-plugin/target
[INFO]
[INFO] --- maven-plugin-plugin:3.2:descriptor (default-descriptor) @ hibernate-enhance-maven-plugin ---
[INFO] Using 'UTF-8' encoding to read mojo metadata.
[INFO] Applying mojo extractor for language: java-annotations
[INFO] Mojo extractor for language: java-annotations found 0 mojo descriptors.
[INFO] Applying mojo extractor for language: java
[INFO] Mojo extractor for language: java found 0 mojo descriptors.
[INFO] Applying mojo extractor for language: bsh
[INFO] Mojo extractor for language: bsh found 0 mojo descriptors.
[INFO]
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ hibernate-enhance-maven-plugin ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 3 resources
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ hibernate-enhance-maven-plugin --- [INFO] Compiling 1 source file to /run/media/whitingjr/theark/work/redhat/java/jboss/hibernate/hibernate-orm/hibernate-enhance-maven-plugin/target/classes
[INFO]
[INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ hibernate-enhance-maven-plugin ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /run/media/whitingjr/theark/work/redhat/java/jboss/hibernate/hibernate-orm/hibernate-enhance-maven-plugin/src/test/resources
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ hibernate-enhance-maven-plugin ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:2.10:test (default-test) @ hibernate-enhance-maven-plugin ---
[INFO] Tests are skipped.
[INFO]
[INFO] --- maven-jar-plugin:2.3.1:jar (default-jar) @ hibernate-enhance-maven-plugin --- [INFO] Building jar: /run/media/whitingjr/theark/work/redhat/java/jboss/hibernate/hibernate-orm/hibernate-enhance-maven-plugin/target/hibernate-enhance-maven-plugin-4.2.8.Final.jar
[INFO]
[INFO] --- maven-plugin-plugin:3.2:addPluginArtifactMetadata (default-addPluginArtifactMetadata) @ hibernate-enhance-maven-plugin --- [INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.005s
[INFO] Finished at: Thu Dec 19 10:17:23 GMT 2013
[INFO] Final Memory: 18M/333M
[INFO] ------------------------------------------------------------------------
$ cat target/classes/META-INF/maven/plugin.xml
<?xml version="1.0" encoding="UTF-8"?>

<!-- Generated by maven-plugin-tools 3.2 on 2013-12-19 -->

<plugin>
.....
  <mojos/>
.....
</plugin>
$ cat target/classes/META-INF/maven/org.hibernate.orm.tooling/hibernate-enhance-maven-plugin/plugin-help.xml
<?xml version="1.0" encoding="UTF-8"?>

<!-- Generated by maven-plugin-tools 3.2 on 2013-12-19 -->

<plugin>
<name>Enhance Plugin of the Hibernate project for use with Maven build system.</name>
  <description></description>
  <groupId>org.hibernate.orm.tooling</groupId>
<artifactId>hibernate-enhance-maven-plugin</artifactId>
  <version>4.2.8.Final</version>
  <goalPrefix>hibernate-enhance</goalPrefix>
  <mojos/>
</plugin>
$

Example 2)

$ mvn clean package package -DskipTests
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------ [INFO] Building Enhance Plugin of the Hibernate project for use with Maven build system. 4.2.8.Final [INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ hibernate-enhance-maven-plugin --- [INFO] Deleting /run/media/whitingjr/theark/work/redhat/java/jboss/hibernate/hibernate-orm/hibernate-enhance-maven-plugin/target
[INFO]
[INFO] --- maven-plugin-plugin:3.2:descriptor (default-descriptor) @ hibernate-enhance-maven-plugin ---
[INFO] Using 'UTF-8' encoding to read mojo metadata.
[INFO] Applying mojo extractor for language: java-annotations
[INFO] Mojo extractor for language: java-annotations found 0 mojo descriptors.
[INFO] Applying mojo extractor for language: java
[INFO] Mojo extractor for language: java found 0 mojo descriptors.
[INFO] Applying mojo extractor for language: bsh
[INFO] Mojo extractor for language: bsh found 0 mojo descriptors.
[INFO]
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ hibernate-enhance-maven-plugin ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 3 resources
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ hibernate-enhance-maven-plugin --- [INFO] Compiling 1 source file to /run/media/whitingjr/theark/work/redhat/java/jboss/hibernate/hibernate-orm/hibernate-enhance-maven-plugin/target/classes
[INFO]
[INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ hibernate-enhance-maven-plugin ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /run/media/whitingjr/theark/work/redhat/java/jboss/hibernate/hibernate-orm/hibernate-enhance-maven-plugin/src/test/resources
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ hibernate-enhance-maven-plugin ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:2.10:test (default-test) @ hibernate-enhance-maven-plugin ---
[INFO] Tests are skipped.
[INFO]
[INFO] --- maven-jar-plugin:2.3.1:jar (default-jar) @ hibernate-enhance-maven-plugin --- [INFO] Building jar: /run/media/whitingjr/theark/work/redhat/java/jboss/hibernate/hibernate-orm/hibernate-enhance-maven-plugin/target/hibernate-enhance-maven-plugin-4.2.8.Final.jar
[INFO]
[INFO] --- maven-plugin-plugin:3.2:addPluginArtifactMetadata (default-addPluginArtifactMetadata) @ hibernate-enhance-maven-plugin ---
[INFO]
[INFO] --- maven-plugin-plugin:3.2:descriptor (default-descriptor) @ hibernate-enhance-maven-plugin ---
[INFO] Using 'UTF-8' encoding to read mojo metadata.
[INFO] Applying mojo extractor for language: java-annotations
[INFO] Mojo extractor for language: java-annotations found 1 mojo descriptors.
[INFO] Applying mojo extractor for language: java
[INFO] Mojo extractor for language: java found 0 mojo descriptors.
[INFO] Applying mojo extractor for language: bsh
[INFO] Mojo extractor for language: bsh found 0 mojo descriptors.
[INFO]
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ hibernate-enhance-maven-plugin ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 3 resources
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ hibernate-enhance-maven-plugin ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ hibernate-enhance-maven-plugin ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /run/media/whitingjr/theark/work/redhat/java/jboss/hibernate/hibernate-orm/hibernate-enhance-maven-plugin/src/test/resources
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ hibernate-enhance-maven-plugin ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:2.10:test (default-test) @ hibernate-enhance-maven-plugin ---
[INFO] Tests are skipped.
[INFO]
[INFO] --- maven-jar-plugin:2.3.1:jar (default-jar) @ hibernate-enhance-maven-plugin ---
[INFO]
[INFO] --- maven-plugin-plugin:3.2:addPluginArtifactMetadata (default-addPluginArtifactMetadata) @ hibernate-enhance-maven-plugin --- [INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5.049s
[INFO] Finished at: Thu Dec 19 10:17:41 GMT 2013
[INFO] Final Memory: 21M/578M
[INFO] ------------------------------------------------------------------------
$ cat target/classes/META-INF/maven/plugin.xml
<?xml version="1.0" encoding="UTF-8"?>

<!-- Generated by maven-plugin-tools 3.2 on 2013-12-19 -->

<plugin>
......
  <mojos>
    <mojo>
      <goal>enhance</goal>
      <description>This plugin will enhance Entity objects.</description>
<requiresDirectInvocation>false</requiresDirectInvocation>
      <requiresProject>true</requiresProject>
      <requiresReports>false</requiresReports>
      <aggregator>false</aggregator>
      <requiresOnline>false</requiresOnline>
      <inheritedByDefault>true</inheritedByDefault>
      <phase>compile</phase>
      <executePhase>compile</executePhase>
      <executeGoal>enhance</executeGoal>
<implementation>org.hibernate.bytecode.enhance.plugins.MavenEnhancePlugin</implementation>
      <language>java</language>
<instantiationStrategy>per-lookup</instantiationStrategy>
<executionStrategy>once-per-session</executionStrategy>
      <threadSafe>false</threadSafe>
      <parameters>
        <parameter>
          <name>dir</name>
          <type>java.lang.String</type>
          <required>false</required>
          <editable>true</editable>
          <description></description>
        </parameter>
      </parameters>
      <configuration>
<dir implementation="java.lang.String" default-value="${project.build.outputDirectory}">${dir}</dir>
      </configuration>
    </mojo>
  </mojos>
....
</plugin>
$ cat target/classes/META-INF/maven/org.hibernate.orm.tooling/hibernate-enhance-maven-plugin/plugin-help.xml
<?xml version="1.0" encoding="UTF-8"?>

<!-- Generated by maven-plugin-tools 3.2 on 2013-12-19 -->

<plugin>
<name>Enhance Plugin of the Hibernate project for use with Maven build system.</name>
  <description></description>
  <groupId>org.hibernate.orm.tooling</groupId>
<artifactId>hibernate-enhance-maven-plugin</artifactId>
  <version>4.2.8.Final</version>
  <goalPrefix>hibernate-enhance</goalPrefix>
  <mojos>
    <mojo>
      <goal>enhance</goal>
      <description>This plugin will enhance Entity objects.</description>
<requiresDirectInvocation>false</requiresDirectInvocation>
      <requiresProject>true</requiresProject>
      <requiresReports>false</requiresReports>
      <aggregator>false</aggregator>
      <requiresOnline>false</requiresOnline>
      <inheritedByDefault>true</inheritedByDefault>
      <phase>compile</phase>
      <executePhase>compile</executePhase>
      <executeGoal>enhance</executeGoal>
<implementation>org.hibernate.bytecode.enhance.plugins.MavenEnhancePlugin</implementation>
      <language>java</language>
<instantiationStrategy>per-lookup</instantiationStrategy>
<executionStrategy>once-per-session</executionStrategy>
      <threadSafe>false</threadSafe>
      <parameters>
        <parameter>
          <name>dir</name>
          <type>java.lang.String</type>
          <required>false</required>
          <editable>true</editable>
          <description></description>
        </parameter>
      </parameters>
      <configuration>
<dir implementation="java.lang.String" default-value="${project.build.outputDirectory}">${dir}</dir>
      </configuration>
    </mojo>
  </mojos>
</plugin>
$

I would have expected the Mojo definition to be generated the first time the package goal is executed. Is this not supposed to work first time round ?

Regards,
Jeremy

$ java -version
java version "1.7.0_45"
OpenJDK Runtime Environment (fedora-2.4.3.0.fc19-x86_64 u45-b15)
OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)
$ mvn -version
Apache Maven 3.0.4 (r1232337; 2012-01-17 08:44:56+0000)
Maven home: /home/whitingjr/java/apache/maven/apache-maven-3.0.4
Java version: 1.7.0_45, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.3.0.fc19.x86_64/jre
Default locale: en_GB, platform encoding: UTF-8
OS name: "linux", version: "3.11.10-200.fc19.x86_64", arch: "amd64", family: "unix"

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org

Reply via email to