[ 
https://issues.apache.org/jira/browse/MDEP-955?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17888900#comment-17888900
 ] 

Elliotte Rusty Harold commented on MDEP-955:
--------------------------------------------

Good analysis. Thanks. Looksm like we should also remove setFileMappers and 
getFileMappers from Artifactitem

> unpack ignores global fileMappers
> ---------------------------------
>
>                 Key: MDEP-955
>                 URL: https://issues.apache.org/jira/browse/MDEP-955
>             Project: Maven Dependency Plugin
>          Issue Type: Bug
>          Components: unpack
>    Affects Versions: 3.8.0
>         Environment: Windows 11, Java 21, Maven 3.8.6, Maven Dependency 
> Plugin 3.8.0
>            Reporter: Jonah Bauer
>            Priority: Major
>
> I was trying to use the {{unpack}} goal to unpack multiple artifacts with a 
> similar structure (namely webjars) and rewrite their filenames using a common 
> file mapper. The {{unpack}} goal conveniently defines the property 
> {{fileMappers}} which seems suited for this use case. The configuration is as 
> follows
> {code:xml}
> <plugin>
>     <groupId>org.apache.maven.plugins</groupId>
>     <artifactId>maven-dependency-plugin</artifactId>
>     <version>3.8.0</version>
>     <executions>
>         <execution>
>             <id>unpack-libraries</id>
>             <phase>generate-resources</phase>
>             <goals>
>                 <goal>unpack</goal>
>             </goals>
>             <configuration>
>                 <artifactItems>
>                     <artifactItem>
>                         <groupId>org.webjars.npm</groupId>
>                         <artifactId>chart.js</artifactId>
>                         <version>${chartjs.version}</version>
>                     </artifactItem>
>                     <artifactItem>
>                         <groupId>org.webjars.npm</groupId>
>                         <artifactId>chartjs-adapter-date-fns</artifactId>
>                         <version>3.0.0</version>
>                     </artifactItem>
>                 </artifactItems>
>                 <includes>META-INF/resources/webjars/*/*/dist/**</includes>
>                 
> <outputDirectory>${project.build.directory}/generated-resources/libraries</outputDirectory>
>                 <fileMappers>
>                     
> <org.codehaus.plexus.components.io.filemappers.RegExpFileMapper>
>                         
> <pattern>^META-INF/resources/webjars/([^/]+)/[^/]+/dist/</pattern>
>                         <replacement>./$1/</replacement>
>                     
> </org.codehaus.plexus.components.io.filemappers.RegExpFileMapper>
>                 </fileMappers>
>             </configuration>
>         </execution>
>     </executions>
> </plugin>
> {code}
> This, however, does not work. While the artifacts are unpacked to the target 
> directory, the globally configured {{fileMappers}} did not seem to take any 
> effect.
> After looking into the code of {{UnpackMojo}} it seems the 
> {{UnpackMojo::getFileMappers}} method is unused. In 
> {{UnpackMojo::getProcessedArtifactItems}} the {{includes}} and {{excludes}} 
> of each artifact item are set to the globally configured values if empty, but 
> the file mappers are left unchanged.



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

Reply via email to