Transitive dependency resolution requires explicit version in a dependent child
pom
-----------------------------------------------------------------------------------
Key: NPANDAY-411
URL: https://issues.apache.org/jira/browse/NPANDAY-411
Project: NPanday
Issue Type: Bug
Components: Maven Plugins
Affects Versions: 1.3.1-incubating
Environment: $ mvn -v
Apache Maven 2.2.1 (rdebian-4)
Java version: 1.6.0_24
Java home: /usr/lib/jvm/java-6-sun-1.6.0.24/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux" version: "2.6.35-28-generic" arch: "amd64" Family: "unix"
Reporter: John R. Fallows
In the past, NPanday required the version of a dependency in pom.xml to be
explicit, whereas now that has been fixed so that a parent pom.xml can specify
the version in the dependencyManagement section instead.
Suppose we have 3 projects called Parent, Library and Executable. The Parent
pom refers to both Library and Executable projects as modules, and also acts as
the super pom for both Library and Executable projects. The Executable project
depends on the Library project. The Parent project defaults the version of
another dotnet-library (let's say ThirdParty) used by the Library project in
the Parent's dependencyManagement section.
The Library project builds successfully. However, when attempting to build the
Executable project, it complains during dependency resolution that the version
is missing from ThirdParty and the build fails. Now, while the version is
physically missing from the Library pom.xml file, it is not missing from the
effective pom for the Library and should therefore not give any error, just as
no error is given when the Library project builds.
WARNING: NPANDAY-180-003: Project Version is missing: Group Id = NUnit,
Artifact Id = NUnit.Framework
[INFO] ------------------------------------------------------------------------
[ERROR] FATAL ERROR
[INFO] ------------------------------------------------------------------------
[INFO] null
[INFO] ------------------------------------------------------------------------
[INFO] Trace
java.lang.NullPointerException
at npanday.dao.Project.hashCode(Project.java:329)
at java.util.HashMap.put(HashMap.java:372)
at java.util.HashSet.add(HashSet.java:200)
at npanday.dao.Project.addProjectDependency(Project.java:204)
at npanday.dao.ProjectFactory.createProjectFrom(ProjectFactory.java:147)
at
npanday.dao.impl.ProjectDaoImpl.storeProjectAndResolveDependencies(ProjectDaoImpl.java:866)
at
npanday.dao.impl.ProjectDaoImpl.storeProjectAndResolveDependencies(ProjectDaoImpl.java:414)
at
npanday.artifact.impl.AssemblyResolverImpl.resolveTransitivelyFor(AssemblyResolverImpl.java:131)
at
npanday.plugin.compile.ComponentInitializerMojo.execute(ComponentInitializerMojo.java:86)
at
org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
at
org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira