Bläddra i källkod

Use Ivy instead of a bajillion jars

Change-Id: Ib6de50728ca8beba69cb4f49441b15e1ecc39558
Reviewed-on: http://gerrit.dmdirc.com/2389
Automatic-Compile: DMDirc Build Manager
Reviewed-by: Shane Mc Cormack <shane@dmdirc.com>
tags/0.6.7rc1
Chris Smith 12 år sedan
förälder
incheckning
5f3936d2fe

+ 14
- 12
build-installer.xml Visa fil

@@ -2,17 +2,19 @@
2 2
 <project name="DMDirc-installer" default="default" basedir=".">
3 3
     <description>Tasks to build the DMDirc installer.</description>
4 4
 
5
-    <taskdef name="nsis" classname="com.danielreese.nsisant.Task">
6
-        <classpath location="lib/nsisant-1.3.jar" />
7
-    </taskdef>
5
+    <target name="-init-installer">
6
+        <taskdef name="nsis" classname="com.danielreese.nsisant.Task">
7
+            <classpath location="lib/nsisant-1.3.jar" />
8
+        </taskdef>
8 9
 
9
-    <taskdef name="git-describe" classname="org.mdonoughe.JGitDescribeTask">
10
-        <classpath>
11
-            <fileset dir="lib" includes="*jgit*.jar"/>
12
-        </classpath>
13
-    </taskdef>
10
+        <taskdef name="git-describe" classname="org.mdonoughe.JGitDescribeTask">
11
+            <classpath>
12
+                <fileset dir="lib" includes="*jgit*.jar"/>
13
+           </classpath>
14
+        </taskdef>
15
+    </target>
14 16
 
15
-    <target name="installer"
17
+    <target name="installer" depends="-init-installer"
16 18
             description="Build the installer.">
17 19
         <exec executable="bash" dir="modules/installer" resultproperty="installer.result">
18 20
             <arg value="makeAll.sh"/>
@@ -28,7 +30,7 @@
28 30
         <echo message=""/>
29 31
     </target>
30 32
 
31
-    <target name="installer-stable"
33
+    <target name="installer-stable" depends="-init-installer"
32 34
             description="Build the installer for a stable release.">
33 35
         <exec executable="bash" dir="modules/installer" resultproperty="installer.result">
34 36
             <arg value="makeAll.sh"/>
@@ -47,7 +49,7 @@
47 49
         <echo message=""/>
48 50
     </target>
49 51
 
50
-    <target name="installer-unstable"
52
+    <target name="installer-unstable" depends="-init-installer"
51 53
             description="Build the installer for an unstable release.">
52 54
         <exec executable="bash" dir="modules/installer" resultproperty="installer.result">
53 55
             <arg value="release.sh"/>
@@ -66,7 +68,7 @@
66 68
     </target>
67 69
 
68 70
     <target name="installer-nsis" description="Builds the Windows installer"
69
-        depends="jar">
71
+        depends="-init-installer,jar">
70 72
        <git-describe dir="modules/installer/.git" property="version.git.nsis" subdir="windows" />
71 73
 
72 74
         <mkdir dir="modules\installer\windows\files\" />

+ 34
- 0
build-ivy.xml Visa fil

@@ -0,0 +1,34 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<project name="DMDirc-ivy" basedir="." xmlns:ivy="antlib:org.apache.ivy.ant">
3
+    <description>Ivy utilities for DMDirc</description>
4
+    
5
+    <property name="ivy.install.version" value="2.2.0"/>
6
+    <property name="ivy.cache.ttl.default" value="7d"/>
7
+    
8
+    <target name="-init-ivy">
9
+        <mkdir dir="lib"/>
10
+        <path id="ivy.classpath">
11
+           <fileset dir="lib" includes="*.jar"/>
12
+        </path>
13
+
14
+        <available classname="org.apache.ivy.ant.IvyConfigure" 
15
+              property="ivy.available" classpathref="ivy.classpath" />
16
+    </target>
17
+          
18
+    <target name="-download-ivy" depends="-init-ivy" unless="ivy.available">
19
+        <echo message="Retrieving Ivy"/>
20
+        <get src="http://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.install.version}/ivy-${ivy.install.version}.jar"
21
+             dest="lib/ivy-${ivy.install.version}.jar"/>
22
+    </target>
23
+    
24
+    <target name="-init-dependencies" depends="-download-ivy">
25
+        <!-- Regenerate the classpath as we may have just downloaded Ivy -->
26
+        <path id="ivy.classpath">
27
+            <fileset dir="lib" includes="*.jar"/>
28
+        </path>
29
+        
30
+        <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant" classpathref="ivy.classpath"/>
31
+        <ivy:settings file="etc/ivy/ivysettings.xml"/>
32
+        <ivy:retrieve symlink="true" pattern="lib/[artifact]-[revision].[ext]" />
33
+    </target>
34
+</project>

+ 12
- 0
build-parsers.xml Visa fil

@@ -0,0 +1,12 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<project name="DMDirc-parsers" default="default" basedir=".">
3
+
4
+    <target name="build-parsers" description="Build all parsers">
5
+        <subant buildpath="modules/parser" target="jar"/>
6
+    </target>
7
+
8
+    <target name="clean-parsers" description="Clean parsers">
9
+        <subant buildpath="modules/parser" target="clean"/>
10
+    </target>
11
+
12
+</project>

+ 15
- 9
build-plugins.xml Visa fil

@@ -8,12 +8,14 @@
8 8
 
9 9
     <import file="modules/plugins/build-pluginutils.xml"/>
10 10
 
11
-    <path id="libclasspath">
12
-        <fileset dir="lib" includes="*.jar"/>
13
-    </path>
11
+    <target name="-init-plugins">
12
+        <path id="libclasspath">
13
+            <fileset dir="lib" includes="*.jar"/>
14
+        </path>
14 15
 
15
-    <taskdef resource="net/sf/fikin/ant/ant.properties" classpathref="libclasspath"/>
16
-    <taskdef resource="net/sf/antcontrib/antlib.xml" classpathref="libclasspath"/>
16
+        <taskdef resource="net/sf/fikin/ant/ant.properties" classpathref="libclasspath"/>
17
+        <taskdef resource="net/sf/antcontrib/antlib.xml" classpathref="libclasspath"/>
18
+    </target>
17 19
 
18 20
     <target name="build-plugins" description="Build all plugins">
19 21
         <subant buildpath="modules/plugins" target="jar">
@@ -21,7 +23,11 @@
21 23
         </subant>
22 24
     </target>
23 25
 
24
-    <target name="-update-bundled-plugins">
26
+    <target name="clean-plugins" description="Clean all plugins">
27
+        <subant buildpath="modules/plugins" target="clean"/>
28
+    </target>
29
+
30
+    <target name="-update-bundled-plugins" depends="-init-plugins">
25 31
         <bundleplugins jar="${dist.jar}">
26 32
             <fileset dir="modules/plugins/dist/">
27 33
                 <include name="tabcompletion_*.jar"/>
@@ -51,7 +57,7 @@
51 57
     </target>
52 58
 
53 59
     <target name="publish-all-plugins" description="Publishes all plugins to the addons site"
54
-            depends="-check-addons-key,-check-addon-channel">
60
+            depends="-init-plugins,-check-addons-key,-check-addon-channel">
55 61
       <foreach target="publish-plugin" param="addon.file" inheritall="true" parallel="true">
56 62
         <path>
57 63
           <fileset dir="plugins">
@@ -62,7 +68,7 @@
62 68
     </target>
63 69
 
64 70
     <target name="publish-plugin" description="Publish a plugin to the addons site"
65
-            depends="-check-addons-key,-check-addon-channel,-check-addon-file">
71
+            depends="-init-plugins,-check-addons-key,-check-addon-channel,-check-addon-file">
66 72
       <tempfile property="temp.dir" prefix="plugintmp"/>
67 73
       <mkdir dir="${temp.dir}"/>
68 74
       <unzip src="${addon.file}" dest="${temp.dir}">
@@ -85,7 +91,7 @@
85 91
     </target>
86 92
     
87 93
     <target name="publish-addon" description="Publish an addon to the addons site"
88
-            depends="-check-addons-key,-check-addon-id,-check-addon-channel,-check-addon-file">
94
+            depends="-init-plugins,-check-addons-key,-check-addon-id,-check-addon-channel,-check-addon-file">
89 95
        <httpmpost url="http://addons.dmdirc.com/editaddon/${addon.id}" logLevel="none">
90 96
            <postString name="apikey" value="${dmdirc.addons.apikey}"/>
91 97
            <postString name="channel" value="${addon.channel}"/>

+ 10
- 1
build-properties.xml Visa fil

@@ -5,6 +5,15 @@
5 5
     <condition property="private.properties.exists">
6 6
         <available file="nbproject/private/private.properties"/>
7 7
     </condition>
8
+
9
+    <target name="-init-properties">
10
+        <path id="libclasspath">
11
+            <fileset dir="lib" includes="*.jar"/>
12
+        </path>
13
+
14
+        <taskdef resource="net/sf/fikin/ant/ant.properties" classpathref="libclasspath"/>
15
+        <taskdef resource="net/sf/antcontrib/antlib.xml" classpathref="libclasspath"/>
16
+    </target>
8 17
     
9 18
     <target name="-create-private-properties" unless="private.properties.exists">
10 19
         <mkdir dir="nbproject/private"/>
@@ -24,7 +33,7 @@
24 33
         <echo append="true" file="nbproject/private/private.properties">${line.separator}private.classpath=${line.separator}</echo>
25 34
     </target>
26 35
 
27
-    <target name="-init-private-properties" depends="-create-private-properties,-check-private-classpath,-create-private-classpath">
36
+    <target name="-init-private-properties" depends="-init-properties,-create-private-properties,-check-private-classpath,-create-private-classpath">
28 37
         <propertyregex property="private.classpath.value" input="${toString:all.libs}" regexp="\\" replace="/" global="true" defaultValue="${toString:all.libs}"/>
29 38
         <replaceregexp file="nbproject/private/private.properties" match="^private.classpath=(.*)$" flags="im" replace="private.classpath=${private.classpath.value}"/>
30 39
     </target>

+ 30
- 15
build-reports.xml Visa fil

@@ -12,8 +12,32 @@
12 12
     <target name="-allreports" depends="findbugs, cpd, pmd, checkstyle" /> 
13 13
     <target name="-mostreports" depends="cpd, pmd, checkstyle" /> 
14 14
 
15
-    <target name="-init-checkstyle">
16
-        <taskdef resource="checkstyletask.properties" classpath="lib/checkstyle-5.3-all.jar"/>
15
+    <target name="-init-checkstyle" depends="-init-dependencies">
16
+        <path id="libclasspath">
17
+            <fileset dir="lib" includes="*.jar"/>
18
+        </path>
19
+        <taskdef resource="checkstyletask.properties" classpathref="libclasspath"/>
20
+    </target>
21
+
22
+    <target name="-init-pmd" depends="-init-dependencies">
23
+        <path id="libclasspath">
24
+            <fileset dir="lib" includes="*.jar"/>
25
+        </path>
26
+        <taskdef name="pmd" classpathref="libclasspath" classname="net.sourceforge.pmd.ant.PMDTask" />
27
+    </target>
28
+
29
+    <target name="-init-cpd" depends="-init-dependencies">
30
+        <path id="libclasspath">
31
+            <fileset dir="lib" includes="*.jar"/>
32
+        </path>
33
+        <taskdef name="cpd" classpathref="libclasspath" classname="net.sourceforge.pmd.cpd.CPDTask" />
34
+    </target>
35
+
36
+    <target name="-init-findbugs" depends="-init-dependencies">
37
+        <path id="libclasspath">
38
+            <fileset dir="lib" includes="*.jar"/>
39
+        </path>
40
+        <taskdef name="findbugs" classpathref="libclasspath" classname="edu.umd.cs.findbugs.anttask.FindBugsTask" />
17 41
     </target>
18 42
     
19 43
     <target name="checkstyle-all" depends="-init-checkstyle">
@@ -32,11 +56,8 @@
32 56
         <copy file="checkstyle/sorttable.js" tofile="reports/sorttable.js"/>
33 57
     </target>
34 58
     
35
-    <target name="pmd" description="Run PMD.">
36
-        <taskdef name="pmd" classpath="lib/pmd-4.2.5.jar:lib/jaxen-1.1.1.jar:lib/asm-3.1.jar"
37
-                         classname="net.sourceforge.pmd.ant.PMDTask" />
59
+    <target name="pmd" description="Run PMD." depends="-init-pmd">
38 60
         <pmd shortFilenames="true">
39
-            
40 61
             <ruleset>checkstyle/pmd_checks.xml</ruleset>
41 62
             <formatter type="xml" toFile="reports/report-pmd.xml" linkPrefix="http://pmd.sourceforge.net/xref/"/>
42 63
             <fileset dir="src/" includes="com/dmdirc/**/*.java" />
@@ -47,11 +68,8 @@
47 68
         <xslt in="reports/report-pmd.xml" style="checkstyle/pmd.xslt" out="reports/report-pmd.html" />
48 69
     </target>
49 70
 
50
-    <target name="pmd-minimal" description="Run PMD with minimal ruleset.">
51
-        <taskdef name="pmd" classpath="lib/pmd-4.2.5.jar:lib/jaxen-1.1.1.jar:lib/asm-3.1.jar"
52
-                         classname="net.sourceforge.pmd.ant.PMDTask" />
71
+    <target name="pmd-minimal" description="Run PMD with minimal ruleset." depends="-init-pmd">
53 72
         <pmd shortFilenames="true">
54
-
55 73
             <ruleset>checkstyle/pmd_minimal.xml</ruleset>
56 74
             <formatter type="xml" toFile="reports/report-pmd.xml" linkPrefix="http://pmd.sourceforge.net/xref/"/>
57 75
             <fileset dir="src/" includes="com/dmdirc/**/*.java" />
@@ -62,9 +80,7 @@
62 80
         <xslt in="reports/report-pmd.xml" style="checkstyle/pmd.xslt" out="reports/report-pmd.html" />
63 81
     </target>
64 82
     
65
-    <target name="cpd" description="Run CPD.">
66
-        <taskdef name="cpd" classpath="lib/pmd-4.2.5.jar:lib/jaxen-1.1.1.jar:lib/asm-3.1.jar" classname="net.sourceforge.pmd.cpd.CPDTask" />
67
-        
83
+    <target name="cpd" description="Run CPD." depends="-init-cpd">
68 84
         <cpd format="xml" minimumTokenCount="50" outputFile="reports/report-cpd.xml">
69 85
             <fileset dir="src/com/">
70 86
                 <include name="**/*.java"/>
@@ -73,9 +89,8 @@
73 89
         <xslt in="reports/report-cpd.xml" style="checkstyle/cpd.xslt" out="reports/report-cpd.html" />
74 90
     </target>
75 91
     
76
-    <target name="findbugs" depends="jar" description="Run Findbugs.">
92
+    <target name="findbugs" depends="-init-findbugs,jar" description="Run Findbugs.">
77 93
         <mkdir dir="reports/findbugs" />
78
-        <taskdef name="findbugs" classpath="lib/findbugs-ant.jar" classname="edu.umd.cs.findbugs.anttask.FindBugsTask" />
79 94
         <findbugs home="/usr/share/java/findbugs/" effort="max"
80 95
                             jvmargs="-Xmx512M"
81 96
                             output="xml:withMessages"

+ 5
- 2
build-versioning.xml Visa fil

@@ -9,9 +9,12 @@
9 9
     <property name="modealiases.target" value="${defaults.output}modealiases/generic"/>
10 10
 
11 11
     <available file=".git" property="is.git"/>
12
-    <taskdef name="git-describe" classname="org.mdonoughe.JGitDescribeTask" classpathref="libclasspath"/>
13 12
 
14
-    <target name="-write-version" depends="-write-version-header, -add-version, -write-updater, -write-identities, -write-disable-updates"/>
13
+    <target name="-init-version">
14
+        <taskdef name="git-describe" classname="org.mdonoughe.JGitDescribeTask" classpathref="libclasspath"/>
15
+    </target>
16
+
17
+    <target name="-write-version" depends="-init-version, -write-version-header, -add-version, -write-updater, -write-identities, -write-disable-updates"/>
15 18
 
16 19
     <target name="-write-version-header">
17 20
         <echo file="${version.config}"># This is a DMDirc configuration file automatically generated by

+ 2
- 1
build.xml Visa fil

@@ -9,6 +9,7 @@
9 9
     <import file="build-tests.xml"/>
10 10
     <import file="build-versioning.xml"/>
11 11
     <import file="build-properties.xml"/>
12
+    <import file="build-ivy.xml"/>
12 13
 
13 14
     <target name="init-private">
14 15
         <echo>Downloading private files, if this fails please pass username and</echo>
@@ -48,7 +49,7 @@
48 49
         </jar>
49 50
     </target>
50 51
 
51
-    <target name="-pre-init" depends="-init-private-properties"/>
52
+    <target name="-pre-init" depends="-init-dependencies,-init-private-properties"/>
52 53
     <target name="-post-compile" depends="-write-version, build-plugins"/>
53 54
     <target name="-post-test-run" depends="-do-test-reports"/>
54 55
     <target name="-post-jar" depends="-update-bundled-plugins,-bundle-slf4j"/>

+ 6
- 0
etc/ivy/ant-fikin/ivy.xml Visa fil

@@ -0,0 +1,6 @@
1
+<ivy-module version="2.0">
2
+    <info organisation="net.sourceforge.fikin-ant-tasks" module="ant-fikin"/>
3
+    <dependencies>
4
+        <dependency org="commons-httpclient" name="commons-httpclient" rev="3.1" conf="default" />
5
+    </dependencies>
6
+</ivy-module>

+ 9
- 0
etc/ivy/ant-fikin/packager.xml Visa fil

@@ -0,0 +1,9 @@
1
+<packager-module version="1.0">
2
+    <property name="name" value="${ivy.packager.module}"/>
3
+    <property name="version" value="${ivy.packager.revision}"/>
4
+
5
+    <resource dest="archive" url="http://sourceforge.net/projects/fikin-ant-tasks/files/fikin-ant-tasks/${version}%20release/fikin-ant-${version}-bin.tar.gz/download" sha1="e7677de1feae55d8d4bd27cb562f9d84d7386204" type="tar.gz"/>
6
+    <build>
7
+        <move file="archive/fikin-ant-${version}/fikin-ant-${version}.jar" tofile="artifacts/jars/${name}.jar"/>
8
+    </build>
9
+</packager-module>

+ 31
- 0
etc/ivy/ivysettings.xml Visa fil

@@ -0,0 +1,31 @@
1
+<ivysettings>
2
+    <settings defaultResolver="default"/>
3
+    <resolvers>
4
+        <chain name="default">
5
+            <ibiblio name="dmdirc" root="http://archiva.dmdirc.com/archiva/repository/public/" m2compatible="true"/>
6
+            <ibiblio name="central" m2compatible="true"/>
7
+        </chain>
8
+
9
+        <ibiblio name="jgit" root="http://download.eclipse.org/jgit/maven" m2compatible="true"/>
10
+
11
+        <url name="ant-nsis">
12
+            <artifact pattern="http://cloud.github.com/downloads/dreese/nsis-ant/nsisant-[revision].jar"/>
13
+        </url>
14
+
15
+        <url name="jgit-describe">
16
+            <ivy pattern="file:///${basedir}/etc/ivy/[module]/ivy.xml"/>
17
+            <artifact pattern="http://shanemcc.github.com/jgit-describe/releases/jgit-describe-[revision].jar"/>
18
+        </url>
19
+
20
+        <packager name="packager" buildRoot="${user.home}/.ivy2/packager/build" resourceCache="${user.home}/.ivy2/packager/cache" preserveBuildDirectories="true">
21
+            <ivy pattern="file:///${basedir}/etc/ivy/[module]/ivy.xml"/>
22
+            <artifact pattern="file:///${basedir}/etc/ivy/[module]/packager.xml"/>
23
+        </packager>
24
+    </resolvers>
25
+    <modules>
26
+        <module organisation="org.sourceforce.ant-nsis" name="ant-nsis" resolver="ant-nsis"/>
27
+        <module organisation="com.github.shanemcc" name="jgit-describe" resolver="jgit-describe"/>
28
+        <module organisation="net.sourceforge.fikin-ant-tasks" name="ant-fikin" resolver="packager"/>
29
+        <module organisation="org.eclipse.jgit" name="*" resolver="jgit"/>
30
+    </modules>
31
+</ivysettings>

+ 6
- 0
etc/ivy/jgit-describe/ivy.xml Visa fil

@@ -0,0 +1,6 @@
1
+<ivy-module version="2.0">
2
+    <info organisation="com.github.shanemcc" module="jgit-describe"/>
3
+    <dependencies>
4
+        <dependency org="org.eclipse.jgit" name="org.eclipse.jgit" rev="latest.integration" conf="default" />
5
+    </dependencies>
6
+</ivy-module>

+ 31
- 0
ivy.xml Visa fil

@@ -0,0 +1,31 @@
1
+<ivy-module version="2.0">
2
+    <info organisation="com.dmdirc" module="client"/>
3
+
4
+    <configurations>
5
+        <conf name="build" description="Everything needed to support the build process"/>
6
+        <conf name="compile" description="Everything needed to compile DMDirc separately"/>
7
+        <conf name="test" description="Everything needed to test DMDirc"/>
8
+        <conf name="default" extends="build,compile,test"/>
9
+    </configurations>
10
+
11
+    <dependencies>
12
+        <dependency org="ant-contrib" name="ant-contrib" rev="1.0b3" conf="build->default" />
13
+        <dependency org="org.sourceforce.ant-nsis" name="ant-nsis" rev="1.3" conf="build->default" />
14
+        <dependency org="com.github.shanemcc" name="jgit-describe" rev="0.1" conf="build->default" />
15
+        <dependency org="net.sourceforge.fikin-ant-tasks" name="ant-fikin" rev="1.7.3" conf="build->default" />
16
+
17
+        <dependency org="org.slf4j" name="slf4j-api" rev="1.6.+" conf="compile->default" />
18
+        <dependency org="ch.qos.logback" name="logback-classic" rev="1.+" conf="test->default" />
19
+
20
+        <dependency org="com.github.peichhorn" name="lombok-pg" rev="0.10.6-DMDirc" conf="compile->default" />
21
+        
22
+        <dependency org="pmd" name="pmd" rev="4.+" conf="test->default" />
23
+        <dependency org="junit" name="junit" rev="4.+" conf="test->default" />
24
+        <dependency org="org.mockito" name="mockito-all" rev="1.+" conf="test->default" />
25
+        <dependency org="com.cenqua.clover" name="clover" rev="3.+" conf="test->default" />
26
+        <dependency org="com.puppycrawl.tools" name="checkstyle" rev="5.+" conf="test->default" />
27
+        <dependency org="net.sourceforge.findbugs" name="findbugs-ant" rev="1.+" conf="test->default" />
28
+
29
+        <exclude org="ant" module="ant"/>
30
+    </dependencies>
31
+</ivy-module>

Binär
lib/ant-contrib-1.0b3.jar Visa fil


Binär
lib/asm-3.1.jar Visa fil


Binär
lib/checkstyle-5.3-all.jar Visa fil


Binär
lib/clover.jar Visa fil


Binär
lib/commons-codec-1.3.jar Visa fil


Binär
lib/commons-httpclient-3.0-rc1.jar Visa fil


Binär
lib/commons-logging-1.0.3.jar Visa fil


Binär
lib/fikin-ant-1.7.3.jar Visa fil


Binär
lib/findbugs-ant.jar Visa fil


Binär
lib/jaxen-1.1.1.jar Visa fil


Binär
lib/jgit-describe.jar Visa fil


Binär
lib/junit-4.8.1.jar Visa fil


Binär
lib/logback-classic-1.0.0.jar Visa fil


Binär
lib/logback-core-1.0.0.jar Visa fil


Binär
lib/lombok-pg-0.10.7.jar Visa fil


Binär
lib/mockito-all-1.8.2.jar Visa fil


Binär
lib/nsisant-1.3.jar Visa fil


Binär
lib/org.eclipse.jgit-1.3.0-SNAPSHOT.jar Visa fil


Binär
lib/pmd-4.2.5.jar Visa fil


Binär
lib/slf4j-api-1.6.4.jar Visa fil


Binär
lib/xercesImpl.jar Visa fil


Laddar…
Avbryt
Spara