You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Zoltán Forgó (Jira)" <ji...@apache.org> on 2020/12/21 12:52:00 UTC

[jira] [Created] (MDEP-732) unpack - artifactItem type attribute ignored

Zoltán Forgó created MDEP-732:
---------------------------------

             Summary: unpack - artifactItem type attribute ignored
                 Key: MDEP-732
                 URL: https://issues.apache.org/jira/browse/MDEP-732
             Project: Maven Dependency Plugin
          Issue Type: Bug
          Components: unpack
    Affects Versions: 3.1.2
            Reporter: Zoltán Forgó


If an existing artifact which has other types (e.g. test-jar) needs to be unpacked the type attribute is getting ignored. Always jar type used.
{code:xml}
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>3.1.2</version>
    <executions>
        <execution>
            <id>share-tests</id>
            <phase>generate-test-sources</phase>
            <goals>
                <goal>unpack</goal>
            </goals>
            <configuration>
                <artifactItems>
                    <artifactItem>
                        <groupId>io.github.zforgo.stackoverflow</groupId>
                        <artifactId>shared-tests</artifactId>
                        <version>0.1.0-SNAPSHOT</version>
                        <type>test-jar</type>
                        <outputDirectory>${project.build.directory}/alternateLocation</outputDirectory>
                    </artifactItem>
                </artifactItems>
            </configuration>
        </execution>
    </executions>
</plugin>
{code}
 While running {{mvn install}} the log says
{noformat}
[INFO] 
[INFO] --- maven-dependency-plugin:3.1.2:unpack (share-tests) @ project ---
[INFO] Configured Artifact: io.github.zforgo.stackoverflow:shared-tests:0.1.0-SNAPSHOT:test-jar
[INFO] Unpacking [...] shared-tests/0.1.0-SNAPSHOT/shared-tests-0.1.0-SNAPSHOT.jar to [...] with includes "" and excludes ""
[INFO] 
{noformat}
It seems {{ArtifactItem}} was configured well but the {{Artifact}} is wrong.

After some debugging it seems {{AbstractFromConfigurationMojo}} didn't set type attribute when creating {{Artifact}} from {{ArtifactItem}}.

Related code:
{code:java}
    protected Artifact getArtifact( ArtifactItem artifactItem )
        throws MojoExecutionException
    {
        Artifact artifact;

        try
        {
// ...
            ProjectBuildingRequest buildingRequest = newResolveArtifactProjectBuildingRequest();

            if ( localRepositoryDirectory != null )
            {
                buildingRequest =
                    repositoryManager.setLocalRepositoryBasedir( buildingRequest, localRepositoryDirectory );
            }

            // Map dependency to artifact coordinate
            DefaultArtifactCoordinate coordinate = new DefaultArtifactCoordinate();
            coordinate.setGroupId( artifactItem.getGroupId() );
            coordinate.setArtifactId( artifactItem.getArtifactId() );
            coordinate.setVersion( artifactItem.getVersion() );
            coordinate.setClassifier( artifactItem.getClassifier() );

            final String extension;
            ArtifactHandler artifactHandler = artifactHandlerManager.getArtifactHandler( artifactItem.getType() );

            //...
        }
        catch ( ArtifactResolverException e )
        {
            throw new MojoExecutionException( "Unable to find/resolve artifact.", e );
        }

        return artifact;
    }{code}
The {{DefaultArtifactCoordinate}} sets type to {{jar}} and there is no place where it was updated. Because of this wrong artifact will be unpacked.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)