diff options
author | Miroslav Šulc <fordfrog@gentoo.org> | 2019-11-03 12:26:41 +0100 |
---|---|---|
committer | Miroslav Šulc <fordfrog@gentoo.org> | 2019-11-03 12:26:41 +0100 |
commit | a7f4247c96b248b86d657137bbb8312884bde5dd (patch) | |
tree | f4044cb6e416654c0f82a9f52a23898028088e09 | |
parent | encapsulated java version in new container (diff) | |
download | java-ebuilder-a7f4247c96b248b86d657137bbb8312884bde5dd.tar.gz java-ebuilder-a7f4247c96b248b86d657137bbb8312884bde5dd.tar.bz2 java-ebuilder-a7f4247c96b248b86d657137bbb8312884bde5dd.zip |
added support for forcing minimal java version
Signed-off-by: Miroslav Šulc <fordfrog@gentoo.org>
-rw-r--r-- | src/main/java/org/gentoo/java/ebuilder/Config.java | 24 | ||||
-rw-r--r-- | src/main/java/org/gentoo/java/ebuilder/Main.java | 8 | ||||
-rw-r--r-- | src/main/java/org/gentoo/java/ebuilder/maven/MavenEbuilder.java | 33 | ||||
-rw-r--r-- | src/main/resources/usage.txt | 38 |
4 files changed, 79 insertions, 24 deletions
diff --git a/src/main/java/org/gentoo/java/ebuilder/Config.java b/src/main/java/org/gentoo/java/ebuilder/Config.java index 3bf8cb8..c53e7a9 100644 --- a/src/main/java/org/gentoo/java/ebuilder/Config.java +++ b/src/main/java/org/gentoo/java/ebuilder/Config.java @@ -7,6 +7,7 @@ import java.nio.file.Paths; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import org.gentoo.java.ebuilder.maven.JavaVersion; /** * Container for command line configuration. @@ -49,6 +50,11 @@ public class Config { */ private final PrintWriter errorWriter; /** + * JDK/JRE version that will be used if version in POM files is lower than + * this one. + */ + private JavaVersion forceMinJavaVersion; + /** * Whether ebuild should be generated. */ private boolean generateEbuild; @@ -224,6 +230,24 @@ public class Config { } /** + * Getter for {@link #forceMinJavaVersion}. + * + * @return {@link #forceMinJavaVersion} + */ + public JavaVersion getForceMinJavaVersion() { + return forceMinJavaVersion; + } + + /** + * Setter for {@link #forceMinJavaVersion}. + * + * @param forceMinJavaVersion {@link #forceMinJavaVersion} + */ + public void setForceMinJavaVersion(final JavaVersion forceMinJavaVersion) { + this.forceMinJavaVersion = forceMinJavaVersion; + } + + /** * Getter for {@link #keywords}. * * @return {@link #keywords} diff --git a/src/main/java/org/gentoo/java/ebuilder/Main.java b/src/main/java/org/gentoo/java/ebuilder/Main.java index cc9a3c5..fa4a85e 100644 --- a/src/main/java/org/gentoo/java/ebuilder/Main.java +++ b/src/main/java/org/gentoo/java/ebuilder/Main.java @@ -11,6 +11,7 @@ import java.nio.file.Paths; import java.text.MessageFormat; import java.util.List; import java.util.Map; +import org.gentoo.java.ebuilder.maven.JavaVersion; import org.gentoo.java.ebuilder.maven.MavenCache; import org.gentoo.java.ebuilder.maven.MavenEbuilder; import org.gentoo.java.ebuilder.maven.MavenParser; @@ -132,6 +133,9 @@ public class Main { } else if (config.getEbuild() != null) { config.getErrorWriter().println( "WARNING: Ebuild is used only when generating ebuild."); + } else if (config.getForceMinJavaVersion() != null) { + config.getErrorWriter().println("WARNING: Forcing minimum JDK/JRE " + + "version applies only when generating ebuild."); } else if (config.getKeywords() != null) { config.getErrorWriter().println("WARNING: Keywords are used only " + "when generating ebuild."); @@ -231,6 +235,10 @@ public class Main { config.setEbuild(Paths.get(args[i]).toAbsolutePath(). normalize()); break; + case "--force-min-java-version": + i++; + config.setForceMinJavaVersion(new JavaVersion(args[i])); + break; case "--generate-ebuild": case "-g": config.setGenerateEbuild(true); diff --git a/src/main/java/org/gentoo/java/ebuilder/maven/MavenEbuilder.java b/src/main/java/org/gentoo/java/ebuilder/maven/MavenEbuilder.java index 53708e9..d6e3f1a 100644 --- a/src/main/java/org/gentoo/java/ebuilder/maven/MavenEbuilder.java +++ b/src/main/java/org/gentoo/java/ebuilder/maven/MavenEbuilder.java @@ -144,11 +144,14 @@ public class MavenEbuilder { * Retrieves minimum source version from the maven projects. * * @param mavenProjects list of maven projects + * @param forceMinVersion optional minimum version to force * * @return minimum source version */ - private String getMinSourceVersion(final List<MavenProject> mavenProjects) { - String result = null; + private JavaVersion getMinSourceVersion( + final List<MavenProject> mavenProjects, + final JavaVersion forceMinVersion) { + JavaVersion result = null; for (final MavenProject mavenProject : mavenProjects) { if (result == null || mavenProject.getSourceVersion().compareTo( @@ -157,6 +160,10 @@ public class MavenEbuilder { } } + if (forceMinVersion != null && forceMinVersion.compareTo(result) > 0) { + return forceMinVersion; + } + return result; } @@ -164,11 +171,14 @@ public class MavenEbuilder { * Retrieves minimum target version from the maven projects. * * @param mavenProjects list of maven projects + * @param forceMinVersion optional minimum version to force * * @return minimum target version */ - private String getMinTargetVersion(final List<MavenProject> mavenProjects) { - String result = null; + private JavaVersion getMinTargetVersion( + final List<MavenProject> mavenProjects, + final JavaVersion forceMinVersion) { + JavaVersion result = null; for (final MavenProject mavenProject : mavenProjects) { if (result == null || mavenProject.getTargetVersion().compareTo( @@ -177,6 +187,10 @@ public class MavenEbuilder { } } + if (forceMinVersion != null && forceMinVersion.compareTo(result) > 0) { + return forceMinVersion; + } + return result; } @@ -284,6 +298,11 @@ public class MavenEbuilder { writer.print(config.getEbuild().getFileName()); } + if (config.getForceMinJavaVersion() != null) { + writer.print(" --force-min-java-version "); + writer.print(config.getForceMinJavaVersion()); + } + writer.println(); } @@ -378,7 +397,8 @@ public class MavenEbuilder { writer.println(); writer.print("\t>=virtual/jdk-"); - writer.print(getMinSourceVersion(mavenProjects)); + writer.print(getMinSourceVersion( + mavenProjects, config.getForceMinJavaVersion())); if (config.getDownloadUri() != null && config.getDownloadUri(). toString().matches("^.*?\\.(jar|zip)$")) { @@ -418,7 +438,8 @@ public class MavenEbuilder { writer.println(); writer.print("\t>=virtual/jre-"); - writer.print(getMinTargetVersion(mavenProjects)); + writer.print(getMinTargetVersion( + mavenProjects, config.getForceMinJavaVersion())); if (!runtimeDependencies.isEmpty()) { runtimeDependencies.stream().forEach((dependency) -> { diff --git a/src/main/resources/usage.txt b/src/main/resources/usage.txt index fc2689f..a5f7b68 100644 --- a/src/main/resources/usage.txt +++ b/src/main/resources/usage.txt @@ -1,25 +1,27 @@ Usage: java-ebuilder <args> Generating ebuild: ---download-uri|-u <uri> uri that goes to SRC_URI ---dump-projects|-d outputs information about parsed projects (useful - for debugging) ---ebuild|-e <file> path to ebuild that should be created ---generate-ebuild|-g generates ebuild from pom.xml ---keywords|-k <keywords> arch keywords ---license|-l <license> license name ---pom|-p <file> path to pom.xml that should be parsed, the path must - be relative to workdir (can be specified multiple - times) ---slot|-s <slot> SLOT number ---workdir|-w <dir> path to ebuild workdir (${WORKDIR}, default is - current directory) +--download-uri|-u <uri> uri that goes to SRC_URI +--dump-projects|-d outputs information about parsed projects + (useful for debugging) +--ebuild|-e <file> path to ebuild that should be created +--force-min-java-version <version> force minimum JDK/JRE version in dependencies +--generate-ebuild|-g generates ebuild from pom.xml +--keywords|-k <keywords> arch keywords +--license|-l <license> license name +--pom|-p <file> path to pom.xml that should be parsed, + the path must be relative to workdir (can be + specified multiple times) +--slot|-s <slot> SLOT number +--workdir|-w <dir> path to ebuild workdir (${WORKDIR}, default + is current directory) Refreshing cache: ---portage-tree|-t path to portage tree that should be parsed when - refreshing cache (default is /usr/portage) ---refresh-cache|-c refreshes java ebuild cache +--portage-tree|-t path to portage tree that should be parsed + when refreshing cache (default is + /usr/portage) +--refresh-cache|-c refreshes java ebuild cache Common: ---cache-file location of cache file (default is - ~/.java-ebuilder/cache) +--cache-file location of cache file (default is + ~/.java-ebuilder/cache) |