[fix] combined packaging
This commit is contained in:
parent
4bcfaefcc0
commit
1fe7edc1f7
10 changed files with 362 additions and 10 deletions
51
scripts/build.xqm
Normal file
51
scripts/build.xqm
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
(:~ build utils for REPO packaging :)
|
||||
module namespace build = 'urn:quodatum:build1';
|
||||
|
||||
(:~ create a flat fat jar :)
|
||||
declare function build:fatjar-from-folder($input-dir as xs:string,$manifest-jar as xs:string)
|
||||
as xs:base64Binary {
|
||||
let $fold :=
|
||||
function ($res as map (*), $jar as xs:string) {
|
||||
let $bin :=file:read-binary($input-dir || $jar),
|
||||
$paths := archive:entries($bin)/string()
|
||||
[$jar eq $manifest-jar or not(starts-with( .,"META-INF/"))]
|
||||
return
|
||||
map { "name" : ($res? name, $paths),
|
||||
"content" : ($res? content,archive:extract-binary($bin, $paths)) }
|
||||
}
|
||||
let $res := fold-left(file:list($input-dir, false(), "*.jar"), map { }, $fold)
|
||||
return
|
||||
archive:create($res? name, $res? content,
|
||||
map { "format" : "zip", "algorithm" : "deflate" })
|
||||
};
|
||||
|
||||
(:~ create a fat jar with lib :)
|
||||
declare function build:fatjar-with-lib($input-dir as xs:string,$manifest-jar as xs:string)
|
||||
{
|
||||
let $bin :=file:read-binary($input-dir || $manifest-jar)
|
||||
|
||||
let $lib:=file:list($input-dir || "lib/", false(), "*.jar")!concat("lib/",.)
|
||||
let $name:= (archive:entries($bin)/string()
|
||||
,$lib)
|
||||
let $content:=(archive:extract-binary($bin,$name)
|
||||
,$lib!file:read-binary($input-dir || .))
|
||||
return archive:create($name, $content,
|
||||
map { "format" : "zip", "algorithm" : "deflate" })
|
||||
};
|
||||
|
||||
(:~ update-manifest :)
|
||||
declare function build:update-manifest($jar as xs:base64Binary,$main-class as xs:string)
|
||||
as xs:base64Binary{
|
||||
(: let $mf:=archive:extract-text($jar,"META-INF/MANIFEST.MF") :)
|
||||
|
||||
let $mf2:=concat("Manifest-Version: 1.0
Main-Class: ",
|
||||
$main-class,
|
||||
"

")
|
||||
return archive:update($jar,"META-INF/MANIFEST.MF",$mf2)
|
||||
};
|
||||
|
||||
(:~ update-manifest :)
|
||||
declare function build:update($jar as xs:base64Binary,$name as xs:string,$file as xs:string)
|
||||
as xs:base64Binary{
|
||||
archive:update($jar,$name,$file)
|
||||
};
|
||||
23
scripts/make-fat-jar.xq
Normal file
23
scripts/make-fat-jar.xq
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
|
||||
import module namespace build = 'urn:quodatum:build1' at 'build.xqm';
|
||||
|
||||
(: Main execution
|
||||
Main-Class: org.basex.modules.Hello
|
||||
:)
|
||||
let $config :=map {
|
||||
"manifest-jar" : "pdfbox-3.0.3.jar",
|
||||
"input-dir" : "C:\Users\mrwhe\git\expkg-zone58\pdfbox\jars\",
|
||||
"output" : "../lib/pdfbox-3.0.3.fat.jar",
|
||||
"main-class": "org.apache.pdfbox.Loader"
|
||||
}
|
||||
|
||||
let $fat-jar := build:fatjar-with-lib($config?input-dir,$config?manifest-jar)
|
||||
|
||||
let $fat-jar:=build:update-manifest($fat-jar, $config?main-class)
|
||||
let $name:=replace($config?main-class,"\.","/") || ".xqm"
|
||||
let $content:=file:read-binary($config?input-dir || "loader.xqm")
|
||||
let $fat-jar:=archive:update($fat-jar, $name,$content)
|
||||
let $output-file := file:resolve-path($config?output, $config?input-dir)
|
||||
return (file:write-binary($output-file, $fat-jar),
|
||||
trace($output-file,"fat jar: "))
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue