Skip to main content

Lifecycle Mapping Issue in Eclipse

When converting a customized plugin to a Maven project, it is typically necessary to use org.idempiere.parent as the parent POM.

There are two methods to reference the parent POM:

  1. Adjust the relativePath to match the location of the parent POM.
  2. Install org.idempiere.parent into the local Maven repository (by running mvn install).

Issues with Each Method​

  • Method 1: Adjusting the relativePath becomes a nightmare when managing multiple customized plugins or using plugins from other sources.
  • Method 2: Using the local Maven repository can lead to lifecycle mapping issues, as reported here. This issue is also noted at the end of this article.

Workaround​

To avoid these issues, follow these steps:

  1. Group all customized plugins into a folder called project.extra.bundle.

  2. Create a sub.parent.pom.xml file with the following content:

    <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>org.idempiere</groupId>
    <artifactId>extra.sub.parent</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>Sub-parent for customized plugins</name>

    <parent>
    <groupId>org.idempiere</groupId>
    <artifactId>org.idempiere.parent</artifactId>
    <version>${revision}</version>
    <relativePath>[relative path to iDempiere workspace]/org.idempiere.parent/pom.xml</relativePath>
    </parent>
    </project>


  3. Customize plugins use sub.parent.pom.xml as parent

    <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>
    <parent>
    <groupId>org.idempiere</groupId>
    <artifactId>extra.sub.parent</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <relativePath>../sub.parent.pom.xml</relativePath>
    </parent>
    <groupId>vn.mygroupplugin</groupId>
    <artifactId>myplugin</artifactId>
    <packaging>eclipse-plugin</packaging>
    </project>

that way manage relativePath at one place on sub.parent.pom.xml

Redo Lifecycle Mapping Issue​

to redo issue open "org.adempiere.ui.zk/pom.xml" change ${revision} to 12.0.0-SNAPSHOT and get same issue

1745611004992

effect pom on both case use ${revision} and 12.0.0-SNAPSHOT is identify

but life cycle mapping is difference

for use 12.0.0-SNAPSHOT

1745611345134

for use ${revision}

1745611552885