Hi there, just for completeness. It's well possible to depend on implementation version using maven. Here is an abstract from one of my poms:
<build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>nbm-maven-plugin</artifactId> <configuration> <publicPackages> <publicPackage>de.adito.aditoweb.nbm.designerbase.*</publicPackage> </publicPackages> <moduleDependencies> <dependency> <id>org.netbeans.modules:org-netbeans-modules-projectui</id> <type>impl</type> <explicitValue>org.netbeans.modules.projectui = 201609300101</explicitValue> </dependency> <dependency> <id>org.netbeans.modules:org-netbeans-modules-git</id> <type>impl</type> <explicitValue>org.netbeans.modules.git = 201609300101</explicitValue> </dependency> <dependency> <id>org.netbeans.modules:org-netbeans-modules-versioning-util</id> <type>impl</type> <explicitValue>org.netbeans.modules.versioning.util = 201609300101</explicitValue> </dependency> <dependency> <id>org.netbeans.api:org-netbeans-modules-csl-api</id> <type>impl</type> <explicitValue>org.netbeans.modules.csl.api/2 = 2</explicitValue> </dependency> </moduleDependencies> <moduleType>eager</moduleType> </configuration> </plugin> </plugins> </build> With kind regards, Johannes Boesl Am 13.07.2018 um 01:11 schrieb Peter Nabbefeld: > > Hello all, > > I personally don't like "Friend" APIs, as really I like the idea of an > open, extensible IDE. > > From my point of view, Friend APIs make it difficult or impossible to > extend NetBeans for personal use: > - You have to ask for being added to the friends list. This is > especially a problem, if You want to implement some private-use > feature, e.g. for Your employer. > - Alternatively You could depend on the implementation version; but I > don't see how to do that, if You're using Maven. > - Third possibility is just patching the modules to remove the friends > and make the API public - very ugly, and You have to do it after every > update. > > OTOH, having a friends-only API leads to fewer dependencies on the > API, thus less impact from changes to the API, which makes work easier > for the developers, of course. > > However, if an API isn't stable, yet, it could also just be flagged as > "Under Development", thus telling users of those, that it is subject > to change. Also, as it is possible to use default methods in > interfaces from Java 8, it should be less of a problem to extend an > existing API. But You can use the API on Your own risk without any > conflicts. > > An exception of course is having APIs only for modularity, if classes > are spread over different modules and need an API to interact with > each other. In this case the API's purpose is not to integrate > extensions, but to split responsibilities - in this case I fully agree > these are not for public use. > > I'd be interested in comments on this - so, what do You think? > > Kind regards > > Peter > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > > For further information about the NetBeans mailing lists, visit: > https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists > > > >
