[ 
https://jira.codehaus.org/browse/MAVEN-1127?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michael Osipov closed MAVEN-1127.
---------------------------------

    Resolution: Won't Fix

Please refer to 
https://cwiki.apache.org/confluence/display/MAVEN/The+Great+JIRA+Cleanup+of+2014
 if you're wondering why this issue was closed out.

> decouple artifact type implementations from maven core
> ------------------------------------------------------
>
>                 Key: MAVEN-1127
>                 URL: https://jira.codehaus.org/browse/MAVEN-1127
>             Project: Maven 1
>          Issue Type: New Feature
>          Components: core
>         Environment: all
>            Reporter: John Casey
>         Attachments: changes.patch, decoupled-artifact-types.patch, org.zip
>
>   Original Estimate: 6 hours
>  Remaining Estimate: 6 hours
>
> This is a copy of the proposal email I send to the dev list
> (http://nagoya.apache.org/eyebrowse/ReadMsg?listName=d...@maven.apache.org&msgNo=13740):
> While I find the plugin architecture of maven to be fantastic, I have run 
> into a somewhat serious barrier to my own plugin development
> efforts: adding support for new artifacts requires some pretty significant 
> changes to the maven core, and results in a requirement that I maintain a 
> patch for each artifact type.
> The Problem
> ----------------------------
> The concept of artifact types is intimately coupled with the rest of the 
> maven core implementation. There seems to be no real compelling reason for 
> this; each artifact type has a base set of operations which can be performed 
> against it (with high overlap between types: install, install-snapshot, 
> deploy, deploy-snapshot), and one or more plugins which are the primary 
> producers/consumers of it. While I would agree that certain artifact types 
> are fundamental to maven operation, it can also be stated that certain 
> plugins are similarly fundamental. Therefore, for these plugins, the concept 
> of decoupling via plugin architecture is flawed. In order to change the 
> plugin in any significant way, a change to the maven core may be required to 
> support changes to the artifact type. In addition, this inherently limits 
> plugin development by giving a hard-and-fast set of artifact types which can 
> be manipulated by maven.
> The Solution
> ---------------------------
> Simply put, decouple artifact type implementations from the maven core. 
> Instead of having a concrete implementation specifying attributes about a 
> .jar, EJB, or .pom, factor out the common behavior (aforementioned 
> permutations of install and deploy) into an interface, called 
> ArtifactTypeHandler. Then, create concrete implementations of this interface 
> for each type. Finally, add a new dynamic type handler loader (factory class) 
> which will do the following:
> 1. Pull the <type>typename</type> attribute from a dependency, or otherwise 
> arrive at the artifact type desired.
> 2. Read the classpath resource META-INF/artifactTypes/typename; line 1 of 
> this file specifies the fully-qualified class name for the type handler.
> 3. Instantiate this handler class, and return it as the implementation to use 
> in manipulating this artifact.
> This is a variation on the JAR service discovery method specified in the 
> JDK1.3, and allows each _plugin_ to add an artifact type handler for its own 
> use. Unrecognized artifact types (i.e. the handler jar is not in the 
> classpath, and therefore the META-INF/artifactTypes/typename resource is not 
> present) can be ignored or throw an exception. 
> Justification
> ------------------------
> Under this new architecture, the only artifact-related code in maven-core is 
> the ArtifactTypeHandlerFactory and the abstract [interface] 
> ArtifactTypeHandler. This frees maven up to be a general build tool, agnostic 
> of what type of artifacts it is handling. DLL's, C headers, configuration 
> files, etc. are all perfectly usable within the maven repository scheme. 
> Maven is only limited by the plugins available for it at this point, and 
> plugin development is not limited by the release cycle for maven-core.
> I can produce a patch against maven to accomplish this, if there is adequate 
> interest...



--
This message was sent by Atlassian JIRA
(v6.1.6#6162)

Reply via email to