[ https://issues.apache.org/jira/browse/MNG-8097?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17850036#comment-17850036 ]
ASF GitHub Bot commented on MNG-8097: ------------------------------------- kwin commented on code in PR #529: URL: https://github.com/apache/maven-site/pull/529#discussion_r1617266482 ########## content/apt/pom.apt.vm: ########## @@ -271,13 +271,20 @@ mvn install:install-file -Dfile=non-maven-proj.jar -DgroupId=some.group -Dartifa you browse the Maven central repository, you will notice that the classifiers <<<sources>>> and <<<javadoc>>> are used to deploy the project source code and API docs along with the packaged class files. + The classifier may also be derived from the <<type>> in case the related {{{/ref/current/maven-core/artifact-handlers.html} artifact handler}} defines one. + * <<type>>:\ Corresponds to the chosen dependency type. This defaults to <<<jar>>>. While it usually represents - the extension on the filename of the dependency, that is not always the case: a type can be mapped to a + the extension of the referenced artifact, that is not always the case: a type can be mapped to a different extension and a classifier. The type often corresponds to the packaging used, though this is also not always the case. Some examples are <<<jar>>>, <<<ejb-client>>> and <<<test-jar>>>: see {{{/ref/current/maven-core/artifact-handlers.html}default artifact handlers}} for a list. New types can be defined by plugins that set <<<extensions>>> to true, so this is not a complete list. + + In case there is an artifact handler defined there are <two> different ways of referencing the same dependency: Review Comment: > by removal of "filename", the term "extension" is suddenly changing it's meaning (maven extension? this was my first thought while trying to comprehend the message) you kind of said the opposite in https://github.com/apache/maven/pull/1466#issuecomment-2054144734. This is the extension of the artifact which is not necessarily the extension of the filename! >> The depensency extension is told by type. Deoendency is never "anywhere on disk", it may come from repo only. > did you maybe mix up the "former and latter"? yes, good catch will fix. > I find this very confusing all in all. Type is type, why do you want to mixin here file extension First of all, there was a mention of file extension before this PR, with this PR I only refer to artifact extension (do you find this part confusing???). This PR rather clarifies that there may be two ways to reference the same artifact, examples: 1. ``` <dependency> <groupId>org.project</groupId> <artifactId>reusable-test-support</artifactId> <version>1.0</version> <classifier>tests</classifier> </dependency> ``` vs. ``` <dependency> <groupId>org.project</groupId> <artifactId>reusable-test-support</artifactId> <version>1.0</version> <type>test-jar</type> </dependency> 2. ``` <dependency> <groupId>org.project</groupId> <artifactId>my-osgi-bundle</artifactId> <version>1.0</version> </dependency> ``` vs. ``` <dependency> <groupId>org.project</groupId> <artifactId>my-osgi-bundle</artifactId> <version>1.0</version> <type>bundle</type> <! > Validate that each dependency->type is a type registered in an artifact > handler > ------------------------------------------------------------------------------- > > Key: MNG-8097 > URL: https://issues.apache.org/jira/browse/MNG-8097 > Project: Maven > Issue Type: New Feature > Reporter: Konrad Windszus > Priority: Major > > Currently often the dependency's type is being set to the extension and the > resolution is lenient, i.e. if there is no artifact handler defining the > value given in {{dependency->type}} resolution transparently uses the type as > extension. > That can potentially lead to two issues: > 1. Resolution might fail with surprising error messages like > {code} > Could not resolve dependencies for project ....: The following artifacts > could not be resolved: <gav>: Could not transfer artifact > <groupId>:<artifactId>:<unknown-type>:<version> from/to ... > {code} > This is an issue for all types not defined by Maven Core itself, e.g. for > https://jackrabbit.apache.org/filevault-package-maven-plugin/index.html which > registers an artifact handler for type {{content-package}} with extension > {{zip}}. > 2. The information {{addedToClasspath}}, {{includesDependencies}} and > {{classifier}} from the artifact handler is not evaluated > Compare with > https://maven.apache.org/repositories/artifacts.html#but-where-do-i-set-artifact-extension -- This message was sent by Atlassian Jira (v8.20.10#820010)