Thursday 15 August 2013

Gradle Manifest.MF -



Gradle Manifest.MF -

what i'm looking combine both pre-created manifest.mf file project dynamically created manifest file jar task in gradle.

is there way this? i'm generating manifest files entirely:-

jar.dofirst { manifest { def requiredprojects = '' configurations.compile.getalldependencies().withtype(projectdependency).each {dep-> def dependantprojects = dep.getdependencyproject() def projects = project(dependantprojects.path).libsdir.list().findall{it.endswith('.jar')} projects.removeall(projects.findall{it.endswith('test.jar')}) def requiredproject = projects.join(' ') requiredprojects += requiredproject.replaceall(/ /,'%20') + ' ' logger.info 'required project: ' + requiredproject } logger.info 'required requiredprojects: ' + requiredprojects def compilefiles = configurations.compile.files{ instanceof externaldependency }.collect { file file = "lib/${file.name}" }.join(' ') def manifestpath = requiredprojects + compilefiles logger.info 'manifest: '+ manifestpath attributes 'class-path': manifestpath attributes 'build-date': new date(); attributes 'application-version': project.version } }

i know i'll have /meta-inf/manifest.mf file.

originally using osgi plugin gradle, seems ignore manifest file , generate huge mess.

edit

i've looked quite bit, carlo i've found next code allow me read existing manifest.mf:-

jar { onlyif { !compilejava.source.empty } manifest { // benutze das im projekt vorliegende file, falls vorhanden: def manif = "${projectdir}/meta-inf/manifest.mf" if (new file(manif).exists()) { (manif) { eachentry { details -> if (details.key == 'bundle-vendor') { details.value = 'xyz gmbh' } } } } else { logger.info(project.name + " doesn't have meta-inf/manifest.mf.") manifest.attributes provider: xyz gmbh' manifest.attributes project: project.name manifest.attributes build: new date() } } // re-create if have these: file ('plugin.xml') file ('plugin.properties') ('icons') { // if ... filetree('icons') } }

http://forums.gradle.org/gradle/topics/how_to_deal_with_eclipse_projects_and_manifest_files

i've found project called 'wuff' aims help building osgi projects gradle.

https://github.com/akhikhl/wuff

in end i've managed wanted using next code:-

jar.dofirst { manifest { def manifestfile = "${projectdir}/meta-inf/manifest.mf" if ( new file( manifestfile ).exists() ) ( manifestfile ) def requiredprojects = '' configurations.compile.getalldependencies().withtype(projectdependency).each {dep-> def dependantprojects = dep.getdependencyproject() def projects = project(dependantprojects.path).libsdir.list().findall{it.endswith('.jar')} projects.removeall(projects.findall{it.endswith('test.jar')}) def requiredproject = projects.join(' ') requiredprojects += requiredproject.replaceall(/ /,'%20') + ' ' logger.info 'required project: ' + requiredproject } logger.info 'required requiredprojects: ' + requiredprojects def compilefiles = configurations.compile.files{ instanceof externaldependency }.collect { file file = "lib/${file.name}" }.join(' ') def manifestpath = requiredprojects + compilefiles logger.info 'manifest: '+ manifestpath attributes 'class-path': manifestpath attributes 'build-date': new date(); attributes 'application-version': project.version } }

the of import lines beingness :-

def manifestfile = "${projectdir}/meta-inf/manifest.mf" if ( new file( manifestfile ).exists() ) ( manifestfile )

this allows me inherit existing /meta-inf/manifest.mf file , include classpath dependencies dynamically managed gradle.

gradle manifest

No comments:

Post a Comment