Am 08/04/16 um 18:44 schrieb Paul Benedict:
> In my own experience regarding the difficulty of naming something, it has
> always indicated the codebase is too big and multi-functional.
> 
> Thus, there are two paths to take:
> 1) Slap a brand name on it because no descriptive name can succinctly
> capture all the provided functionality
> 2) Break down the code base so you can apply individual descriptive names
> 
> So, perhaps a change of perspective could help here....

+1

> Has anyone thought about breaking apart Aether after the import?

It does a lot of different things and it overcomplicates things, in my
opinion. Maybe we should try to find a better interface than
'RepositorySystem'/split that up/review the API/improve the abstractions.

<https://git-wip-us.apache.org/repos/asf?p=maven-aether.git;a=blob;f=aether-api/src/main/java/org/eclipse/aether/RepositorySystem.java;h=8706f891afa2d76e1d90c54dc7ce8bb51c930dbd;hb=HEAD>

In my opinion the following methods do not belong there:

'install'
'collectDependencies'
'resolveDependencies'
'newLocalRepositoryManager'
'newSyncContext'
'newResolutionRepositories'
'newDeploymentRepository'

The methods to keep should be implemented differently. For example:

'resolveArtifact': Resolves the path for an artifact. The artifact will
be downloaded to the local repository if necessary.

The whole local repository logic should not be part of that. It's just a
cache to be put in front of it. Has nothing to do with a 'RepositorySystem'.

And then there is lack of features/use cases requested by users. Things
like getting the list of all available artifacts of a given group id.
Missing queries. A lot - if not all - of the methods of that interface
could be replaced by a yet to be implemented query language which can
capture all use-cases in a single place. Finding versions, finding
artifacts, finding paths. All simple queries. Deploy is the only one not
just querying but modifying the repository. That makes it 2 methods. One
for querying the repository. One for modifying the repository. You could
as well throw away Aether - just take what is needed to retain backwards
compatibility and start from scratch with something much more simple.
Leads to something like Maven Artifact Repository Query Language, for
example.

Regards,
-- 
Christian


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org

Reply via email to