Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

"Hide" a maven artifact from the eclipse autocomplete

For reasons I don't even want to begin to get into.. I have a maven hierarchy that looks like the one below. In a nutshell, everything requires commonslang3, except one ancient artifact that requires commonslang2.

We have no issues with compile or runtime, the dependencies work as expected. The challenge we are having is at development time.

We'd like to ensure everyone on the team uses the commonslang3 APIs, but occasionally (because of the ancient artifact and Eclipse auto suggest), someone accidentally uses the commonslang2 APIs.

Normally, we would just force the desired version in our POM, but commonslang is a special snowflake. The package signature changed between comonslang2 and commonslang3, which means we would have compile failures if we excluded the older library. E.g.,

  • org.apache.commons.lang3.StringUtils
  • org.apache.commons.lang.StringUtils

My question is this, how can I configure maven/Eclipse, to use commonlang2 as needed during compile... but not populate it in the Eclipse class autosuggest list? My desired end state is that someone types 'stringuti' + ctrl + space, and the only option they see is commonslang3. I am aware that each developer can remove individual classes via (Window->Preferences->Java->Appearance->Type Filters) but that is not a viable solution for two reasons: 1) It's a large team with frequently changing resources... 2) I need an entire artifact removed, as in hundreds of classes.

Example Tree:

MyWar
  -- MyModuleJar1
     -- ...
  -- MyModuleJar2
     -- LibA
        -- commonslang
        -- ... 
     -- LibB
        -- commonslang3   
        -- ...
     -- LibC
        -- commonslang3
        -- ...
     -- ...
like image 773
Skylar Sutton Avatar asked Nov 09 '22 09:11

Skylar Sutton


1 Answers

In Eclipse: Window->Preferences->Java->Appearance->Type Filters

Add org.apache.commons.lang.*

Because you want to affect auto-complete which is a function of the IDE, you are forced to change the setting in the IDE. You can export the preferences and share them of the rest of the team.

like image 187
JustinKSU Avatar answered Nov 14 '22 22:11

JustinKSU