ソースを参照

Fixed large WARs

Ivy was downloading all optional dependencies.  Now only downloads
what's nessisary to run and does not WAR provided JARs.
Tom Flucke 7 年 前
コミット
9a05f56a41

+ 18 - 14
build.xml

@@ -2,15 +2,17 @@
 
 <project name="ieat2" basedir="." default="war" xmlns:ivy="antlib:org.apache.ivy.ant">
   <property name="app.name" value="ieat"/>
-   
+
+  <property name="lib.dir" value="lib/"/>
+  <property name="web.dir" value="web/"/>
+     
   <property name="build.version" value="2.0.0"/>
   <property name="build.java.version" value="1.8"/>
   <property name="build.dir" value="build/"/>
   <property name="build.bootstrap.path" value="/usr/lib/jvm/java-8-openjdk/jre/lib/rt.jar"/>
-  <property name="build.lib" value="build/lib/"/>
+  <property name="build.lib" value="${lib.dir}/war/"/>
   <property name="build.warfile" value="${build.dir}/${app.name}-${build.version}.war"/>
 
-  <property name="web.dir" value="web/"/>
   <property name="source.dir" value="src/"/>
   <property name="target.dir" value="${build.dir}/${app.name}/WEB-INF/classes"/>
   
@@ -19,11 +21,11 @@
   <property name="compile.deprecation" value="true"/>
   <property name="compile.optimize" value="false"/>
   <property name="compile.nowarn" value="false"/>
-  <property name="compile.dependencies" value="lib/"/>
+  <property name="compile.lib" value="${lib.dir}/compile"/>
   <property name="compile.include.ant" value="false"/>
   <path id="compile.classpath">
 	<pathelement location="${target.dir}"/>
-	<fileset dir="${compile.dependencies}" includes="*.jar"/>
+	<fileset dir="${compile.lib}" includes="*.jar"/>
   </path>
 
   <property name="ant.lib" value="${user.home}/.ant/lib"/>
@@ -40,17 +42,21 @@
 	<echo>To see list of targets, use ant -p</echo>
   </target>
 
-  <target name="install.ivy" unless="ivy.installed">
+  <target name="ivy.install" unless="ivy.installed">
     <mkdir dir="${ant.lib}"/>
     <get dest="${ant.lib}/ivy.jar"
          src="http://search.maven.org/remotecontent?filepath=org/apache/ivy/ivy/2.3.0/ivy-2.3.0.jar"/>
   </target>
 
-  <target name="resolve-dependencies" depends="install.ivy" description="Use ivy to resolve dependencies">
-    <ivy:retrieve/>
+  <target name="ivy.tree" depends="ivy.install" description="Show the dependency tree.">
+    <ivy:dependencytree />
+  </target>
+
+  <target name="ivy.resolve" depends="ivy.install" description="Use ivy to resolve dependencies">
+    <ivy:retrieve pattern="${lib.dir}/[conf]/[artifact].[ext]"/>
   </target>
 
-  <target name="compile" depends="resolve-dependencies" description="Compile source files">
+  <target name="compile" depends="ivy.resolve" description="Compile source files">
     <mkdir dir="${target.dir}"/>
 	<javac srcdir="${source.dir}"
            verbose="${compile.verbose}"
@@ -70,10 +76,7 @@
   <target name="war" depends="compile" description="Create application WAR">
 	<mkdir dir="${build.dir}"/>
 	<war warfile="${build.warfile}" webxml="web.xml">
-      <lib dir="${compile.dependencies}">
-        <exclude name="*sources.jar"/>
-        <exclude name="*javadoc.jar"/>
-      </lib>
+      <lib dir="${build.lib}"/>
       <fileset dir="web"/>
       <classes dir="${target.dir}"/>
     </war>
@@ -84,7 +87,8 @@
   </target>
 
   <target name="clean.full" depends="clean" description="Delete build files and dependencies">
-	<delete dir="${ivy.signal}" />
+	<delete dir="${ivy.signal}"/>
+    <delete dir="${lib.dir}"/>
     <ivy:cleancache/>
   </target>
 </project>

+ 8 - 6
ivy.xml

@@ -1,13 +1,15 @@
 <ivy-module version="2.0">
   <info organisation="name.tflucke" module="ieat2"/>
-  <configurations defaultconfmapping="runtime->*">
-    <conf name="compile"/>
-    <conf name="test" extends="compile"/>
+  <configurations defaultconfmapping="default->default">
+    <conf name="default" />
+    <conf name="provided" description="Provided by the environment" />
+    <conf name="compile" extends="default,provided" />
+    <conf name="war" extends="default"/>
   </configurations>
   <dependencies>
     <!-- Spring Framework -->
-    <dependency org="commons-logging" name="commons-logging" rev="1.2" conf="compile->*"/>
-    <dependency org="org.springframework" name="spring-web" rev="5.0.9.RELEASE" conf="compile->*"/>
-    <dependency org="org.springframework" name="spring-webmvc" rev="5.0.9.RELEASE" conf="compile->*"/>
+    <dependency org="commons-logging" name="commons-logging" rev="1.2"/>
+    <dependency org="org.springframework" name="spring-webmvc" rev="5.0.9.RELEASE"/>
+    <dependency org="javax.servlet" name="javax.servlet-api" rev="4.0.1" conf="provided->default"/>
   </dependencies>
 </ivy-module>

+ 0 - 1
src/name/tflucke/ieat2/WebConfig.java

@@ -18,7 +18,6 @@ public class WebConfig {
         viewResolver.setViewClass(JstlView.class);
         viewResolver.setPrefix("/views/");
         viewResolver.setSuffix(".jsp");
- 
         return viewResolver;
     }
  

+ 1 - 1
src/name/tflucke/ieat2/controllers/ViewController.java

@@ -15,7 +15,7 @@ public class ViewController {
         return "index";
     }
  
-    @RequestMapping(value = "/{file}")
+    @RequestMapping(value = "/{file:.+}")
     public String arbitraryFile(@PathVariable("file") String filename, ModelMap model) {
         return filename;
     }