diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d80438bd5cdffd5ecd018b19c24146856ea90375..33fe14f5e7dd8c7b95ed9dd470b5e47e25267142 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,9 +3,6 @@ image: maven:3.8.6-eclipse-temurin-17 build: script: - - cd CityDoctorBuildPlugin - - mvn install - - cd .. - cd CityDoctorParent - mvn verify artifacts: diff --git a/CityDoctorBuildPlugin/.gitignore b/CityDoctorBuildPlugin/.gitignore deleted file mode 100644 index 66cb48d523a405794bac7259ed6a730903572707..0000000000000000000000000000000000000000 --- a/CityDoctorBuildPlugin/.gitignore +++ /dev/null @@ -1,305 +0,0 @@ - -# Created by https://www.gitignore.io/api/java,maven,macos,linux,eclipse,windows,netbeans,intellij -# Edit at https://www.gitignore.io/?templates=java,maven,macos,linux,eclipse,windows,netbeans,intellij - - -# User specific -.sonarlint/ -Servers/ - -### Eclipse ### - -.metadata -bin/ -tmp/ -*.tmp -*.bak -*.swp -*~.nib -local.properties -.settings/ -.loadpath -.recommenders - -# External tool builders -.externalToolBuilders/ - -# Locally stored "Eclipse launch configurations" -*.launch - -# PyDev specific (Python IDE for Eclipse) -*.pydevproject - -# CDT-specific (C/C++ Development Tooling) -.cproject - -# CDT- autotools -.autotools - -# Java annotation processor (APT) -.factorypath - -# PDT-specific (PHP Development Tools) -.buildpath - -# sbteclipse plugin -.target - -# Tern plugin -.tern-project - -# TeXlipse plugin -.texlipse - -# STS (Spring Tool Suite) -.springBeans - -# Code Recommenders -.recommenders/ - -# Annotation Processing -.apt_generated/ - -# Scala IDE specific (Scala & Java development for Eclipse) -.cache-main -.scala_dependencies -.worksheet - -### Eclipse Patch ### -# Eclipse Core -.project - -# JDT-specific (Eclipse Java Development Tools) -.classpath - -# Annotation Processing -.apt_generated - -.sts4-cache/ - -### Intellij ### -# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm -# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 - -# User-specific stuff -.idea/**/workspace.xml -.idea/**/tasks.xml -.idea/**/usage.statistics.xml -.idea/**/dictionaries -.idea/**/shelf - -# Generated files -.idea/**/contentModel.xml - -# Sensitive or high-churn files -.idea/**/dataSources/ -.idea/**/dataSources.ids -.idea/**/dataSources.local.xml -.idea/**/sqlDataSources.xml -.idea/**/dynamic.xml -.idea/**/uiDesigner.xml -.idea/**/dbnavigator.xml - -# Gradle -.idea/**/gradle.xml -.idea/**/libraries - -# Gradle and Maven with auto-import -# When using Gradle or Maven with auto-import, you should exclude module files, -# since they will be recreated, and may cause churn. Uncomment if using -# auto-import. -# .idea/modules.xml -# .idea/*.iml -# .idea/modules - -# CMake -cmake-build-*/ - -# Mongo Explorer plugin -.idea/**/mongoSettings.xml - -# File-based project format -*.iws - -# IntelliJ -out/ - -# mpeltonen/sbt-idea plugin -.idea_modules/ - -# JIRA plugin -atlassian-ide-plugin.xml - -# Cursive Clojure plugin -.idea/replstate.xml - -# Crashlytics plugin (for Android Studio and IntelliJ) -com_crashlytics_export_strings.xml -crashlytics.properties -crashlytics-build.properties -fabric.properties - -# Editor-based Rest Client -.idea/httpRequests - -# Android studio 3.1+ serialized cache file -.idea/caches/build_file_checksums.ser - -### Intellij Patch ### -# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 - -# *.iml -# modules.xml -# .idea/misc.xml -# *.ipr - -# Sonarlint plugin -.idea/sonarlint - -### Java ### -# Compiled class file -*.class - -# Log file -*.log - -# BlueJ files -*.ctxt - -# Mobile Tools for Java (J2ME) -.mtj.tmp/ - -# Package Files # -*.jar -*.war -*.nar -*.ear -*.zip -*.tar.gz -*.rar - -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml -hs_err_pid* - -### Linux ### -*~ - -# temporary files which can be created if a process still has a handle open of a deleted file -.fuse_hidden* - -# KDE directory preferences -.directory - -# Linux trash folder which might appear on any partition or disk -.Trash-* - -# .nfs files are created when an open file is removed but is still being accessed -.nfs* - -### macOS ### -# General -.DS_Store -.AppleDouble -.LSOverride - -# Icon must end with two \r -Icon - -# Thumbnails -._* - -# Files that might appear in the root of a volume -.DocumentRevisions-V100 -.fseventsd -.Spotlight-V100 -.TemporaryItems -.Trashes -.VolumeIcon.icns -.com.apple.timemachine.donotpresent - -# Directories potentially created on remote AFP share -.AppleDB -.AppleDesktop -Network Trash Folder -Temporary Items -.apdisk - -### Maven ### -target/ -pom.xml.tag -pom.xml.releaseBackup -pom.xml.versionsBackup -pom.xml.next -release.properties -dependency-reduced-pom.xml -buildNumber.properties -.mvn/timing.properties -.mvn/wrapper/maven-wrapper.jar - -### NetBeans ### -**/nbproject/private/ -**/nbproject/Makefile-*.mk -**/nbproject/Package-*.bash -build/ -nbbuild/ -dist/ -nbdist/ -.nb-gradle/ - -### Windows ### -# Windows thumbnail cache files -Thumbs.db -ehthumbs.db -ehthumbs_vista.db - -# Dump file -*.stackdump - -# Folder config file -[Dd]esktop.ini - -# Recycle Bin used on file shares -$RECYCLE.BIN/ - -# Windows Installer files -*.cab -*.msi -*.msix -*.msm -*.msp - -# Windows shortcuts -*.lnk - -# End of https://www.gitignore.io/api/java,maven,macos,linux,eclipse,windows,netbeans,intellij -/.gradle/ - - -### Gradle ### -.gradle -**/build/ -!src/**/build/ - -# Ignore Gradle GUI config -gradle-app.setting - -# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) -!gradle-wrapper.jar - -# Avoid ignore Gradle wrappper properties -!gradle-wrapper.properties - -# Cache of project -.gradletasknamecache - -# Eclipse Gradle plugin generated files -# Eclipse Core -.project -# JDT-specific (Eclipse Java Development Tools) -.classpath - -### Gradle Patch ### -# Java heap dump -*.hprof - -# End of https://www.toptal.com/developers/gitignore/api/gradle diff --git a/CityDoctorBuildPlugin/pom.xml b/CityDoctorBuildPlugin/pom.xml deleted file mode 100644 index 21cf575d9a2378de4e90cf4023c16e8e72b84a6c..0000000000000000000000000000000000000000 --- a/CityDoctorBuildPlugin/pom.xml +++ /dev/null @@ -1,57 +0,0 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <groupId>de.hft.stuttgart</groupId> - <artifactId>CityDoctorBuildPlugin</artifactId> - <version>1.0.0</version> - <packaging>maven-plugin</packaging> - - <prerequisites> - <maven>3.5</maven> - </prerequisites> - - <properties> - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - <maven.compiler.source>17</maven.compiler.source> - <maven.compiler.target>17</maven.compiler.target> - <maven.plugin.skipErrorNoDescriptorsFound>true</maven.plugin.skipErrorNoDescriptorsFound> - </properties> - - <dependencies> - <dependency> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-annotations</artifactId> - <version>3.8.2</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.apache.maven</groupId> - <artifactId>maven-plugin-api</artifactId> - <version>3.9.2</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.apache.maven</groupId> - <artifactId>maven-core</artifactId> - <version>3.9.2</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.rauschig</groupId> - <artifactId>jarchivelib</artifactId> - <version>1.2.0</version> - </dependency> - </dependencies> - - <build> - <pluginManagement> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-plugin-plugin</artifactId> - <version>3.8.2</version> - </plugin> - </plugins> - </pluginManagement> - </build> - -</project> \ No newline at end of file diff --git a/CityDoctorBuildPlugin/src/main/java/de/hft/stuttgart/citydoctor/build/plugin/DownloadJreMojo.java b/CityDoctorBuildPlugin/src/main/java/de/hft/stuttgart/citydoctor/build/plugin/DownloadJreMojo.java deleted file mode 100644 index ba22003cd864f98f01d895b0cffa9f54d498ec98..0000000000000000000000000000000000000000 --- a/CityDoctorBuildPlugin/src/main/java/de/hft/stuttgart/citydoctor/build/plugin/DownloadJreMojo.java +++ /dev/null @@ -1,132 +0,0 @@ -package de.hft.stuttgart.citydoctor.build.plugin; - -import java.io.File; -import java.io.IOException; -import java.net.URL; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.zip.ZipEntry; -import java.util.zip.ZipInputStream; - -import org.apache.maven.plugin.logging.Log; -import org.apache.maven.plugins.annotations.LifecyclePhase; -import org.apache.maven.plugins.annotations.Mojo; -import org.apache.maven.plugins.annotations.Parameter; -import org.apache.maven.project.MavenProject; -import org.rauschig.jarchivelib.ArchiveFormat; -import org.rauschig.jarchivelib.Archiver; -import org.rauschig.jarchivelib.ArchiverFactory; -import org.rauschig.jarchivelib.CompressionType; - -@Mojo(name = "downloadJre", defaultPhase = LifecyclePhase.INSTALL) -public class DownloadJreMojo implements org.apache.maven.plugin.Mojo { - - private Log log; - - @Parameter(property = "url", required = true, readonly = true) - private URL url; - - @Parameter(property = "outputFolder", defaultValue = "jre") - private String outputFolder; - - @Parameter(defaultValue = "${project}", required = true, readonly = true) - MavenProject project; - - @Override - public void execute() { - Path targetDir = Paths.get(project.getBuild().getDirectory()); - Path outputDir = targetDir.resolve(outputFolder); - if (Files.exists(outputDir)) { - log.info("Skipping jre download, folder already exists"); - return; - } - outputDir.normalize(); - createOutputFolder(outputDir); - log.info("Downloading runtime"); - if (url.getFile().endsWith(".tar")) { - // handle tar file - extractTarFile(outputDir); - } else if (url.getFile().endsWith(".tar.gz")) { - // handle tar file with gzip compression - extractTarGz(outputDir); - } else if (url.getFile().endsWith(".zip")) { - // handle zip archive - extractZipFile(outputDir); - } - } - - private void extractTarGz(Path outputDir) { - Archiver archiver = ArchiverFactory.createArchiver(ArchiveFormat.TAR, CompressionType.GZIP); - try { - archiver.extract(url.openConnection().getInputStream(), outputDir.toFile()); - } catch (IOException e) { - log.error("Could not extract file: " + url, e); - } - } - - private void extractTarFile(Path outputDir) { - Archiver archiver = ArchiverFactory.createArchiver(ArchiveFormat.TAR); - try { - archiver.extract(url.openConnection().getInputStream(), outputDir.toFile()); - } catch (IOException e) { - log.error("Could not extract file: " + url, e); - } - } - - private void extractZipFile(Path outputDir) { - try (ZipInputStream zipInput = new ZipInputStream(url.openConnection().getInputStream())) { - ZipEntry entry = zipInput.getNextEntry(); - while (entry != null) { - Path newFile = newFile(outputDir, entry); - if (entry.isDirectory()) { - Files.createDirectories(newFile); - } else { - // fix for Windows-created archives - Path parent = newFile.getParent(); - if (!Files.isDirectory(parent)) { - throw new IOException("Failed to create directory: " + parent); - } - Files.createDirectories(parent); - - // write file content - Files.copy(zipInput, newFile); - } - entry = zipInput.getNextEntry(); - } - } catch (IOException e) { - log.error("Could not retrieve file from url", e); - } - } - - public static Path newFile(Path destinationDir, ZipEntry zipEntry) throws IOException { - Path destFile = destinationDir.resolve(zipEntry.getName()).normalize(); - - String destDirPath = destinationDir.toString(); - String destFilePath = destFile.toString(); - - if (!destFilePath.startsWith(destDirPath + File.separator)) { - throw new IOException("Entry is outside of the target dir: " + zipEntry.getName()); - } - - return destFile; - } - - private void createOutputFolder(Path jreDir) { - try { - Files.createDirectories(jreDir); - } catch (IOException e) { - log.error("Could not create output folder", e); - } - } - - @Override - public void setLog(Log log) { - this.log = log; - } - - @Override - public Log getLog() { - return log; - } -}