Potřebuju upravit soubor Manifestu při montáži VÁLCE souboru. Musím se přidat seznam všech souborů na class path, aby se zabránilo java.io.IOException: CreateProcess error=206, The filename or extension is too long
výjimkou je vyvolána, když je chci spustit to java soubor na počítači s Windows.
Prohlásil přímo v build skriptu tento úkol dělá práci.
task pathingWar(type: War) {
getArchiveAppendix().set("pathing")
doFirst {
manifest {
attributes "Class-Path": sourceSets.main.runtimeClasspath.files.collect { project.uri(it) }.join(" ")
}
}
}
Nicméně jsem chtěl vytvořit samostatný úkol v buildSrc adresáře jako v kódu níže. Válka je vytvořena s tras dodatek v názvu, ale není tam žádný další Class-Path
majetek uvnitř MANIFEST.MF
soubor, i když classpathFiles
proměnná obsahuje požadované hodnoty při ladění na provedení úkolu.
class PathingWar extends War {
PathingWar() {
getArchiveAppendix().set("pathing")
}
@TaskAction
def setManifestTask() {
def classpathFiles = ((SourceSet)((SourceSetContainer) getProject().getExtensions().getByName("sourceSets"))
.getByName("main")).getRuntimeClasspath().getFiles().collect {project.uri(it)}.join(" ")
setManifest(getManifest().attributes(["Class-Path": classpathFiles]))
}
}
Atributy nechce být nastavena na seznam, co jsem vynechal při překladu logické z build skript pro vlastní úkol?
Aktualizace
Po další kontrole jsem vidět, že když setManifestTask()
komentovaný s @TaskAction
je popraven, je již příliš pozdě. V tomto bodě války je generován pod build/libs
složky. Potřebuju další způsob konfigurace projeví. Nevím, který jiný přístup k použití.