[ https://issues.apache.org/jira/browse/YETUS-897?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Martin Todorov updated YETUS-897: --------------------------------- Description: 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:java} <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)? I haven't gone through all of your project's {{pom.xml}} files, but I suspect the same fix might be required elsewhere as well. Please, advise! Many thanks in advance! Kind regards, Martin was: 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:java} <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 > 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 > Priority: Major > > 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:java} > <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)? > I haven't gone through all of your project's {{pom.xml}} files, but I suspect > the same fix might be required elsewhere as well. > Please, advise! > Many thanks in advance! > Kind regards, > Martin -- This message was sent by Atlassian JIRA (v7.6.14#76016)