You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@maven.apache.org by Fiouz <fi...@gmail.com> on 2008/03/26 08:22:14 UTC
Multi-module reactor ignores classifiers? Unable to release
I couldn't send this message with the zip attachment, so I'm resending
without it (Thanks to Brian for helping me!)...
---------- Forwarded message ----------
From: Fiouz <fi...@gmail.com>
Date: Wed, Mar 26, 2008 at 12:41 AM
Subject: Multi-module reactor ignores classifiers? Unable to release
To: Maven Users List <us...@maven.apache.org>
Hi,
I'm facing some problems with the way Maven handles classifier-enabled
artifacts that are not yet installed into the local repository:
Consider the following multi-modules project:
- parent (reactor project, pom packaging)
- moduleA (jar packaging)
- moduleB (jar packaging)
The test-jar goal of the jar packager is enabled:
(http://maven.apache.org/guides/mini/guide-attached-tests.html)
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
moduleB defines a dependency to moduleA:
<dependency>
<groupId>${pom.groupId}</groupId>
<artifactId>moduleA</artifactId>
<classifier>tests</classifier>
<scope>test</scope>
</dependency>
If I try to build my project using the "verify" goal on the reactor
project (I haven't done any "install" goal yet), the dependency
resolving process fails on moduleB: it seems to ignore the previously
packaged module (that is, moduleA) and throws an error because it
can't find the GROUPID:moduleA:jar:tests:VERSION (replace
GROUPID/VERSION with actual values). Actually, it tries to retrieve it
from the configured repositories which obviously don't have the newly
created moduleA artifact.
One way I found to successfully compile moduleB is to execute the
"install" goal instead of the "verify" goal so that any module gets
installed in the local repository right before compiling the next one
in the reactor chain.
The problem is that *I don't want* to install those artifacts into the
local repository until every single module of my project gets
successfully packaged/tested.
I found that if I remove the "tests" classifier from my dependency,
the previously packaged artifact gets successfully resolved (but I
need this classifier).
The real story behind that requirement is that I'm trying to use the
maven-release-plugin and don't want it to set the
<preparationGoals>clean install verify</preparationGoals> option that
would cause any "to-be-tagged-but-not-snapshot-any-more" version of
my modules to be installed into
the local repository, before the whole preparation validation
successes. Installing modules before the whole preparation processes
would cause my local repository to be in an unstable state in case of
any subsequent failure of the "prepare" goal because artifacts are not
"SNAPSHOT"-qualified during the preparation process but some of them
could not be successfully installed/deployed.
Any idea on how I can resolve those dependencies without installing
them? (I'm using 2.0.8)
I may be lacking some Maven concepts, please kindly advise, thanks!
Attached: a sample project that exhibits my problem (configure the
scm/distributionManagement and run mvn release:prepare)
Regards,
--
Fiouz
--
Fiouz
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org