Maven does not distinguish between direct and indirect dependencies. Changing this inside m2e will almost certainly break many existing projects and will introduce unnecessary confusion to the users. It may also result in unwanted/unexpected interference with maven "nearest-first" dependency conflict resolution approach, but I can be wrong here (have not really thought about it, to be honest). I do not believe this is a good change for m2e.
At the same time, m2e APIs allow customization of Maven Dependencies classpath, including classpath visibility rules, so you should be able to implement behaviour you describe in a standalone (eclipse) plugin, without making changes to m2e. -- Regards, Igor On 12-03-12 7:45 AM, Stefan Rademacher wrote:
Hi, I know the dependency:analyze goal, which does exactly, what I'd like to be integrated into m2e: Recognize dependencies, which aren't declared explicitly. Igor, which other metadata do you think is needed? Wouldn't it be sufficient to check, if a dependency is declared directly in the project's pom? In a non-maven project, .classpath would look like this: <classpathentry kind="lib" path="libs/somelib.jar" sourcepath="libs/somelib.jar"> <accessrules> <accessrule kind="nonaccessible" pattern="**"/> </accessrules> </classpathentry> Is it possible to define such "nonaccessible" rule for liraries within "org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"? Best regards, Stefan >>> <[email protected]> 09.03.2012 18:00 >>> Date: Thu, 08 Mar 2012 18:40:10 -0500 From: Igor Fedorenko <[email protected]> To: Maven Integration for Eclipse users mailing list <[email protected]>,[email protected] Subject: Re: [m2e-users] Code completion only for direct dependencies Message-ID: <[email protected]> Content-Type: text/plain; charset=UTF-8 There is no notion of classpath access rules in Maven, so m2e simply does not have the metadata needed. Until this is supported in maven core, there is not much we can do in m2e. -- Sent from my SGS Stefan Rademacher <[email protected]> wrote: >Hi, > >we are currently moving our complete build management from Ant to >Maven. One advantage now is the strong dependency management, >especially for transitive dependencies. > >But within eclipse, there is a big downside, that we didn't see before: >The code completion allows every developer to use classes from any >transitive dependency, even though it isn't explicitly declared in our >pom. >An example: An open source library uses Google Guava internally, but we >- for some reason - don't want to use it in our code. The "Maven >Dependencies" in Eclipse contain Google Guava, because it is needed by >that 3rd party library, and is consequently also offered in the Eclipse >code completion. > >Is there a way to tell m2e to restrict the access only to the direct >dependencies, declared in our pom.xml? Maybe by generating Eclipse >access rules for the "Maven Dependencies" Classpath Container? > >Thank you very much and best regards >Stefan >_______________________________________________ >m2e-users mailing list >[email protected] >https://dev.eclipse.org/mailman/listinfo/m2e-users _______________________________________________ m2e-users mailing list [email protected] https://dev.eclipse.org/mailman/listinfo/m2e-users
_______________________________________________ m2e-users mailing list [email protected] https://dev.eclipse.org/mailman/listinfo/m2e-users
