[
https://issues.apache.org/jira/browse/MNG-2028?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Herve Boutemy updated MNG-2028:
-------------------------------
Description:
I am using an attached version of the directory assembly plugin. I also have a
multi-module project that is several levels deep. Here's an overview
{noformat}
myproject
tools
libraries
library1
library2
library3
{noformat}
If I configure the attached directory assembly plugin in library1's POM and
then run maven install from the myproject directory, I get errors about
dependency resolution because the presence of the @aggregator tag causes maven
to try and resolve dependencies for all modules in the entire project. That
means it's trying to resolve dependencies for library3, which is a problem if
library3 depends on library2, which hasn't been built yet.
It makes sense to me that dependency resolution should only happen on the
sub-modules of the POM that configures the aggregator plugin, not all modules
in the project.
If this makes sense then I think the fix would be in
DefaultPluginManager.executeMojo():
{code}
if ( mojoDescriptor.isDependencyResolutionRequired() != null )
{
Collection projects;
if ( mojoDescriptor.isAggregator() && project.getModules() != null
&& !project.getModules().isEmpty())
{
List modules = project.getModules();
projects = new ArrayList(modules.size());
for (Iterator itr = modules.iterator(); itr.hasNext();) {
String module = (String) itr.next();
MavenProject moduleProject = // load the project for the
module...don't know exactly how to do this
projects.add(moduleProject);
}
}
...
{code}
was:
I am using an attached version of the directory assembly plugin. I also have a
multi-module project that is several levels deep. Here's an overview
myproject
tools
libraries
library1
library2
library3
If I configure the attached directory assembly plugin in library1's POM and
then run maven install from the myproject directory, I get errors about
dependency resolution because the presence of the @aggregator tag causes maven
to try and resolve dependencies for all modules in the entire project. That
means it's trying to resolve dependencies for library3, which is a problem if
library3 depends on library2, which hasn't been built yet.
It makes sense to me that dependency resolution should only happen on the
sub-modules of the POM that configures the aggregator plugin, not all modules
in the project.
If this makes sense then I think the fix would be in
DefaultPluginManager.executeMojo():
if ( mojoDescriptor.isDependencyResolutionRequired() != null )
{
Collection projects;
if ( mojoDescriptor.isAggregator() && project.getModules() != null
&& !project.getModules().isEmpty())
{
List modules = project.getModules();
projects = new ArrayList(modules.size());
for (Iterator itr = modules.iterator(); itr.hasNext();) {
String module = (String) itr.next();
MavenProject moduleProject = // load the project for the
module...don't know exactly how to do this
projects.add(moduleProject);
}
}
...
> Attached mojos with the @aggregator tag can yield bad results in a
> multi-module project
> ---------------------------------------------------------------------------------------
>
> Key: MNG-2028
> URL: https://issues.apache.org/jira/browse/MNG-2028
> Project: Maven
> Issue Type: Bug
> Components: Plugins and Lifecycle
> Affects Versions: 2.0.2
> Reporter: John Didion
> Priority: Major
>
> I am using an attached version of the directory assembly plugin. I also have
> a multi-module project that is several levels deep. Here's an overview
> {noformat}
> myproject
> tools
> libraries
> library1
> library2
> library3
> {noformat}
> If I configure the attached directory assembly plugin in library1's POM and
> then run maven install from the myproject directory, I get errors about
> dependency resolution because the presence of the @aggregator tag causes
> maven to try and resolve dependencies for all modules in the entire project.
> That means it's trying to resolve dependencies for library3, which is a
> problem if library3 depends on library2, which hasn't been built yet.
> It makes sense to me that dependency resolution should only happen on the
> sub-modules of the POM that configures the aggregator plugin, not all modules
> in the project.
> If this makes sense then I think the fix would be in
> DefaultPluginManager.executeMojo():
> {code}
> if ( mojoDescriptor.isDependencyResolutionRequired() != null )
> {
> Collection projects;
> if ( mojoDescriptor.isAggregator() && project.getModules() !=
> null && !project.getModules().isEmpty())
> {
> List modules = project.getModules();
> projects = new ArrayList(modules.size());
> for (Iterator itr = modules.iterator(); itr.hasNext();) {
> String module = (String) itr.next();
> MavenProject moduleProject = // load the project for the
> module...don't know exactly how to do this
> projects.add(moduleProject);
> }
> }
> ...
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)