maven-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Joerg Schaible (JIRA)" <>
Subject [jira] Commented: (MNG-2290) Generated URLs in POMs of child modules
Date Thu, 02 Aug 2007 07:52:13 GMT


Joerg Schaible commented on MNG-2290:

I'm inclined to close this issue as invalid anyway. A lot of my initial description does not
really apply in the way I've described it - it was more or less a fact of my incomplete knowledge
of Maven. My complaints in the second part of the description about artifacts with the same
artifact id but different packaging is bad practice, since some plugins will fail to handle
such artifacts.

For the SCM URLs we separate meanwhile between two cases:

1/ A POM inherits form a global POM: In this case the global POM's SCM URLs are not related
to the POM inheriting the global POM's settings (since they define where the global POM's
releases are managed) and the SCM section must be defined always.

2/ A POM inherits from a direct parent POM: In our case this means that the children also
share the same release cycle i.e. from a Subversion SCM PoV the "trunk" is above the location
of the parent POM. This also means that the POMs of the children do not have a SCM section
at all, since they are never released standalone. Note, that the release plugin will also
not add such a section, it only modifies the parent POM.

Both cases work well and none of my original description applies.

So there's only the project's URL and the distribution URL left. Honestly, I did not play
yet with the site plugin enough to make any real valid comment on it. Our artifacts are too
fine grained for a useful automated site generation and we keep documentation differently.

> Generated URLs in POMs of child modules
> ---------------------------------------
>                 Key: MNG-2290
>                 URL:
>             Project: Maven 2
>          Issue Type: Improvement
>          Components: Inheritance and Interpolation
>    Affects Versions: 2.0.4
>            Reporter: Joerg Schaible
>             Fix For: 2.0.x
> Maven has quite some elements where a URL or a path is modified automatically for child
POMs (the ones I am currently aware of):
> - url
> - scm/connection
> - scm/developerConnection
> - scm/url
> - distributionManagement/site/url
> While expanding this path with "/${pom.artifactId}" sounds reasonable, this approach
fails badly for complex projects with more hierarchy levels. Suppose we have a directory structure
> * project
> ** core
> *** provider
> **** commons
> **** impl1
> In this hierarchy all POMs for _project_, _core_ and _provider_ are of package type _pom_,
while _commons_ and _impl1_ is of type _jar_. The "artifactId" approach now simply assumes
that all POMs in the hierarchy are named like the current directory. This does simply not
match. Suppose those jar artifacts are used in an enterprise or web app. Then every artifact
is located in one single directory and therefore the names have to be unique. But if you decide
to take an artifact name different to the directory name, you have to add the definition in
every POM, because the scm elements are simply wrong.
> An even worse scenario are components that can be provided using different technologies.
We have a lot of such structures:
> * component
> ** jar
> ** war
> ** ear
> * *_jar_:* the core functionality
> * *_war_:* the core functionality integrated and eccessible with a web application
> * *_ear_:* the complete component as enterprise app, if it makes sense to deploy the
functionality on a different app server
> _component_ has a POM of package type _pom_; _jar_, _war_ and _ear_ have POMs with the
according package type. All of the three POMs use the same artifactId though. In this case
not only the scm elements break, but also the URLs for the site, since they are all the same
for all three artifacts.
> All of this could have been avoided, if the expanded part is not the artifactId, but
the basename of the current directory. Especially for the scm elements, this is IMHO the only
valid assumption.
> It would already help us, if this auto-expansion could be turned off to allow the definition
of a single property in each POM for a correct interpolation of those values, but there seems
no such option ^1^. So you *have to* add those elements under all circumstances into every
> 1) The _tagBase_ of the release plugin does no such auto-expansion, which makes it quite
easy to use a property for it, that can be set individually in every POM without adding any
plugin configuration.

This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators:
For more information on JIRA, see:


View raw message