mirror of
https://github.com/octoleo/plantuml.git
synced 2024-12-22 10:59:01 +00:00
7b1f67a57e
The XMLUnit DiffBuilder used can ignore element order, but still checks for correct nesting, which the string sorting could not.
194 lines
5.2 KiB
Plaintext
194 lines
5.2 KiB
Plaintext
// permits to start the build setting the javac release parameter, no parameter means build for java8:
|
|
// gradle clean build -x javaDoc -PjavacRelease=8
|
|
// gradle clean build -x javaDoc -PjavacRelease=17
|
|
// also supported is to build first, with java17, then switch the java version, and run the test with java8:
|
|
// gradle clean build -x javaDoc -x test
|
|
// gradle test
|
|
println("Running build.gradle.kts")
|
|
println(project.version)
|
|
|
|
val javacRelease = (project.findProperty("javacRelease") ?: "8") as String
|
|
|
|
plugins {
|
|
java
|
|
`maven-publish`
|
|
signing
|
|
// id("com.adarshr.test-logger") version "3.2.0"
|
|
}
|
|
|
|
group = "net.sourceforge.plantuml"
|
|
description = "PlantUML"
|
|
|
|
java {
|
|
withSourcesJar()
|
|
withJavadocJar()
|
|
registerFeature("pdf") {
|
|
usingSourceSet(sourceSets["main"])
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
compileOnly("org.apache.ant:ant:1.10.14")
|
|
|
|
testImplementation("io.github.glytching:junit-extensions:2.6.0")
|
|
testImplementation("org.assertj:assertj-core:3.24.2")
|
|
testImplementation("org.junit.jupiter:junit-jupiter:5.10.1")
|
|
testImplementation("org.xmlunit:xmlunit-core:2.9.+")
|
|
if (JavaVersion.current().isJava8) {
|
|
testImplementation("org.mockito:mockito-core:4.+")
|
|
testImplementation("org.mockito:mockito-junit-jupiter:4.+")
|
|
} else {
|
|
testImplementation("org.mockito:mockito-core:5.+")
|
|
testImplementation("org.mockito:mockito-junit-jupiter:5.+")
|
|
}
|
|
testImplementation("org.scilab.forge:jlatexmath:1.0.7")
|
|
|
|
"pdfRuntimeOnly"("org.apache.xmlgraphics:fop:2.9")
|
|
"pdfRuntimeOnly"("org.apache.xmlgraphics:batik-all:1.17")
|
|
}
|
|
|
|
repositories {
|
|
mavenLocal()
|
|
mavenCentral()
|
|
}
|
|
|
|
sourceSets {
|
|
main {
|
|
java {
|
|
srcDirs("src")
|
|
}
|
|
resources {
|
|
srcDirs("src")
|
|
include("**/graphviz.dat")
|
|
include("**/*.png")
|
|
include("**/*.svg")
|
|
include("**/*.txt")
|
|
}
|
|
}
|
|
test {
|
|
java {
|
|
srcDirs("test")
|
|
}
|
|
resources {
|
|
srcDirs(".")
|
|
include("skin/**/*.skin")
|
|
include("themes/**/*.puml")
|
|
}
|
|
}
|
|
}
|
|
|
|
tasks.compileJava {
|
|
if (JavaVersion.current().isJava8) {
|
|
java.targetCompatibility = JavaVersion.VERSION_1_8
|
|
} else {
|
|
options.release.set(Integer.parseInt(javacRelease))
|
|
}
|
|
}
|
|
|
|
tasks.withType<Jar>().configureEach {
|
|
manifest {
|
|
attributes["Main-Class"] = "net.sourceforge.plantuml.Run"
|
|
attributes["Implementation-Version"] = archiveVersion
|
|
attributes["Build-Jdk-Spec"] = System.getProperty("java.specification.version")
|
|
from("manifest.txt")
|
|
}
|
|
from("skin") { into("skin") }
|
|
from("stdlib") { into("stdlib") }
|
|
from("svg") { into("svg") }
|
|
from("themes") { into("themes") }
|
|
// source sets for java and resources are on "src", only put once into the jar
|
|
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
|
|
}
|
|
|
|
publishing {
|
|
publications.create<MavenPublication>("maven") {
|
|
from(components["java"])
|
|
pom {
|
|
name.set("PlantUML")
|
|
description.set("PlantUML is a component that allows to quickly write diagrams from text.")
|
|
groupId = project.group as String
|
|
artifactId = project.name
|
|
version = project.version as String
|
|
url.set("https://plantuml.com/")
|
|
licenses {
|
|
license {
|
|
name.set("The GNU General Public License")
|
|
url.set("http://www.gnu.org/licenses/gpl.txt")
|
|
}
|
|
}
|
|
developers {
|
|
developer {
|
|
id.set("arnaud.roques")
|
|
name.set("Arnaud Roques")
|
|
email.set("plantuml@gmail.com")
|
|
}
|
|
}
|
|
scm {
|
|
connection.set("scm:git:git://github.com:plantuml/plantuml.git")
|
|
developerConnection.set("scm:git:ssh://git@github.com:plantuml/plantuml.git")
|
|
url.set("https://github.com/plantuml/plantuml")
|
|
}
|
|
}
|
|
}
|
|
repositories {
|
|
maven {
|
|
name = "OSSRH"
|
|
val releasesRepoUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
|
|
val snapshotsRepoUrl = "https://oss.sonatype.org/content/repositories/snapshots/"
|
|
url = uri(if (version.toString().endsWith("SNAPSHOT")) snapshotsRepoUrl else releasesRepoUrl)
|
|
credentials {
|
|
username = System.getenv("OSSRH_USERNAME")
|
|
password = System.getenv("OSSRH_PASSWORD")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
tasks.withType<JavaCompile>().configureEach {
|
|
options.encoding = "UTF-8"
|
|
}
|
|
|
|
tasks.withType<Javadoc>().configureEach {
|
|
options {
|
|
this as StandardJavadocDocletOptions
|
|
addBooleanOption("Xdoclint:none", true)
|
|
addStringOption("Xmaxwarns", "1")
|
|
encoding = "UTF-8"
|
|
isUse = true
|
|
}
|
|
}
|
|
|
|
tasks.test {
|
|
doFirst {
|
|
println("Java Home:" + System.getProperty("java.home"));
|
|
println("Java Version: " + System.getProperty("java.version"));
|
|
}
|
|
useJUnitPlatform()
|
|
testLogging.showStandardStreams = true
|
|
}
|
|
|
|
val pdfJar by tasks.registering(Jar::class) {
|
|
group = "build" // OR for example, "build"
|
|
description = "Assembles a jar containing dependencies to create PDFs."
|
|
manifest.attributes["Main-Class"] = "net.sourceforge.plantuml.Run"
|
|
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
|
|
val dependencies = configurations.runtimeClasspath.get().map(::zipTree)
|
|
from(dependencies)
|
|
with(tasks.jar.get())
|
|
archiveAppendix.set("pdf")
|
|
}
|
|
|
|
signing {
|
|
if (hasProperty("signing.gnupg.keyName") && hasProperty("signing.gnupg.passphrase")) {
|
|
useGpgCmd()
|
|
} else if (hasProperty("signingKey") && hasProperty("signingPassword")) {
|
|
val signingKey: String? by project
|
|
val signingPassword: String? by project
|
|
useInMemoryPgpKeys(signingKey, signingPassword)
|
|
}
|
|
if (hasProperty("signing.gnupg.passphrase") || hasProperty("signingPassword")) {
|
|
sign(publishing.publications["maven"])
|
|
sign(closureOf<SignOperation> { sign(pdfJar.get()) })
|
|
}
|
|
}
|