1 |
commit: a7f4247c96b248b86d657137bbb8312884bde5dd |
2 |
Author: Miroslav Šulc <fordfrog <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sun Nov 3 11:26:41 2019 +0000 |
4 |
Commit: Miroslav Šulc <fordfrog <AT> gentoo <DOT> org> |
5 |
CommitDate: Sun Nov 3 11:26:41 2019 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=a7f4247c |
7 |
|
8 |
added support for forcing minimal java version |
9 |
|
10 |
Signed-off-by: Miroslav Šulc <fordfrog <AT> gentoo.org> |
11 |
|
12 |
src/main/java/org/gentoo/java/ebuilder/Config.java | 24 ++++++++++++++ |
13 |
src/main/java/org/gentoo/java/ebuilder/Main.java | 8 +++++ |
14 |
.../gentoo/java/ebuilder/maven/MavenEbuilder.java | 33 +++++++++++++++---- |
15 |
src/main/resources/usage.txt | 38 ++++++++++++---------- |
16 |
4 files changed, 79 insertions(+), 24 deletions(-) |
17 |
|
18 |
diff --git a/src/main/java/org/gentoo/java/ebuilder/Config.java b/src/main/java/org/gentoo/java/ebuilder/Config.java |
19 |
index 3bf8cb8..c53e7a9 100644 |
20 |
--- a/src/main/java/org/gentoo/java/ebuilder/Config.java |
21 |
+++ b/src/main/java/org/gentoo/java/ebuilder/Config.java |
22 |
@@ -7,6 +7,7 @@ import java.nio.file.Paths; |
23 |
import java.util.ArrayList; |
24 |
import java.util.Collections; |
25 |
import java.util.List; |
26 |
+import org.gentoo.java.ebuilder.maven.JavaVersion; |
27 |
|
28 |
/** |
29 |
* Container for command line configuration. |
30 |
@@ -48,6 +49,11 @@ public class Config { |
31 |
* Writer for errors. |
32 |
*/ |
33 |
private final PrintWriter errorWriter; |
34 |
+ /** |
35 |
+ * JDK/JRE version that will be used if version in POM files is lower than |
36 |
+ * this one. |
37 |
+ */ |
38 |
+ private JavaVersion forceMinJavaVersion; |
39 |
/** |
40 |
* Whether ebuild should be generated. |
41 |
*/ |
42 |
@@ -223,6 +229,24 @@ public class Config { |
43 |
return errorWriter; |
44 |
} |
45 |
|
46 |
+ /** |
47 |
+ * Getter for {@link #forceMinJavaVersion}. |
48 |
+ * |
49 |
+ * @return {@link #forceMinJavaVersion} |
50 |
+ */ |
51 |
+ public JavaVersion getForceMinJavaVersion() { |
52 |
+ return forceMinJavaVersion; |
53 |
+ } |
54 |
+ |
55 |
+ /** |
56 |
+ * Setter for {@link #forceMinJavaVersion}. |
57 |
+ * |
58 |
+ * @param forceMinJavaVersion {@link #forceMinJavaVersion} |
59 |
+ */ |
60 |
+ public void setForceMinJavaVersion(final JavaVersion forceMinJavaVersion) { |
61 |
+ this.forceMinJavaVersion = forceMinJavaVersion; |
62 |
+ } |
63 |
+ |
64 |
/** |
65 |
* Getter for {@link #keywords}. |
66 |
* |
67 |
|
68 |
diff --git a/src/main/java/org/gentoo/java/ebuilder/Main.java b/src/main/java/org/gentoo/java/ebuilder/Main.java |
69 |
index cc9a3c5..fa4a85e 100644 |
70 |
--- a/src/main/java/org/gentoo/java/ebuilder/Main.java |
71 |
+++ b/src/main/java/org/gentoo/java/ebuilder/Main.java |
72 |
@@ -11,6 +11,7 @@ import java.nio.file.Paths; |
73 |
import java.text.MessageFormat; |
74 |
import java.util.List; |
75 |
import java.util.Map; |
76 |
+import org.gentoo.java.ebuilder.maven.JavaVersion; |
77 |
import org.gentoo.java.ebuilder.maven.MavenCache; |
78 |
import org.gentoo.java.ebuilder.maven.MavenEbuilder; |
79 |
import org.gentoo.java.ebuilder.maven.MavenParser; |
80 |
@@ -132,6 +133,9 @@ public class Main { |
81 |
} else if (config.getEbuild() != null) { |
82 |
config.getErrorWriter().println( |
83 |
"WARNING: Ebuild is used only when generating ebuild."); |
84 |
+ } else if (config.getForceMinJavaVersion() != null) { |
85 |
+ config.getErrorWriter().println("WARNING: Forcing minimum JDK/JRE " |
86 |
+ + "version applies only when generating ebuild."); |
87 |
} else if (config.getKeywords() != null) { |
88 |
config.getErrorWriter().println("WARNING: Keywords are used only " |
89 |
+ "when generating ebuild."); |
90 |
@@ -231,6 +235,10 @@ public class Main { |
91 |
config.setEbuild(Paths.get(args[i]).toAbsolutePath(). |
92 |
normalize()); |
93 |
break; |
94 |
+ case "--force-min-java-version": |
95 |
+ i++; |
96 |
+ config.setForceMinJavaVersion(new JavaVersion(args[i])); |
97 |
+ break; |
98 |
case "--generate-ebuild": |
99 |
case "-g": |
100 |
config.setGenerateEbuild(true); |
101 |
|
102 |
diff --git a/src/main/java/org/gentoo/java/ebuilder/maven/MavenEbuilder.java b/src/main/java/org/gentoo/java/ebuilder/maven/MavenEbuilder.java |
103 |
index 53708e9..d6e3f1a 100644 |
104 |
--- a/src/main/java/org/gentoo/java/ebuilder/maven/MavenEbuilder.java |
105 |
+++ b/src/main/java/org/gentoo/java/ebuilder/maven/MavenEbuilder.java |
106 |
@@ -144,11 +144,14 @@ public class MavenEbuilder { |
107 |
* Retrieves minimum source version from the maven projects. |
108 |
* |
109 |
* @param mavenProjects list of maven projects |
110 |
+ * @param forceMinVersion optional minimum version to force |
111 |
* |
112 |
* @return minimum source version |
113 |
*/ |
114 |
- private String getMinSourceVersion(final List<MavenProject> mavenProjects) { |
115 |
- String result = null; |
116 |
+ private JavaVersion getMinSourceVersion( |
117 |
+ final List<MavenProject> mavenProjects, |
118 |
+ final JavaVersion forceMinVersion) { |
119 |
+ JavaVersion result = null; |
120 |
|
121 |
for (final MavenProject mavenProject : mavenProjects) { |
122 |
if (result == null || mavenProject.getSourceVersion().compareTo( |
123 |
@@ -157,6 +160,10 @@ public class MavenEbuilder { |
124 |
} |
125 |
} |
126 |
|
127 |
+ if (forceMinVersion != null && forceMinVersion.compareTo(result) > 0) { |
128 |
+ return forceMinVersion; |
129 |
+ } |
130 |
+ |
131 |
return result; |
132 |
} |
133 |
|
134 |
@@ -164,11 +171,14 @@ public class MavenEbuilder { |
135 |
* Retrieves minimum target version from the maven projects. |
136 |
* |
137 |
* @param mavenProjects list of maven projects |
138 |
+ * @param forceMinVersion optional minimum version to force |
139 |
* |
140 |
* @return minimum target version |
141 |
*/ |
142 |
- private String getMinTargetVersion(final List<MavenProject> mavenProjects) { |
143 |
- String result = null; |
144 |
+ private JavaVersion getMinTargetVersion( |
145 |
+ final List<MavenProject> mavenProjects, |
146 |
+ final JavaVersion forceMinVersion) { |
147 |
+ JavaVersion result = null; |
148 |
|
149 |
for (final MavenProject mavenProject : mavenProjects) { |
150 |
if (result == null || mavenProject.getTargetVersion().compareTo( |
151 |
@@ -177,6 +187,10 @@ public class MavenEbuilder { |
152 |
} |
153 |
} |
154 |
|
155 |
+ if (forceMinVersion != null && forceMinVersion.compareTo(result) > 0) { |
156 |
+ return forceMinVersion; |
157 |
+ } |
158 |
+ |
159 |
return result; |
160 |
} |
161 |
|
162 |
@@ -284,6 +298,11 @@ public class MavenEbuilder { |
163 |
writer.print(config.getEbuild().getFileName()); |
164 |
} |
165 |
|
166 |
+ if (config.getForceMinJavaVersion() != null) { |
167 |
+ writer.print(" --force-min-java-version "); |
168 |
+ writer.print(config.getForceMinJavaVersion()); |
169 |
+ } |
170 |
+ |
171 |
writer.println(); |
172 |
} |
173 |
|
174 |
@@ -378,7 +397,8 @@ public class MavenEbuilder { |
175 |
|
176 |
writer.println(); |
177 |
writer.print("\t>=virtual/jdk-"); |
178 |
- writer.print(getMinSourceVersion(mavenProjects)); |
179 |
+ writer.print(getMinSourceVersion( |
180 |
+ mavenProjects, config.getForceMinJavaVersion())); |
181 |
|
182 |
if (config.getDownloadUri() != null && config.getDownloadUri(). |
183 |
toString().matches("^.*?\\.(jar|zip)$")) { |
184 |
@@ -418,7 +438,8 @@ public class MavenEbuilder { |
185 |
|
186 |
writer.println(); |
187 |
writer.print("\t>=virtual/jre-"); |
188 |
- writer.print(getMinTargetVersion(mavenProjects)); |
189 |
+ writer.print(getMinTargetVersion( |
190 |
+ mavenProjects, config.getForceMinJavaVersion())); |
191 |
|
192 |
if (!runtimeDependencies.isEmpty()) { |
193 |
runtimeDependencies.stream().forEach((dependency) -> { |
194 |
|
195 |
diff --git a/src/main/resources/usage.txt b/src/main/resources/usage.txt |
196 |
index fc2689f..a5f7b68 100644 |
197 |
--- a/src/main/resources/usage.txt |
198 |
+++ b/src/main/resources/usage.txt |
199 |
@@ -1,25 +1,27 @@ |
200 |
Usage: java-ebuilder <args> |
201 |
|
202 |
Generating ebuild: |
203 |
---download-uri|-u <uri> uri that goes to SRC_URI |
204 |
---dump-projects|-d outputs information about parsed projects (useful |
205 |
- for debugging) |
206 |
---ebuild|-e <file> path to ebuild that should be created |
207 |
---generate-ebuild|-g generates ebuild from pom.xml |
208 |
---keywords|-k <keywords> arch keywords |
209 |
---license|-l <license> license name |
210 |
---pom|-p <file> path to pom.xml that should be parsed, the path must |
211 |
- be relative to workdir (can be specified multiple |
212 |
- times) |
213 |
---slot|-s <slot> SLOT number |
214 |
---workdir|-w <dir> path to ebuild workdir (${WORKDIR}, default is |
215 |
- current directory) |
216 |
+--download-uri|-u <uri> uri that goes to SRC_URI |
217 |
+--dump-projects|-d outputs information about parsed projects |
218 |
+ (useful for debugging) |
219 |
+--ebuild|-e <file> path to ebuild that should be created |
220 |
+--force-min-java-version <version> force minimum JDK/JRE version in dependencies |
221 |
+--generate-ebuild|-g generates ebuild from pom.xml |
222 |
+--keywords|-k <keywords> arch keywords |
223 |
+--license|-l <license> license name |
224 |
+--pom|-p <file> path to pom.xml that should be parsed, |
225 |
+ the path must be relative to workdir (can be |
226 |
+ specified multiple times) |
227 |
+--slot|-s <slot> SLOT number |
228 |
+--workdir|-w <dir> path to ebuild workdir (${WORKDIR}, default |
229 |
+ is current directory) |
230 |
|
231 |
Refreshing cache: |
232 |
---portage-tree|-t path to portage tree that should be parsed when |
233 |
- refreshing cache (default is /usr/portage) |
234 |
---refresh-cache|-c refreshes java ebuild cache |
235 |
+--portage-tree|-t path to portage tree that should be parsed |
236 |
+ when refreshing cache (default is |
237 |
+ /usr/portage) |
238 |
+--refresh-cache|-c refreshes java ebuild cache |
239 |
|
240 |
Common: |
241 |
---cache-file location of cache file (default is |
242 |
- ~/.java-ebuilder/cache) |
243 |
+--cache-file location of cache file (default is |
244 |
+ ~/.java-ebuilder/cache) |