ruffp ruffp - 1 year ago 70
Java Question

How to reference a non-maven project (in eclipse workspace) from a maven project?

I am working on a new project which is a plugin for a product.

I use maven to build my plugin (zip) but I need to reference the source code of the product which is defined in my Eclipse workspace. But this source code is not managed by Maven and I do not want to migrate it.

Is it possible to refers this workspace project by any way? (maven plugins, workaround welcome).

The dependency is just needed for the compilation inside Eclipse but will not be packaged in the plugin itself (


I have also m2e in Eclipse and I want to keep this configuration when I make a "Maven Update".

UPDATE: I am looking for a solution which will work with a
mvn clean install
on a command line because I want to be able to execute the build from a CI platform (e.g. Jenkins)

Answer Source

Because I have already the compiled source and I do not need to recompile them (or to modify anything) I decided to package them using the pom assembly.

I made a separate project (under the same parent's than my plugins developement projects) called like openemm-src:

  Parent project (openemm-plugin-dev)
       |- plugin-1
       |- plugin-2
       |- openemm-src 
              |- pom.xml 

The pom.xml for the openemm-src project looks like:

<project xmlns="" xmlns:xsi="" xsi:schemaLocation="">
    <name>OpenEMM Source Code Library</name>
                        <id>make-assembly</id> <!-- this is used for inheritance merges -->
                        <phase>package</phase> <!-- bind to the packaging phase -->


and the file src/assembly/src-plugin.xml:



After this, I refers the jar from the siblings projects like this:


This solution is looking more like a workaround, but this is because the OpenEMM project does not have any "Plugin Template Project" to be managed with Maven.

Note this is just a partial configuration and I had also to refers to the Agnitas libraries which did not contains all the source code (both were necessary to compile my code).