diff options
Diffstat (limited to 'pdf-as-web-db')
| -rw-r--r-- | pdf-as-web-db/build.gradle | 155 |
1 files changed, 132 insertions, 23 deletions
diff --git a/pdf-as-web-db/build.gradle b/pdf-as-web-db/build.gradle index c3e23701..5ba12625 100644 --- a/pdf-as-web-db/build.gradle +++ b/pdf-as-web-db/build.gradle @@ -1,39 +1,148 @@ plugins { - id 'java-library' - id 'eclipse' - id 'distribution' + id 'java-library' + id 'eclipse' + id 'distribution' +} + +configurations { + tomcatDist +} + +dependencies { + tomcatDist "org.apache.tomcat:tomcat:${tomcatVersion}@zip" } jar { - manifest { - attributes 'Implementation-Title': 'PDF-AS-5 Web Extension Library', 'JARMANIFEST': 'PDF-AS-LIB' - } + manifest { + attributes 'Implementation-Title': 'PDF-AS-5 Web Extension Library', 'JARMANIFEST': 'PDF-AS-LIB' + } } repositories { - mavenLocal() - mavenCentral() + mavenLocal() + mavenCentral() } dependencies { - implementation project (':pdf-as-web') - implementation project (':pdf-as-web-status') - implementation project (':pdf-as-web-statistic-api') - api "org.hibernate:hibernate-core:6.6.44.Final" - implementation group: 'ch.qos.logback', name: 'logback-classic', version: logbackVersion - implementation group: 'org.slf4j', name: 'slf4j-api', version: slf4jVersion + implementation project (':pdf-as-web') + implementation project (':pdf-as-web-status') + implementation project (':pdf-as-web-statistic-api') + api "org.hibernate:hibernate-core:6.6.44.Final" + implementation group: 'ch.qos.logback', name: 'logback-classic', version: logbackVersion + implementation group: 'org.slf4j', name: 'slf4j-api', version: slf4jVersion + runtimeOnly 'org.mariadb.jdbc:mariadb-java-client:3.5.6' + + testRuntimeOnly 'com.h2database:h2:2.4.240' +} + +/* + * Release-Bundle analog zu :pdf-as-web, erweitert um die DB-Extension. + */ +def tomcatVer = tomcatVersion +def tomcatDir = layout.buildDirectory.dir("tomcat-bundling") +def tomcatHome = tomcatDir.map { it.dir("apache-tomcat-${tomcatVer}") } +def releasesDirectory = layout.projectDirectory.dir("releases/${project.version}") +def webProject = project(':pdf-as-web') +def dbExtensionJar = tasks.named('jar', Jar) +def dbExtensionRuntimeClasspath = configurations.named('runtimeClasspath') + +tasks.register('extractTomcat', Sync) { + from({ + zipTree(configurations.tomcatDist.singleFile) + }) + into(tomcatDir) +} + +tasks.register('cleanWebAppsInTomcat', Delete) { + dependsOn('extractTomcat') + delete(tomcatHome.map { it.dir("webapps") }) +} + +tasks.register('putTemplateIntoTomcat', Copy) { + dependsOn('cleanWebAppsInTomcat') + from(webProject.layout.projectDirectory.dir("src/main/assembly/tomcat")) + into(tomcatHome) +} + +tasks.register('putConfigIntoTomcat', Copy) { + dependsOn(':pdf-as-lib:processResources', 'putTemplateIntoTomcat') + from(zipTree(project(':pdf-as-lib').layout.buildDirectory.file('resources/main/config/config.zip'))) + into(tomcatHome.map { it.dir("conf/pdf-as") }) +} + +tasks.register('putWebConfigIntoTomcat', Copy) { + dependsOn('putConfigIntoTomcat') + from(webProject.layout.projectDirectory.dir("src/main/configuration")) + into(tomcatHome.map { it.dir("conf/pdf-as") }) +} + +tasks.register('putDbExtensionIntoWebApp', Zip) { + dependsOn(dbExtensionJar, ':pdf-as-web:bootWar') + from(zipTree(webProject.tasks.named('bootWar').flatMap { it.archiveFile })) + from(dbExtensionJar.flatMap { it.archiveFile }) { + into 'WEB-INF/lib' + } + from(dbExtensionRuntimeClasspath) { + into 'WEB-INF/lib' + } + archiveFileName = "pdf-as-web-db-${project.version}.war" + destinationDirectory = layout.buildDirectory.dir('db-enhanced-webapp') + duplicatesStrategy = DuplicatesStrategy.EXCLUDE +} + +/* + * DB-Extension weiterhin auch separat als Lib-Verzeichnis ablegen. + * Das entspricht dem bisherigen Extension-Artefakt: eigenes JAR + Runtime-Dependencies. + */ +tasks.register('putDbExtensionLibs', Copy) { + dependsOn(dbExtensionJar) + from(dbExtensionJar.flatMap { it.archiveFile }) + from(dbExtensionRuntimeClasspath) + into(releasesDirectory.dir("pdf-as-web-db-extension-${project.version}/lib")) + duplicatesStrategy = DuplicatesStrategy.EXCLUDE +} - testRuntimeOnly 'com.h2database:h2:2.4.240' +tasks.register('injectPdfAsWebApp', Copy) { + dependsOn('putDbExtensionIntoWebApp', 'extractTomcat') + from(tasks.named('putDbExtensionIntoWebApp', Zip).flatMap { it.archiveFile }) { + rename { 'pdf-as-web.war' } + } + into(tomcatHome.map { it.dir("webapps") }) +} + +tasks.register('buildTomcatZip', Zip) { + dependsOn('injectPdfAsWebApp') + from(tomcatDir) + archiveFileName = "apache-tomcat-${tomcatVer}-pdf-as-web-db-${project.version}.zip" + destinationDirectory = layout.buildDirectory +} + +tasks.register('buildTomcatTar', Tar) { + dependsOn('injectPdfAsWebApp') + from(tomcatDir) + archiveFileName = "apache-tomcat-${tomcatVer}-pdf-as-web-db-${project.version}.tar" + destinationDirectory = layout.buildDirectory + compression = Compression.NONE +} + +tasks.register('releaseConfig', Copy) { + from(webProject.layout.projectDirectory.file('src/main/configuration/pdf-as-web.properties')) + into(releasesDirectory.dir("cfg")) } tasks.register('releases', Copy) { - from jar.outputs - from distZip.outputs - from distTar.outputs - into rootDir.toString() + "/releases/" + version + dependsOn(dbExtensionJar, 'sourcesJar', 'distZip', 'distTar', 'releaseConfig', 'putDbExtensionLibs', 'buildTomcatZip', 'buildTomcatTar') + + from(dbExtensionJar.flatMap { it.archiveFile }) + from(tasks.named('sourcesJar').flatMap { it.archiveFile }) + from(tasks.named('distZip').flatMap { it.archiveFile }) + from(tasks.named('distTar').flatMap { it.archiveFile }) + from(tasks.named('putDbExtensionIntoWebApp', Zip).flatMap { it.archiveFile }) + from(tasks.named('buildTomcatZip').flatMap { it.archiveFile }) + from(tasks.named('buildTomcatTar').flatMap { it.archiveFile }) + into(releasesDirectory) } -releases.dependsOn jar -releases.dependsOn sourcesJar -releases.dependsOn distZip -releases.dependsOn distTar +tasks.named('clean', Delete) { + delete(releasesDirectory) +} |
