NIHVIVO-2774 improve the "jarlist" target in the build so known required JARs are listed in a file, and not hardcoded.
This commit is contained in:
parent
e4308ed5ab
commit
2a05f4e2ca
3 changed files with 54 additions and 6 deletions
|
@ -2,12 +2,17 @@
|
||||||
|
|
||||||
package edu.cornell.mannlib.vitro.utilities.jarlist;
|
package edu.cornell.mannlib.vitro.utilities.jarlist;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.io.FileReader;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.SortedSet;
|
import java.util.SortedSet;
|
||||||
|
@ -65,24 +70,42 @@ public class JarLister {
|
||||||
* <classpath refid="utility.run.classpath" />
|
* <classpath refid="utility.run.classpath" />
|
||||||
* <arg value="${build.dir}/${ant.project.name}.jar" />
|
* <arg value="${build.dir}/${ant.project.name}.jar" />
|
||||||
* <arg value="${appbase.dir}/lib" />
|
* <arg value="${appbase.dir}/lib" />
|
||||||
|
* <arg value="${appbase.dir}/config/jarlist/known_dependencies.txt" />
|
||||||
* </java>
|
* </java>
|
||||||
* </target>
|
* </target>
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
private static final String[] KNOWN_DEPENDENCIES = {
|
|
||||||
"mysql-connector-java-5.1.16-bin.jar", "commons-logging-1.1.1.jar" };
|
|
||||||
|
|
||||||
private final String topJar;
|
private final String topJar;
|
||||||
private final String libDirectory;
|
private final String libDirectory;
|
||||||
|
private final List<String> knownDependencies;
|
||||||
|
|
||||||
private final Map<String, Set<String>> dependencyMap = new HashMap<String, Set<String>>();
|
private final Map<String, Set<String>> dependencyMap = new HashMap<String, Set<String>>();
|
||||||
private final Set<String> dependencySet = new TreeSet<String>();
|
private final Set<String> dependencySet = new TreeSet<String>();
|
||||||
|
|
||||||
public JarLister(String[] args) {
|
public JarLister(String[] args) throws IOException {
|
||||||
topJar = args[0];
|
topJar = args[0];
|
||||||
libDirectory = args[1];
|
libDirectory = args[1];
|
||||||
|
knownDependencies = Collections
|
||||||
|
.unmodifiableList(readKnownDependencies(args[2]));
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<String> readKnownDependencies(String knownDependenciesFilename)
|
||||||
|
throws IOException {
|
||||||
|
List<String> list = new ArrayList<String>();
|
||||||
|
|
||||||
|
BufferedReader r = new BufferedReader(new FileReader(
|
||||||
|
knownDependenciesFilename));
|
||||||
|
|
||||||
|
String line;
|
||||||
|
while (null != (line = r.readLine())) {
|
||||||
|
line = line.trim();
|
||||||
|
if (!(line.startsWith("#") || line.isEmpty())) {
|
||||||
|
list.add(line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void runDepFind() throws IOException {
|
public void runDepFind() throws IOException {
|
||||||
|
@ -113,7 +136,7 @@ public class JarLister {
|
||||||
String topJarName = new File(topJar).getName();
|
String topJarName = new File(topJar).getName();
|
||||||
addDependenciesFor(topJarName);
|
addDependenciesFor(topJarName);
|
||||||
|
|
||||||
for (String known : KNOWN_DEPENDENCIES) {
|
for (String known : knownDependencies) {
|
||||||
dependencySet.add(known);
|
dependencySet.add(known);
|
||||||
addDependenciesFor(known);
|
addDependenciesFor(known);
|
||||||
}
|
}
|
||||||
|
@ -136,7 +159,7 @@ public class JarLister {
|
||||||
w.println("--------------------");
|
w.println("--------------------");
|
||||||
w.println("Known required JARs");
|
w.println("Known required JARs");
|
||||||
w.println("--------------------");
|
w.println("--------------------");
|
||||||
for (String d : KNOWN_DEPENDENCIES) {
|
for (String d : knownDependencies) {
|
||||||
w.println(" " + d);
|
w.println(" " + d);
|
||||||
}
|
}
|
||||||
w.println();
|
w.println();
|
||||||
|
|
|
@ -343,6 +343,7 @@ deploy - Deploy the application directly into the Tomcat webapps directory.
|
||||||
<classpath refid="utility.run.classpath" />
|
<classpath refid="utility.run.classpath" />
|
||||||
<arg value="${build.dir}/${ant.project.name}.jar" />
|
<arg value="${build.dir}/${ant.project.name}.jar" />
|
||||||
<arg value="${appbase.dir}/lib" />
|
<arg value="${appbase.dir}/lib" />
|
||||||
|
<arg value="${appbase.dir}/config/jarlist/known_dependencies.txt" />
|
||||||
</java>
|
</java>
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
|
|
24
webapp/config/jarlist/known_dependencies.txt
Normal file
24
webapp/config/jarlist/known_dependencies.txt
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
#
|
||||||
|
# A list of JARs that we know to be required by the source code (and notes on where they are required).
|
||||||
|
#
|
||||||
|
# The "jarlist" target of the build script will work on the assumption that these JARs and any JARs
|
||||||
|
# that they depend on are required by the app.
|
||||||
|
#
|
||||||
|
# For example, the JDBC drivers are never explicitly included, but instead are invoked using Class.forName(),
|
||||||
|
# so they are required even though the "jarlist" target won't find any such requirement.
|
||||||
|
#
|
||||||
|
|
||||||
|
# JDBC drivers that we want to include.
|
||||||
|
# Oracle and MySQL
|
||||||
|
ojdbc14_g.jar
|
||||||
|
mysql-connector-java-5.1.16-bin.jar
|
||||||
|
|
||||||
|
# Don't know who requires the Commons Logging package - Maybe JENA?
|
||||||
|
commons-logging-1.1.1.jar
|
||||||
|
|
||||||
|
# Needed by a variety of JSPs
|
||||||
|
# datapropertyBackButtonProblems.jsp
|
||||||
|
# n3Delete.jsp
|
||||||
|
# processDatapropRdfForm.jsp
|
||||||
|
# processRdfForm2.jsp
|
||||||
|
xstream-1.2.2.jar
|
Loading…
Add table
Reference in a new issue