]> source.dussan.org Git - poi.git/commitdiff
optimize size of poi-ooxml-schemas by 40% by only including necessary *.xsb files
authorAndreas Beeker <kiwiwings@apache.org>
Sat, 5 Dec 2020 21:30:19 +0000 (21:30 +0000)
committerAndreas Beeker <kiwiwings@apache.org>
Sat, 5 Dec 2020 21:30:19 +0000 (21:30 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1884139 13f79535-47bb-0310-9956-ffa450edef68

build.xml

index 04240ba1095b3a60df4a9eef7ac5b5532c58da03..5ced1e8ddd300da4c0fda591ce38e56d6e53b422 100644 (file)
--- a/build.xml
+++ b/build.xml
@@ -1685,25 +1685,44 @@ under the License.
             </modulepath>
         </javac>
 
-        <local name="lite.classes"/>
-        <loadresource property="lite.classes">
-            <file file="${ooxml.lite.report}"/>
+        <copy file="${ooxml.lite.report}" tofile="build/ooxml-lite-classes.txt" overwrite="true">
             <filterchain>
                 <tokenfilter>
-                    <replaceregex pattern="(.*)" replace="\1.class \1$*.class "/>
+                    <replaceregex pattern="(.*)" replace="\1.class${line.separator}\1$*.class "/>
                 </tokenfilter>
-                <striplinebreaks/>
+            </filterchain>
+        </copy>
+
+        <local name="ooxml.lite.xsbs"/>
+        <loadresource property="ooxml.lite.xsbs">
+            <file file="${ooxml.lite.report}"/>
+            <filterchain>
+                <linecontains negate="true" matchany="true">
+                    <contains value="$"/>
+                    <contains value="TypeSystemHolder"/>
+                </linecontains>
+                <suffixlines suffix=".java"/>
             </filterchain>
         </loadresource>
 
+        <concat dest="build/ooxml-lite-classes.txt" append="true">
+            <filelist dir="build/xmlbean-sources" files="${ooxml.lite.xsbs}"/>
+            <filterchain>
+                <linecontains>
+                    <contains value="resolveHandle"/>
+                </linecontains>
+                <replaceregex pattern='.*"([^"]+)".*' replace="org/apache/poi/schemas/ooxml/system/ooxml/\1.xsb"/>
+            </filterchain>
+        </concat>
+
         <mkdir dir="build/dist/maven/poi-ooxml-schemas"/>
 
         <jar destfile="${ooxml.lite.jar}" duplicate="preserve">
             <zipfileset dir="${basedir}/src/multimodule/ooxml-lite/java9" prefix="META-INF/versions/9" excludes="*.java"/>
             <zipfileset src="${ooxml.xsds.jar}">
-                <patternset includes="${lite.classes}">
-                    <include name="org/apache/poi/schemas/*/system/**/*.xsb"/>
-                    <include name="org/apache/poi/schemas/*/element/**/*.xsb"/>
+                <patternset includesfile="build/ooxml-lite-classes.txt">
+                    <include name="org/apache/poi/schemas/ooxml/element/**/*.xsb"/>
+                    <include name="org/apache/poi/schemas/ooxml/system/ooxml/index.xsb"/>
                 </patternset>
             </zipfileset>
             <zipfileset dir="src/multimodule/ooxml-schemas/java9" prefix="META-INF/versions/9" excludes="*.java"/>