Was ich suche, ist die Kombination einer bereits erstellten Manifest.mf-Datei aus meinem Projekt mit der dynamisch erstellten Manifest-Datei aus der JAR-Task in Gradle.Gradle Manifest.MF
Gibt es eine Möglichkeit, dies zu tun? Zur Zeit bin ich zu erzeugen Manifest-Dateien vollständig: -
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{ it instanceof ExternalDependency }.collect {
File file = it
"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
}
}
Ich weiß, dass ich eine /META-INF/MANIFEST.MF Datei haben werden.
Ursprünglich habe ich das OSGI-Plugin für Gradle verwendet, aber dies scheint die Manifest-Datei zu ignorieren und eine große Unordnung zu erzeugen.
bearbeiten
Ich habe in diesem ziemlich viel sah, dank carlo ich den folgenden Code gefunden haben, wird mir erlauben, eine vorhandene MANIFEST.MF zu lesen: -
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()) {
from (manif) {
eachEntry { details ->
if (details.key == 'Bundle-Vendor') {
details.value = 'xyz GmbH'
}
}
}
}
else {
logger.info(project.name + " doesn't have a META-INF/MANIFEST.MF.")
manifest.attributes provider: xyz GmbH'
manifest.attributes project: project.name
manifest.attributes Build: new Date()
}
}
// copy if we have these:
from file ('plugin.xml')
from file ('plugin.properties')
into ('icons') { // if any ...
from fileTree('icons')
}
}
http://forums.gradle.org/gradle/topics/how_to_deal_with_eclipse_projects_and_manifest_files
Ich habe auch ein Projekt namens "Wuff" gefunden, das mit Gradle beim Aufbau von OSGi-Projekten helfen soll.
https://github.com/akhikhl/wuff