Hi all,

I started using the pom import feature (
http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Importing_Dependencies),
and discovered that it differed from my expectations.  What I was looking
for was a way to define a new artifact in a pom that, if used in a
consuming artifact's <dependencies>, would include all of the dependencies
in the referenced artifact.

For example, take DataNucleus.  I've defined my own pom for import purposes
that contains both the <dependencyManagement> section and <dependencies>
that are to be included.  It's at
https://github.com/matthewadams/datanucleus-rdbms/blob/master/pom.xml.

As a client, if I use the existing pom import support, then all I
effectively get are entries in my pom's <dependencyManagement> section.
 The inconvenient thing is, I still have to declare each of the imported
pom's dependencies that I want.  That kind of defeats the purpose of
defining a pom to be imported, IMHO.

Instead, I'd like to propose that a new scope be introduced called
"include", that implies <type>pom</type> so that all I have to do is use
the following in my consuming pom:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<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/maven-v4_0_0.xsd";>

<modelVersion>4.0.0</modelVersion>


 <groupId>me.matthewadams</groupId>

<artifactId>pom-include-client</artifactId>

<version>0.1.0.BUILD-SNAPSHOT</version>

<packaging>jar</packaging>


 <dependencies>

 <!--

 this dependency would pull in all dependencies listed

 in the referenced pom's <dependencies> section

 -->

 <dependency>

 <groupId>me.matthewadams</groupId>

 <artifactId>datanucleus-rdbms</artifactId>

 <!--

 <type>pom</type>

 implied by next line, so unnecessary; anything else is an error -->

 <scope>include</scope> <!-- NEW! different from "import"! -->

 <version>3.1.4</version>

 </dependency>

</dependencies>

</project>

This way, it's extremely convenient to get all the constituent artifacts
without having to declare them all.

Thoughts?

-matthew

-- 
mailto:[email protected] <[email protected]>
skype:matthewadams12
googletalk:[email protected]
http://matthewadams.me
http://www.linkedin.com/in/matthewadams

Reply via email to