Garret Wilson created MASSEMBLY-993:
---------------------------------------

             Summary: Configuration option to specify artifact classifier.
                 Key: MASSEMBLY-993
                 URL: https://issues.apache.org/jira/browse/MASSEMBLY-993
             Project: Maven Assembly Plugin
          Issue Type: Improvement
            Reporter: Garret Wilson


Please add a {{classifier}} option to the Maven Assembly Plugin, similar to the 
[Spring Boot Maven Plugin option of the same 
name|https://docs.spring.io/spring-boot/docs/current/maven-plugin/reference/htmlsingle/#goals-repackage-parameters-details-classifier],
 to allow a POM to explicitly indicate what classifier to append to the end of 
the artifact.

Generated Maven artifacts have an option of a "classifier" such as {{javadoc}} 
or {{sources}}. This is placed on the end of a artifact base filename, such as 
{{foo-1.2.3-javadoc.jar}} or {{foo-1.2.3-sources}}. See the description of 
classifiers in the [Maven POM Reference|https://maven.apache.org/pom.html] for 
more details.

The Spring Boot Maven Plugin has a simple [configuration to set the 
classifier|https://docs.spring.io/spring-boot/docs/current/maven-plugin/reference/htmlsingle/#goals-repackage-parameters-details-classifier].
 Thus if I specify {{bar}} as my classifier, then Spring Boot Maven Plugin 
generates {{foo-1.2.3-bar.jar}}.

The Maven Assembly Plugin's only equivalent facility is indirect and arguably 
semantically incorrect. Instead of specifying a "classifier", the Assembly 
Plugin has a Boolean option to [append the assembly 
ID|https://maven.apache.org/plugins/maven-assembly-plugin/single-mojo.html#appendAssemblyId].
 The name of this option is a little unclear; what it's really saying is "use 
the assembly ID as the artifact classifier". Using the assembly ID as the 
classifier is not a bad default, but the problem is not allowing an option for 
an alternate classifier.

The drawback here is that the consumer of a public, published assembly 
descriptor _has no control over what the ID is defined within the descriptor_. 
There needs to be a way to specify the generated artifact classifier _at the 
point of plugin definition_, independent of what is defined in the descriptor. 
(Of course, if MASSEMBLY-992 were implemented, this would provide one 
workaround, although not solve the problem of consuming published artifact 
descriptors.)

As an example see https://github.com/symphoniacloud/lambda-packaging/issues/1 . 
Symphonia publishes a Maven Assembly Plugin descriptor, but the ID it uses (for 
reasons I outline in that ticket) is less than ideal. If the Assembly Plugin 
simply were to allow a {{classifier}} option like Spring Boot Maven Plugin 
does, the POM could simply choose whatever it wants, independent of the ID in 
the assembly descriptor.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to