Refactor and improve version in ServerPackCreator
Instead of printing the version into VERSION.txt, ServerPackCreator should use the intended way:
in build.gradle:
launch4j {
mainClassName = 'de.griefed.serverpackcreator.Main'
jarTask = project.tasks.jar
fileDescription = "An application to create a server pack from any given Forge or Fabric Minecraft modpack."
version = project.version
textVersion = project.version
windowTitle = "ServerPackCreator"
copyright = "GNU Lesser General Public License v2.1"
downloadUrl = "https://github.com/Griefed/serverpackcreator/releases"
supportUrl = "https://github.com/Griefed/serverpackcreator/issues"
libraryDir = 'libraries'
outputDir = 'libs'
icon = "${projectDir}/backend/main/resources/de/griefed/resources/gui/icon.ico"
}
[...]
bootJar {
// Customize MANIFEST to include relevant information.
manifest {
attributes "Start-Class" : "de.griefed.serverpackcreator.Main",
"Description" : "Create server packs from Minecraft modpacks.",
"Built-By" : System.getProperty("user.name"),
"Build-Timestamp": new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ").format(new Date()),
"Created-By" : "Gradle ${gradle.gradleVersion}",
"Build-Jdk" : "${System.getProperty('java.version')} (${System.getProperty('java.vendor')} ${System.getProperty('java.vm.version')})",
"Build-OS" : "${System.getProperty('os.name')} ${System.getProperty('os.arch')} ${System.getProperty('os.version')}",
"Implementation-Version" : "${project.version}"
}
}
[...]
jar {
// No duplicates
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
// Include all libraries in our JAR-file.
from {
configurations.embed.findAll { it.name.endsWith('jar') }.collect { zipTree(it) }
}
// Customize MANIFEST to include relevant information.
manifest {
attributes(
"Main-Class" : "de.griefed.serverpackcreator.Main",
"Class-Path" : configurations.embed.findAll { it.name.endsWith('jar') }.collect { zipTree(it) },
"Description" : "Create server packs from Minecraft modpacks.",
"Built-By" : System.getProperty("user.name"),
"Build-Timestamp": new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ").format(new Date()),
"Created-By" : "Gradle ${gradle.gradleVersion}",
"Build-Jdk" : "${System.getProperty('java.version')} (${System.getProperty('java.vendor')} ${System.getProperty('java.vm.version')})",
"Build-OS" : "${System.getProperty('os.name')} ${System.getProperty('os.arch')} ${System.getProperty('os.version')}",
"Implementation-Version" : "${project.version}"
)
}
}
[...]
in gradle.properties:
group=de.griefed
org.gradle.daemon=false
version=dev
Then build with ./gradlew -Pversion="$NEW_VERSION" about installQuasar cleanFrontend assembleFrontend copyDist build createExe --info which will result in files, excluding .exe, being build with the version appended and Manifest including it. By code, this can then be retrieved with Main.class.getPackage().getImplementationVersion()
If build is executed with ./gradlew about installQuasar cleanFrontend assembleFrontend copyDist build createExe --info then files, excluding .exe, will be appended with dev. When using Main.class.getPackage().getImplementationVersion() this will also return dev
Changes need to be made in:
- build.gradle
- launch4j
- Set
version = project.version - Set
textVersion = project.version
- Set
- bootJar
- Add
"Implementation-Version" : "${project.version}"to manifest
- Add
- jar
- Add
"Implementation-Version" : "${project.version}"to manifest
- Add
- launch4j
- gradle.properties
- Add
version=dev
- Add
- Dockerfile
- Add
ARG VERSION=dev - Change build command to
./gradlew -Pversion=$VERSION about installQuasar cleanFrontend assembleFrontend copyDist build --info --no-daemon -x test && \ mv tmp/serverpackcreator/build/libs/serverpackcreator-$VERSION.jar tmp/serverpackcreator/build/libs/serverpackcreator.jar
- Add
- .gitlab-ci.yml
- Gradle Test:
- Change
mv build/libs/serverpackcreator.jar build/libs/ServerPackCreator-$CI_COMMIT_REF_NAME.jartomv build/libs/serverpackcreator-dev.jar build/libs/ServerPackCreator-$CI_COMMIT_REF_NAME.jar
- Change
- Build Release:
- Change
"./gradlew installQuasar cleanFrontend assembleFrontend copyDist build createExeto"./gradlew -Pversion=${CI_COMMIT_TAG} installQuasar cleanFrontend assembleFrontend copyDist build createExe - Change
mv build/libs/serverpackcreator.jar build/libs/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}.jartomv build/libs/serverpackcreator-${CI_COMMIT_TAG}.jar build/libs/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}.jar - Change
mv build/libs/serverpackcreator-javadoc.jar build/libs/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}-javadoc.jartomv build/libs/serverpackcreator-${CI_COMMIT_TAG}-javadoc.jar build/libs/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}-javadoc.jar - Change
mv build/libs/serverpackcreator-sources.jar build/libs/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}-sources.jartomv build/libs/serverpackcreator-${CI_COMMIT_TAG}-sources.jar build/libs/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}-sources.jar
- Change
- Build Docker Release:
- Add
--build-arg VERSION=$CI_COMMIT_TAG
- Add
- Build Docker PreRelease:
- Add
--build-arg VERSION=$CI_COMMIT_TAG
- Add
- Gradle Test:
- github-prerelease.yml
- Change
./gradlew installQuasar cleanFrontend assembleFrontend copyDist build createExe --info -x testto./gradlew -Pversion=${{steps.tag.outputs.tag}} installQuasar cleanFrontend assembleFrontend copyDist build createExe --info -x test - Change
mv build/libs/serverpackcreator.jar build/libs/ServerPackCreator-${{steps.tag.outputs.tag}}.jartomv build/libs/serverpackcreator-${{steps.tag.outputs.tag}}.jar build/libs/ServerPackCreator-${{steps.tag.outputs.tag}}.jar - Change
mv build/libs/serverpackcreator-javadoc.jar build/libs/ServerPackCreator-${{steps.tag.outputs.tag}}-javadoc.jartomv build/libs/serverpackcreator-${{steps.tag.outputs.tag}}-javadoc.jar build/libs/ServerPackCreator-${{steps.tag.outputs.tag}}-javadoc.jar - Change
mv build/libs/serverpackcreator-sources.jar build/libs/ServerPackCreator-${{steps.tag.outputs.tag}}-sources.jartomv build/libs/serverpackcreator-${{steps.tag.outputs.tag}}-sources.jar build/libs/ServerPackCreator-${{steps.tag.outputs.tag}}-sources.jar
- Change
- github_release.yml
- Add
echo "version=${NEW_VERSION}" > backend/main/resources/VERSION.txt - Change
./gradlew installQuasar cleanFrontend assembleFrontend copyDist build createExe --info -x testto./gradlew -Pversion=${{steps.tag.outputs.tag}} installQuasar cleanFrontend assembleFrontend copyDist build createExe --info -x tes - Change
mv build/libs/serverpackcreator-${{steps.tag.outputs.tag}}.exe build/libs/ServerPackCreator-${{steps.tag.outputs.tag}}.exetomv build/libs/serverpackcreator.exe build/libs/ServerPackCreator-${{steps.tag.outputs.tag}}.exe
- Add
- ApplicationProperties:
- Change acquisition of Version to
String version = ApplicationProperties.class.getPackage().getImplementationVersion();
if (version != null) {
this.serverPackCreatorVersion = version;
} else {
this.serverPackCreatorVersion = "dev";
}
jar {...} and publishing {...} can be completely removed.