yetus-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Akira Ajisaka (Jira)" <>
Subject [jira] [Resolved] (YETUS-897) Incorrect usage of Maven profile
Date Wed, 11 Dec 2019 05:04:00 GMT


Akira Ajisaka resolved YETUS-897.
    Fix Version/s: 0.12.0
         Assignee: Priyank Bagrecha
       Resolution: Fixed

Committed to master. Thanks [~carlspring] for the report and thanks [~carlspring] for the

> Incorrect usage of Maven profile
> --------------------------------
>                 Key: YETUS-897
>                 URL:
>             Project: Yetus
>          Issue Type: Bug
>          Components: Audience Annotations
>            Reporter: Martin Todorov
>            Assignee: Priyank Bagrecha
>            Priority: Major
>             Fix For: 0.12.0
>          Time Spent: 50m
>  Remaining Estimate: 0h
> 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|] 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></groupId>
>           <artifactId></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></groupId>
>       <artifactId></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 {{}} 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
> 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

View raw message