aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiroslav Šulc <fordfrog@gentoo.org>2019-11-03 12:26:41 +0100
committerMiroslav Šulc <fordfrog@gentoo.org>2019-11-03 12:26:41 +0100
commita7f4247c96b248b86d657137bbb8312884bde5dd (patch)
treef4044cb6e416654c0f82a9f52a23898028088e09
parentencapsulated java version in new container (diff)
downloadjava-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.java24
-rw-r--r--src/main/java/org/gentoo/java/ebuilder/Main.java8
-rw-r--r--src/main/java/org/gentoo/java/ebuilder/maven/MavenEbuilder.java33
-rw-r--r--src/main/resources/usage.txt38
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)