You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Build.java 23KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597
  1. /*
  2. * Copyright 2011 gitblit.com.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. package com.gitblit.build;
  17. import java.io.BufferedInputStream;
  18. import java.io.ByteArrayOutputStream;
  19. import java.io.File;
  20. import java.io.FileInputStream;
  21. import java.io.FileWriter;
  22. import java.io.IOException;
  23. import java.io.InputStream;
  24. import java.io.RandomAccessFile;
  25. import java.net.URL;
  26. import java.text.MessageFormat;
  27. import java.util.ArrayList;
  28. import java.util.Collections;
  29. import java.util.HashMap;
  30. import java.util.List;
  31. import java.util.Map;
  32. import java.util.Properties;
  33. import com.gitblit.Constants;
  34. import com.gitblit.utils.StringUtils;
  35. /**
  36. * The Build class downloads runtime and compile-time jar files from the Apache
  37. * or Eclipse Maven repositories.
  38. *
  39. * It also generates the Keys class from the gitblit.properties file.
  40. *
  41. * Its important that this class have minimal compile dependencies since its
  42. * called very early in the build script.
  43. *
  44. * @author James Moger
  45. *
  46. */
  47. public class Build {
  48. public interface DownloadListener {
  49. public void downloading(String name);
  50. }
  51. /**
  52. * BuildType enumeration representing compile-time or runtime. This is used
  53. * to download dependencies either for Gitblit GO runtime or for setting up
  54. * a development environment.
  55. */
  56. public static enum BuildType {
  57. RUNTIME, COMPILETIME;
  58. }
  59. private static DownloadListener downloadListener;
  60. public static void main(String... args) {
  61. runtime();
  62. compiletime();
  63. buildSettingKeys();
  64. }
  65. public static void runtime() {
  66. downloadFromApache(MavenObject.JCOMMANDER, BuildType.RUNTIME);
  67. downloadFromApache(MavenObject.JETTY, BuildType.RUNTIME);
  68. downloadFromApache(MavenObject.JETTY_AJP, BuildType.RUNTIME);
  69. downloadFromApache(MavenObject.SERVLET, BuildType.RUNTIME);
  70. downloadFromApache(MavenObject.SLF4JAPI, BuildType.RUNTIME);
  71. downloadFromApache(MavenObject.SLF4LOG4J, BuildType.RUNTIME);
  72. downloadFromApache(MavenObject.LOG4J, BuildType.RUNTIME);
  73. downloadFromApache(MavenObject.WICKET, BuildType.RUNTIME);
  74. downloadFromApache(MavenObject.WICKET_EXT, BuildType.RUNTIME);
  75. downloadFromApache(MavenObject.WICKET_AUTH_ROLES, BuildType.RUNTIME);
  76. downloadFromApache(MavenObject.WICKET_GOOGLE_CHARTS, BuildType.RUNTIME);
  77. downloadFromApache(MavenObject.MARKDOWNPAPERS, BuildType.RUNTIME);
  78. downloadFromApache(MavenObject.BOUNCYCASTLE, BuildType.RUNTIME);
  79. downloadFromApache(MavenObject.BOUNCYCASTLE_MAIL, BuildType.RUNTIME);
  80. downloadFromApache(MavenObject.JSCH, BuildType.RUNTIME);
  81. downloadFromApache(MavenObject.ROME, BuildType.RUNTIME);
  82. downloadFromApache(MavenObject.JDOM, BuildType.RUNTIME);
  83. downloadFromApache(MavenObject.GSON, BuildType.RUNTIME);
  84. downloadFromApache(MavenObject.MAIL, BuildType.RUNTIME);
  85. downloadFromApache(MavenObject.GROOVY, BuildType.RUNTIME);
  86. downloadFromApache(MavenObject.LUCENE, BuildType.RUNTIME);
  87. downloadFromApache(MavenObject.LUCENE_HIGHLIGHTER, BuildType.RUNTIME);
  88. downloadFromApache(MavenObject.LUCENE_MEMORY, BuildType.RUNTIME);
  89. downloadFromApache(MavenObject.UNBOUND_ID, BuildType.RUNTIME);
  90. downloadFromEclipse(MavenObject.JGIT, BuildType.RUNTIME);
  91. downloadFromEclipse(MavenObject.JGIT_HTTP, BuildType.RUNTIME);
  92. }
  93. public static void compiletime() {
  94. downloadFromApache(MavenObject.JUNIT, BuildType.RUNTIME);
  95. downloadFromApache(MavenObject.JCOMMANDER, BuildType.COMPILETIME);
  96. downloadFromApache(MavenObject.JETTY, BuildType.COMPILETIME);
  97. downloadFromApache(MavenObject.JETTY_AJP, BuildType.COMPILETIME);
  98. downloadFromApache(MavenObject.SERVLET, BuildType.COMPILETIME);
  99. downloadFromApache(MavenObject.SLF4JAPI, BuildType.COMPILETIME);
  100. downloadFromApache(MavenObject.SLF4LOG4J, BuildType.COMPILETIME);
  101. downloadFromApache(MavenObject.LOG4J, BuildType.COMPILETIME);
  102. downloadFromApache(MavenObject.WICKET, BuildType.COMPILETIME);
  103. downloadFromApache(MavenObject.WICKET_EXT, BuildType.COMPILETIME);
  104. downloadFromApache(MavenObject.WICKET_AUTH_ROLES, BuildType.COMPILETIME);
  105. downloadFromApache(MavenObject.WICKET_GOOGLE_CHARTS, BuildType.COMPILETIME);
  106. downloadFromApache(MavenObject.MARKDOWNPAPERS, BuildType.COMPILETIME);
  107. downloadFromApache(MavenObject.BOUNCYCASTLE, BuildType.COMPILETIME);
  108. downloadFromApache(MavenObject.BOUNCYCASTLE_MAIL, BuildType.COMPILETIME);
  109. downloadFromApache(MavenObject.JSCH, BuildType.COMPILETIME);
  110. downloadFromApache(MavenObject.ROME, BuildType.COMPILETIME);
  111. downloadFromApache(MavenObject.JDOM, BuildType.COMPILETIME);
  112. downloadFromApache(MavenObject.GSON, BuildType.COMPILETIME);
  113. downloadFromApache(MavenObject.MAIL, BuildType.COMPILETIME);
  114. downloadFromApache(MavenObject.GROOVY, BuildType.COMPILETIME);
  115. downloadFromApache(MavenObject.LUCENE, BuildType.COMPILETIME);
  116. downloadFromApache(MavenObject.LUCENE_HIGHLIGHTER, BuildType.COMPILETIME);
  117. downloadFromApache(MavenObject.LUCENE_MEMORY, BuildType.COMPILETIME);
  118. downloadFromApache(MavenObject.UNBOUND_ID, BuildType.COMPILETIME);
  119. downloadFromEclipse(MavenObject.JGIT, BuildType.COMPILETIME);
  120. downloadFromEclipse(MavenObject.JGIT_HTTP, BuildType.COMPILETIME);
  121. // needed for site publishing
  122. downloadFromApache(MavenObject.COMMONSNET, BuildType.RUNTIME);
  123. }
  124. public static void federationClient() {
  125. downloadFromApache(MavenObject.JCOMMANDER, BuildType.RUNTIME);
  126. downloadFromApache(MavenObject.SERVLET, BuildType.RUNTIME);
  127. downloadFromApache(MavenObject.MAIL, BuildType.RUNTIME);
  128. downloadFromApache(MavenObject.SLF4JAPI, BuildType.RUNTIME);
  129. downloadFromApache(MavenObject.SLF4LOG4J, BuildType.RUNTIME);
  130. downloadFromApache(MavenObject.LOG4J, BuildType.RUNTIME);
  131. downloadFromApache(MavenObject.GSON, BuildType.RUNTIME);
  132. downloadFromApache(MavenObject.JSCH, BuildType.RUNTIME);
  133. downloadFromEclipse(MavenObject.JGIT, BuildType.RUNTIME);
  134. }
  135. public static void manager(DownloadListener listener) {
  136. downloadListener = listener;
  137. downloadFromApache(MavenObject.GSON, BuildType.RUNTIME);
  138. downloadFromApache(MavenObject.ROME, BuildType.RUNTIME);
  139. downloadFromApache(MavenObject.JDOM, BuildType.RUNTIME);
  140. downloadFromApache(MavenObject.JSCH, BuildType.RUNTIME);
  141. downloadFromEclipse(MavenObject.JGIT, BuildType.RUNTIME);
  142. }
  143. /**
  144. * Builds the Keys class based on the gitblit.properties file and inserts
  145. * the class source into the project source folder.
  146. */
  147. public static void buildSettingKeys() {
  148. // Load all keys
  149. Properties properties = new Properties();
  150. FileInputStream is = null;
  151. try {
  152. is = new FileInputStream(Constants.PROPERTIES_FILE);
  153. properties.load(is);
  154. } catch (Throwable t) {
  155. t.printStackTrace();
  156. } finally {
  157. if (is != null) {
  158. try {
  159. is.close();
  160. } catch (Throwable t) {
  161. // IGNORE
  162. }
  163. }
  164. }
  165. List<String> keys = new ArrayList<String>(properties.stringPropertyNames());
  166. Collections.sort(keys);
  167. // Determine static key group classes
  168. Map<String, List<String>> staticClasses = new HashMap<String, List<String>>();
  169. staticClasses.put("", new ArrayList<String>());
  170. for (String key : keys) {
  171. String clazz = "";
  172. String field = key;
  173. if (key.indexOf('.') > -1) {
  174. clazz = key.substring(0, key.indexOf('.'));
  175. field = key.substring(key.indexOf('.') + 1);
  176. }
  177. if (!staticClasses.containsKey(clazz)) {
  178. staticClasses.put(clazz, new ArrayList<String>());
  179. }
  180. staticClasses.get(clazz).add(field);
  181. }
  182. // Assemble Keys source file
  183. StringBuilder sb = new StringBuilder();
  184. sb.append("package com.gitblit;\n");
  185. sb.append('\n');
  186. sb.append("/*\n");
  187. sb.append(" * This class is auto-generated from the properties file.\n");
  188. sb.append(" * Do not version control!\n");
  189. sb.append(" */\n");
  190. sb.append("public final class Keys {\n");
  191. sb.append('\n');
  192. List<String> classSet = new ArrayList<String>(staticClasses.keySet());
  193. Collections.sort(classSet);
  194. for (String clazz : classSet) {
  195. List<String> keySet = staticClasses.get(clazz);
  196. if (clazz.equals("")) {
  197. // root keys
  198. for (String key : keySet) {
  199. sb.append(MessageFormat.format(
  200. "\tpublic static final String {0} = \"{1}\";\n\n",
  201. key.replace('.', '_'), key));
  202. }
  203. } else {
  204. // class keys
  205. sb.append(MessageFormat.format("\tpublic static final class {0} '{'\n\n", clazz));
  206. sb.append(MessageFormat.format(
  207. "\t\tpublic static final String _ROOT = \"{0}\";\n\n", clazz));
  208. for (String key : keySet) {
  209. sb.append(MessageFormat.format(
  210. "\t\tpublic static final String {0} = \"{1}\";\n\n",
  211. key.replace('.', '_'), clazz + "." + key));
  212. }
  213. sb.append("\t}\n\n");
  214. }
  215. }
  216. sb.append('}');
  217. // Save Keys class definition
  218. try {
  219. File file = new File("src/com/gitblit/Keys.java");
  220. FileWriter fw = new FileWriter(file, false);
  221. fw.write(sb.toString());
  222. fw.close();
  223. } catch (Throwable t) {
  224. t.printStackTrace();
  225. }
  226. }
  227. /**
  228. * Download a file from the official Apache Maven repository.
  229. *
  230. * @param mo
  231. * the maven object to download.
  232. * @return
  233. */
  234. private static List<File> downloadFromApache(MavenObject mo, BuildType type) {
  235. return downloadFromMaven("http://repo1.maven.org/maven2/", mo, type);
  236. }
  237. /**
  238. * Download a file from the official Eclipse Maven repository.
  239. *
  240. * @param mo
  241. * the maven object to download.
  242. * @return
  243. */
  244. private static List<File> downloadFromEclipse(MavenObject mo, BuildType type) {
  245. return downloadFromMaven("http://download.eclipse.org/jgit/maven/", mo, type);
  246. }
  247. /**
  248. * Download a file from a Maven repository.
  249. *
  250. * @param mo
  251. * the maven object to download.
  252. * @return
  253. */
  254. private static List<File> downloadFromMaven(String mavenRoot, MavenObject mo, BuildType type) {
  255. List<File> downloads = new ArrayList<File>();
  256. String[] jars = { "" };
  257. if (BuildType.RUNTIME.equals(type)) {
  258. jars = new String[] { "" };
  259. } else if (BuildType.COMPILETIME.equals(type)) {
  260. jars = new String[] { "-sources" };
  261. }
  262. for (String jar : jars) {
  263. File targetFile = mo.getLocalFile("ext", jar);
  264. if (targetFile.exists()) {
  265. downloads.add(targetFile);
  266. continue;
  267. }
  268. String expectedSHA1 = mo.getSHA1(jar);
  269. if (expectedSHA1 == null) {
  270. // skip this jar
  271. continue;
  272. }
  273. float approximateLength = mo.getApproximateLength(jar);
  274. String mavenURL = mavenRoot + mo.getRepositoryPath(jar);
  275. if (!targetFile.getAbsoluteFile().getParentFile().exists()) {
  276. boolean success = targetFile.getAbsoluteFile().getParentFile().mkdirs();
  277. if (!success) {
  278. throw new RuntimeException("Failed to create destination folder structure!");
  279. }
  280. }
  281. if (downloadListener != null) {
  282. downloadListener.downloading(mo.name + "...");
  283. }
  284. ByteArrayOutputStream buff = new ByteArrayOutputStream();
  285. try {
  286. URL url = new URL(mavenURL);
  287. InputStream in = new BufferedInputStream(url.openStream());
  288. byte[] buffer = new byte[4096];
  289. int downloadedLen = 0;
  290. float lastProgress = 0f;
  291. updateDownload(0, targetFile);
  292. while (true) {
  293. int len = in.read(buffer);
  294. if (len < 0) {
  295. break;
  296. }
  297. downloadedLen += len;
  298. buff.write(buffer, 0, len);
  299. float progress = downloadedLen / approximateLength;
  300. if (progress - lastProgress >= 0.1f) {
  301. lastProgress = progress;
  302. updateDownload(progress, targetFile);
  303. if (downloadListener != null) {
  304. int percent = Math.min(100, Math.round(100 * progress));
  305. downloadListener.downloading(mo.name + " (" + percent + "%)");
  306. }
  307. }
  308. }
  309. in.close();
  310. updateDownload(1f, targetFile);
  311. if (downloadListener != null) {
  312. downloadListener.downloading(mo.name + " (100%)");
  313. }
  314. } catch (IOException e) {
  315. throw new RuntimeException("Error downloading " + mavenURL + " to " + targetFile, e);
  316. }
  317. byte[] data = buff.toByteArray();
  318. String calculatedSHA1 = StringUtils.getSHA1(data);
  319. System.out.println();
  320. if (expectedSHA1.length() == 0) {
  321. updateProgress(0, "sha: " + calculatedSHA1);
  322. System.out.println();
  323. } else {
  324. if (!calculatedSHA1.equals(expectedSHA1)) {
  325. throw new RuntimeException("SHA1 checksum mismatch; got: " + calculatedSHA1);
  326. }
  327. }
  328. try {
  329. RandomAccessFile ra = new RandomAccessFile(targetFile, "rw");
  330. ra.write(data);
  331. ra.setLength(data.length);
  332. ra.close();
  333. } catch (IOException e) {
  334. throw new RuntimeException("Error writing to file " + targetFile, e);
  335. }
  336. downloads.add(targetFile);
  337. }
  338. return downloads;
  339. }
  340. private static void updateDownload(float progress, File file) {
  341. updateProgress(progress, "d/l: " + file.getName());
  342. }
  343. private static void updateProgress(float progress, String url) {
  344. String anim = "==========";
  345. int width = Math.round(anim.length() * progress);
  346. System.out.print("\r[");
  347. System.out.print(anim.substring(0, Math.min(width, anim.length())));
  348. for (int i = 0; i < anim.length() - width; i++) {
  349. System.out.print(' ');
  350. }
  351. System.out.print("] " + url);
  352. }
  353. /**
  354. * MavenObject represents a complete maven artifact (binary, sources, and
  355. * javadoc). MavenObjects can be downloaded and checksummed to confirm
  356. * authenticity.
  357. */
  358. private static class MavenObject {
  359. public static final MavenObject JCOMMANDER = new MavenObject("jCommander", "com/beust",
  360. "jcommander", "1.17", 34000, 32000, 141000,
  361. "219a3540f3b27d7cc3b1d91d6ea046cd8723290e",
  362. "0bb50eec177acf0e94d58e0cf07262fe5164331d",
  363. "c7adc475ca40c288c93054e0f4fe58f3a98c0cb5");
  364. public static final MavenObject JETTY = new MavenObject("Jetty",
  365. "org/eclipse/jetty/aggregate", "jetty-webapp", "7.4.3.v20110701", 1000000, 680000,
  366. 2720000, "bde072b178f9650e2308f0babe58a4baaa469e3c",
  367. "bc75f05dd4f7fa848720ac669b8b438ee4a6b146",
  368. "dcd42f672e734521d1a6ccc0c2f9ecded1a1a281");
  369. public static final MavenObject JETTY_AJP = new MavenObject("Jetty-AJP",
  370. "org/eclipse/jetty", "jetty-ajp", "7.4.3.v20110701", 32000, 22000,
  371. 97000, "ddeb533bcf29e9b95555a9c0f34c1de3ab14c430", "bc4798286d705ea972643b3a0b31f46a0c53f605", "");
  372. public static final MavenObject SERVLET = new MavenObject("Servlet 3.0", "org/glassfish",
  373. "javax.servlet", "3.0.1", 84000, 211000, 0,
  374. "58f17c941cd0607bb5edcbcafc491d02265ac9a1",
  375. "63f2f8bcdd3f138020bbadd5c847e8f3847b77d2", null);
  376. public static final MavenObject SLF4JAPI = new MavenObject("SLF4J API", "org/slf4j",
  377. "slf4j-api", "1.6.1", 25500, 45000, 182000,
  378. "6f3b8a24bf970f17289b234284c94f43eb42f0e4",
  379. "46a386136c901748e6a3af67ebde6c22bc6b4524",
  380. "e223571d77769cdafde59040da235842f3326453");
  381. public static final MavenObject SLF4LOG4J = new MavenObject("SLF4J LOG4J", "org/slf4j",
  382. "slf4j-log4j12", "1.6.1", 9800, 9500, 52400,
  383. "bd245d6746cdd4e6203e976e21d597a46f115802",
  384. "7a26b08b265f55622fa1fed3bda68bbd37a465ba",
  385. "6e4b16bce7994e3692e82002f322a0dd2f32741e");
  386. public static final MavenObject LOG4J = new MavenObject("Apache LOG4J", "log4j", "log4j",
  387. "1.2.16", 481000, 471000, 1455000, "7999a63bfccbc7c247a9aea10d83d4272bd492c6",
  388. "bf945d1dc995be7fe64923625f842fbb6bf443be",
  389. "78aa1cbf0fa3b259abdc7d87f9f6788d785aac2a");
  390. public static final MavenObject WICKET = new MavenObject("Apache Wicket",
  391. "org/apache/wicket", "wicket", "1.4.20", 1960000, 1906000, 6818000,
  392. "bafe47d8ce8647cabeff691b5fc1ffd241ffee00",
  393. "7a6570df4ee7fbad71a38042c53780d46b5856db",
  394. "");
  395. public static final MavenObject WICKET_EXT = new MavenObject("Apache Wicket Extensions",
  396. "org/apache/wicket", "wicket-extensions", "1.4.20", 1180000, 1118000, 1458000,
  397. "5dc6353c3c69e39e6d5a0aaeedbbaf7a53e539c4",
  398. "c30112665f4c4874489d7df9fc8f866c57f93cc8",
  399. "");
  400. public static final MavenObject WICKET_AUTH_ROLES = new MavenObject(
  401. "Apache Wicket Auth Roles", "org/apache/wicket", "wicket-auth-roles", "1.4.20",
  402. 44000, 45000, 166000, "7e8f99b96bce03cc0a115e6a70d9eed7fbcf6a4b",
  403. "d7d0479ecca239bd020b247e82562fe047f53620",
  404. "");
  405. public static final MavenObject WICKET_GOOGLE_CHARTS = new MavenObject(
  406. "Apache Wicket Google Charts Add-On", "org/wicketstuff", "googlecharts", "1.4.20",
  407. 34000, 18750, 161000, "a4bed7d4a3632f95f3e204017ee60332a95da7c6",
  408. "16bda0794345b113c8dd5c8775e1ce493541dc67",
  409. "");
  410. public static final MavenObject JUNIT = new MavenObject("JUnit", "junit", "junit", "4.8.2",
  411. 237000, 0, 0, "c94f54227b08100974c36170dcb53329435fe5ad", "", "");
  412. public static final MavenObject MARKDOWNPAPERS = new MavenObject("MarkdownPapers",
  413. "org/tautua/markdownpapers", "markdownpapers-core", "1.2.7", 87000, 58000, 268000,
  414. "84ac5636ac7ddfad9d2ee8456a0f4f69709b6ee0",
  415. "453cf00a289c46a0e4f6f019a28d2a2605f652c8",
  416. "");
  417. public static final MavenObject BOUNCYCASTLE = new MavenObject("BouncyCastle",
  418. "org/bouncycastle", "bcprov-jdk16", "1.46", 1900000, 1400000, 4670000,
  419. "ce091790943599535cbb4de8ede84535b0c1260c",
  420. "d2b70567594225923450d7e3f80cd022c852725e",
  421. "873a6fe765f33fc27df498a5d1f5bf077e503b2f");
  422. public static final MavenObject BOUNCYCASTLE_MAIL = new MavenObject("BouncyCastle Mail",
  423. "org/bouncycastle", "bcmail-jdk16", "1.46", 502000, 420000, 482000,
  424. "08a9233bfd6ad38ea32df5e6ff91035b650584b9",
  425. "3ebd62bc56854767512dc5deec0a17795f2e671d",
  426. "3b7c5f3938f202311bdca0bf7ed46bc0118af081");
  427. public static final MavenObject JGIT = new MavenObject("JGit", "org/eclipse/jgit",
  428. "org.eclipse.jgit", "1.3.0.201202151440-r", 1532000, 1565000, 3460000,
  429. "a00dc524b1d1db1abbf95407aa3e6009c3d2c157",
  430. "68864beaa0856f539deafecf9e1fe105a7e996c3",
  431. "");
  432. public static final MavenObject JGIT_HTTP = new MavenObject("JGit", "org/eclipse/jgit",
  433. "org.eclipse.jgit.http.server", "1.3.0.201202151440-r", 68000, 62000, 110000,
  434. "099468bdd59d6f4919d54d5b66022d3ec8077b29",
  435. "721ef2b857a7e92989a8f1ee688e361510303bb1",
  436. "");
  437. public static final MavenObject JSCH = new MavenObject("JSch", "com/jcraft", "jsch",
  438. "0.1.44-1", 214000, 211000, 413000, "2e9ae08de5a71bd0e0d3ba2558598181bfa71d4e",
  439. "e528f593b19b04d500992606f58b87fcfded8883",
  440. "d0ffadd0a4ab909d94a577b5aad43c13b617ddcb");
  441. public static final MavenObject COMMONSNET = new MavenObject("commons-net", "commons-net",
  442. "commons-net", "1.4.0", 181000, 0, 0, "eb47e8cad2dd7f92fd7e77df1d1529cae87361f7",
  443. "", "");
  444. public static final MavenObject ROME = new MavenObject("rome", "rome", "rome", "0.9",
  445. 208000, 196000, 407000, "dee2705dd01e79a5a96a17225f5a1ae30470bb18",
  446. "226f851dc44fd94fe70b9c471881b71f88949cbf",
  447. "8d7d867b97eeb3a9196c3926da550ad042941c1b");
  448. public static final MavenObject JDOM = new MavenObject("jdom", "org/jdom", "jdom", "1.1",
  449. 153000, 235000, 445000, "1d04c0f321ea337f3661cf7ede8f4c6f653a8fdd",
  450. "a7ed425c4c46605b8f2bf2ee118c1609682f4f2c",
  451. "f3df91edccba2f07a0fced70887c2f7b7836cb75");
  452. public static final MavenObject GSON = new MavenObject("gson", "com/google/code/gson",
  453. "gson", "1.7.1", 174000, 142000, 247000,
  454. "0697e3a1fa094a983cd12f7f6f61abf9c6ea52e2",
  455. "51f6f78aec2d30d0c2bfb4a5f00d456a6f7a5e7e",
  456. "f0872fe17d484815328538b89909d5e46d85db74");
  457. public static final MavenObject MAIL = new MavenObject("javax.mail", "javax/mail", "mail",
  458. "1.4.3", 462000, 642000, 0, "8154bf8d666e6db154c548dc31a8d512c273f5ee",
  459. "5875e2729de83a4e46391f8f979ec8bd03810c10", null);
  460. public static final MavenObject GROOVY = new MavenObject("groovy", "org/codehaus/groovy", "groovy-all",
  461. "1.8.5", 6143000, 2290000, 4608000, "3be3914c49ca7d8e8afb29a7772a74c30a1f1b28",
  462. "1435cc8c90e3a91e5fee7bb53e83aad96e93aeb7", "5a214b52286523f9e2a4b5fed526506c763fa6f1");
  463. public static final MavenObject LUCENE = new MavenObject("lucene", "org/apache/lucene", "lucene-core",
  464. "3.5.0", 1470000, 1347000, 3608000, "90ff0731fafb05c01fee4f2247140d56e9c30a3b",
  465. "0757113199f9c8c18c678c96d61c2c4160b9baa6", "19f8e80e5e7f6ec88a41d4f63495994692e31bf1");
  466. public static final MavenObject LUCENE_HIGHLIGHTER = new MavenObject("lucene highlighter", "org/apache/lucene", "lucene-highlighter",
  467. "3.5.0", 88000, 82334, 0, "9b38acfa185337dac65e350073a26fe2416f2b0e",
  468. "200a9b9857e589b9f5bc9f65ecf5daa37e19527d", "");
  469. public static final MavenObject LUCENE_MEMORY = new MavenObject("lucene memory", "org/apache/lucene", "lucene-memory",
  470. "3.5.0", 30000, 23000, 0, "7908e954e8c1b4b2463aa712b34fa4a5612e241d",
  471. "69b19b38d78cc3b27ea5542a14f0ebbb1625ffdd", "");
  472. public static final MavenObject UNBOUND_ID = new MavenObject("unbound id", "com/unboundid", "unboundid-ldapsdk",
  473. "2.3.0", 1383417, 1439721, 0, "6fde8d9fb4ee3e7e3d7e764e3ea57195971e2eb2",
  474. "5276d3d29630693dba99ab9f7ea54f4c471d3af1", "");
  475. public final String name;
  476. public final String group;
  477. public final String artifact;
  478. public final String version;
  479. public final int approxLibraryLen;
  480. public final int approxSourcesLen;
  481. public final int approxJavadocLen;
  482. public final String librarySHA1;
  483. public final String sourcesSHA1;
  484. public final String javadocSHA1;
  485. private MavenObject(String name, String group, String artifact, String version,
  486. int approxLibraryLen, int approxSourcesLen, int approxJavadocLen,
  487. String librarySHA1, String sourcesSHA1, String javadocSHA1) {
  488. this.name = name;
  489. this.group = group;
  490. this.artifact = artifact;
  491. this.version = version;
  492. this.approxLibraryLen = approxLibraryLen;
  493. this.approxSourcesLen = approxSourcesLen;
  494. this.approxJavadocLen = approxJavadocLen;
  495. this.librarySHA1 = librarySHA1;
  496. this.sourcesSHA1 = sourcesSHA1;
  497. this.javadocSHA1 = javadocSHA1;
  498. }
  499. private String getRepositoryPath(String jar) {
  500. return group + "/" + artifact + "/" + version + "/" + artifact + "-" + version + jar
  501. + ".jar";
  502. }
  503. private File getLocalFile(String basePath, String jar) {
  504. return new File(basePath, artifact + "-" + version + jar + ".jar");
  505. }
  506. private String getSHA1(String jar) {
  507. if (jar.equals("")) {
  508. return librarySHA1;
  509. } else if (jar.equals("-sources")) {
  510. return sourcesSHA1;
  511. } else if (jar.equals("-javadoc")) {
  512. return javadocSHA1;
  513. }
  514. return librarySHA1;
  515. }
  516. private int getApproximateLength(String jar) {
  517. if (jar.equals("")) {
  518. return approxLibraryLen;
  519. } else if (jar.equals("-sources")) {
  520. return approxSourcesLen;
  521. } else if (jar.equals("-javadoc")) {
  522. return approxJavadocLen;
  523. }
  524. return approxLibraryLen;
  525. }
  526. @Override
  527. public String toString() {
  528. return name;
  529. }
  530. }
  531. }