Martin Todorov created YETUS-897: ------------------------------------ Summary: Incorrect usage of Maven profile Key: YETUS-897 URL: https://issues.apache.org/jira/browse/YETUS-897 Project: Yetus Issue Type: Bug Components: Audience Annotations Reporter: Martin Todorov
Hi, A transitive dependency of our Gradle project requires {{compile group: 'org.apache.yetus', name: 'audience-annotations', version: '0.10.0'}}. It appears we may be hitting a [bug in Gradle|https://github.com/gradle/gradle/issues/10058] in that it quite possibly doesn't handle {{system}}-scoped and {{optional}} dependencies properly. I had a look at your project's `pom.xml` files and there are actually issues with it as well. Consider the following snippet: {code} <profiles> <profile> <id>jdk1.8</id> <activation> <jdk>(,1.8]</jdk> </activation> <dependencies> <dependency> <!-- Version and location set in project pom --> <groupId>jdk.tools</groupId> <artifactId>jdk.tools</artifactId> <scope>system</scope> <!-- Mark as optional so that it isn't taken transitively --> <optional>true</optional> </dependency> </dependencies> </profile> </profiles> <dependencies> <dependency> <!-- Version and location set in project pom --> <groupId>jdk.tools</groupId> <artifactId>jdk.tools</artifactId> <scope>system</scope> <!-- Mark as optional so that it isn't taken transitively --> <optional>true</optional> </dependency> </dependencies> {code} What's the point in both having the {{jdk.tools}} dependencies define in a profile and then also in the main {{<dependencies/>}} section? If you move this dependency into the profile and remove the one from the main {{<dependencies/>}} section, and make the profile activated via a system property, or activate it through your {{settings.xml}} via the {{activeProfile}} section, this should be okay. I agree that theoretically, this is bad Maven practice, because it breaks build portability, but on the other hand, you're already breaking build portability by declaring a {{system}}-scoped dependency. Is it really necessary to depend on the {{tools.jar}}? If you're using a JDK to build the code, you should always have it on your classpath? What seems to be the issue that you're trying to solve, (which I appear to be missing)? Please, advise! Many thanks in advance! Kind regards, Martin -- This message was sent by Atlassian JIRA (v7.6.14#76016)