[
https://issues.apache.org/jira/browse/IVY-1179?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12858325#action_12858325
]
Maarten Coene commented on IVY-1179:
------------------------------------
Thanks for the patch! Could you re-attach your files and check the "grant
license to ASF..." option?
> Packager resolver always extracts all files from archives even when the
> packaging instructions contains include tags
> --------------------------------------------------------------------------------------------------------------------
>
> Key: IVY-1179
> URL: https://issues.apache.org/jira/browse/IVY-1179
> Project: Ivy
> Issue Type: Bug
> Components: Core
> Affects Versions: 2.1.0, trunk
> Reporter: Stefan De Boey
> Priority: Minor
> Attachments: IVY-1179-unittests.zip, IVY-1179.patch
>
> Original Estimate: 2h
> Remaining Estimate: 2h
>
> According to the documentation the packager resolver should unzip/untar only
> specific files and folders (and not the complete archive) from downloaded
> resources in case the packager module description specfies include tags.
> Let's assume we have a module testng (example is taken from the examples in
> the Packager Resolver documentation) and we have a packager module descriptor
> (the packaging instructions) packager.xml specifying the following resource:
> {code:xml}
> <resource dest="archive" url="http://testng.org/${zipname}.zip"
> sha1="2ea19275dc17453306f8bb780fe6ef6e9af7756b">
> <include name="${zipname}/*.jar"/>
> </resource>
> {code}
> this instructs the package resolver to download the resources from
> http://testng.org/... and then extract the archive, but only all JAR files in
> the root of the archive.
> in this case only the JAR's in the ZIP file should be extracted from the
> resource, but that's not the case. at first i didn't notice this, but i was
> creating the packaging instructions for a project which is in a huge ZIP file
> and so i only wanted to extract the files that i actually needed, but i
> noticed that the extraction took way to long.
> i then configured the packager resolver to preserve the build directories
> (where the archive is extracted) for debugging purposes and i noticed that
> the complete archive was still extracted although the packager.xml file
> contained the necessary 'include' tags to only inluce 3 JAR's.
> when using the preserveBuildDirectories switch on the packager resolver, it's
> also possible to view the ANT build file packager-output.xml (this one is
> generated by the packager resolver based on the packaging instructions). this
> build file is executed by the package resolver to do the extraction process.
> this is the relevant part of the packager-output.xml file for the above
> mentioded example for TestNG:
> {code:xml}
> <unzip src="${resdir.N65541}${file.separator}${filename.N65541}"
> dest="archive">
> <fileset dir=".">
> <include name="testng-2.5/*.jar"/>
> </fileset>
> </unzip>
> {code}
> but this is incorrect and that's why the complete zip is still extracted. the
> 'fileset' tag should be used to indicate a set of ZIP files that need to be
> extracted, not to indicate which resources from the archive (specified in the
> 'src' attribute of the unzip tag) need to be included when extracting.
> 'patternset' is what we need here instead of 'fileset'
> the actual problem is situated in the file
> src/java/org/apache/ivy/plugins/resolver/packager/packager.xsl on line 420
> (in the ivy core project).
> {code:xml}
> <xsl:when test="$type = 'zip' or $type = 'war' or $type = 'jar'">
> <unzip src="{$file}" dest="{$dir}">
> <xsl:if test="$includes">
> <fileset dir=".">
> <xsl:copy-of select="$includes"/>
> </fileset>
> </xsl:if>
> </unzip>
> </xsl:when>
> {code}
> should be:
> {code:xml}
> <xsl:when test="$type = 'zip' or $type = 'war' or $type = 'jar'">
> <unzip src="{$file}" dest="{$dir}">
> <xsl:if test="$includes">
> <patternset>
> <xsl:copy-of select="$includes"/>
> </patternset>
> </xsl:if>
> </unzip>
> </xsl:when>
> {code}
> the same needs to be done for the TAR part in the packages.xsl file.
> i already tried this fix and it works.
> if that's OK, i'll create a patch for this and provide the necessary unit
> tests to illustrate the problem and the fix.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.