Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Blocker
-
Resolution: Not A Bug
-
Affects Version/s: 2.0.9
-
Fix Version/s: None
-
Component/s: Dependencies
-
Labels:None
-
Environment:OS : Windows Server 2003
JDK: IBM JDK 1.5 sr8 edition and IBM JDK 1.6
-
Complexity:Intermediate
-
Testcase included:yes
-
Number of attachments :
Description
We have been using a "parent pom" that specifies the plugin dependencies for our projects. This parent pom has been in use for more than a year. We have been using IBM JDK 1.5 sr4 until recently, and we had no problems building the parent pom. However for the upcoming release we upgraded to IBM JDK 1.5 sr8. Upon upgrade to the sr8 edition, when we tried to build the parent pom, the build process incorrectly tried to search for specified plugin dependencies, and since these specified plugin dependencies are built AFTER the parent pom is built the build process fails with the error message that it could not find the plugin-dependencies in order to proceed with building the parent pom.
We encountered the same issue with IBM JDK 1.6 as well. Since many of the developers who use our product will be using IBM JDK 1.6, we need to resolve this issue for both IBM JDK1.5 sr8 and IBM JDK 1.6.
We did NOT encounter this issue with the Sun JDK 1.6. This led us to approach IBM to investigate the issue as it appeared that this maybe an IBM JDK specific issue. We sent our test case to them, and they reported to us that suspect that maven code could be depending on the hashmap ordering, which is breaking the dependency check.
They instructed us to post this issue to the maven issue tracking and they will follow up with the maven folks.
Attached is the test case to reproduce the problem. Please read the file how_to_reproduce.txt in the attached. IBM folks will provide you with the needed JDK's.
Attachments
Issue Links
| This issue is related to: | ||||
| MNG-3106 | Multiple profile activation conditions broken |
|
|
|
That one is nice. The build failure (Unable to build project for plugin 'com.ebay.ebox.maven.plugin.sr8:maven-v4-plugin') or build success ultimatively depend on the POM profile "ebox-v4-prebuild" being active or not. If the profile is active, it introduces a dependency on the mentioned plugin which can't be resolved yet.
The relevant piece of info about the profile "ebox-v4-prebuild" is that it employs multiple activation conditions. Before
MNG-3106was fixed in r656820, the first and only the first matching profile activator would determine the actiation status. The activators are looked up from the Plexus container with a non-deterministic order. Now, with JDK 1.5 sr4, the activator responsible for <file> was checked before the one responsible for <property>. As ".v4prebuild" does not exist, the file activator caused the profile to be disabled. In newer JDKs, the order of the activators was reversed, so this time the property activator was queried first, and it deemed the profile active as the property "skip.v4.prebuild" is not set.Newer Maven versions handle multiple activators as logically ORed, so they will activate the profile, regardless of the activators order. So you would need to update your profile activation conditions.
MNG-3106was fixed in r656820, the first and only the first matching profile activator would determine the actiation status. The activators are looked up from the Plexus container with a non-deterministic order. Now, with JDK 1.5 sr4, the activator responsible for <file> was checked before the one responsible for <property>. As ".v4prebuild" does not exist, the file activator caused the profile to be disabled. In newer JDKs, the order of the activators was reversed, so this time the property activator was queried first, and it deemed the profile active as the property "skip.v4.prebuild" is not set. Newer Maven versions handle multiple activators as logically ORed, so they will activate the profile, regardless of the activators order. So you would need to update your profile activation conditions.