rscm 0.4.5 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. data/CHANGES +12 -0
  2. data/README +14 -0
  3. data/Rakefile +4 -24
  4. data/lib/rscm.rb +1 -2
  5. data/lib/rscm/base.rb +289 -281
  6. data/lib/rscm/command_line.rb +135 -112
  7. data/lib/rscm/revision.rb +63 -166
  8. data/lib/rscm/revision_file.rb +8 -2
  9. data/lib/rscm/revision_poller.rb +78 -67
  10. data/lib/rscm/revisions.rb +79 -0
  11. data/lib/rscm/scm/clearcase.rb +11 -9
  12. data/lib/rscm/scm/cvs.rb +374 -352
  13. data/lib/rscm/scm/cvs_log_parser.rb +1 -0
  14. data/lib/rscm/scm/darcs.rb +9 -0
  15. data/lib/rscm/scm/perforce.rb +216 -149
  16. data/lib/rscm/scm/subversion.rb +44 -24
  17. data/lib/rscm/scm/subversion_log_parser.rb +37 -51
  18. data/lib/rscm/time_ext.rb +0 -1
  19. data/lib/rscm/version.rb +2 -2
  20. data/test/rscm/command_line_test.rb +7 -5
  21. data/test/rscm/compatibility/config.yml +4 -4
  22. data/test/rscm/compatibility/cvs_metaproject/diff.txt +52 -0
  23. data/test/rscm/compatibility/cvs_metaproject/file.txt +48 -0
  24. data/test/rscm/compatibility/cvs_metaproject/old.yml +13 -0
  25. data/test/rscm/compatibility/full.rb +2 -223
  26. data/test/rscm/compatibility/p4_gfx/files_0.yml +10 -0
  27. data/test/rscm/compatibility/p4_gfx/old.yml +26 -0
  28. data/test/rscm/compatibility/p4_gfx/revisions.yml +24 -0
  29. data/test/rscm/compatibility/p4_gfx/scm.yml +4 -0
  30. data/test/rscm/compatibility/rscm_engine.rb +197 -0
  31. data/test/rscm/compatibility/subversion_rscm/diff.txt +12 -0
  32. data/test/rscm/compatibility/subversion_rscm/file.txt +567 -0
  33. data/test/rscm/compatibility/subversion_rscm/old.yml +14 -0
  34. data/test/rscm/compatibility/subversion_rscm/revisions.yml +17 -0
  35. data/test/rscm/compatibility/subversion_rscm/scm.yml +1 -0
  36. data/test/rscm/revision_file_test.rb +10 -0
  37. data/test/rscm/revision_poller_test.rb +91 -0
  38. data/test/rscm/revision_test.rb +22 -117
  39. data/test/rscm/revisions_test.rb +80 -0
  40. data/test/rscm/scm/cvs_log_parser_test.rb +569 -567
  41. data/test/rscm/scm/cvs_test.rb +6 -3
  42. data/test/rscm/scm/darcs_test.rb +4 -7
  43. data/test/rscm/scm/perforce_test.rb +6 -2
  44. data/test/rscm/scm/star_team_test.rb +10 -0
  45. data/test/rscm/scm/subversion_log_parser_test.rb +38 -5
  46. data/test/rscm/scm/subversion_test.rb +2 -3
  47. data/test/rscm/test_helper.rb +41 -2
  48. data/testproject/damagecontrolled/build.xml +154 -154
  49. data/testproject/damagecontrolled/src/java/com/thoughtworks/damagecontrolled/Thingy.java +6 -6
  50. metadata +19 -7
  51. data/lib/rscm/historic_file.rb +0 -30
  52. data/test/rscm/compatibility/damage_control_minimal.rb +0 -104
  53. data/test/rscm/revision_fixture.rb +0 -20
  54. data/test/rscm/revisions.yaml +0 -42
  55. data/test/rscm/scm/star_team.rb +0 -36
@@ -1,13 +1,16 @@
1
- require 'rscm/test_helper'
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
2
 
3
3
  module RSCM
4
4
  class CvsTest < Test::Unit::TestCase
5
- include Compatibility::DamageControlMinimal
6
- include Compatibility::Full
5
+ compat(:rscm_engine, :full)
7
6
 
8
7
  def create_scm(repository_root_dir, path)
9
8
  Cvs.local(repository_root_dir, path)
10
9
  end
10
+
11
+ def test_dummy
12
+ # need 1 test in case p4 is not installed (compat will not add tests)
13
+ end
11
14
  end
12
15
 
13
16
  class Cvs
@@ -1,14 +1,11 @@
1
- require 'test/unit'
2
- require 'fileutils'
3
- require 'rscm'
4
- require 'rscm/generic_scm_tests'
1
+ require File.dirname(__FILE__) + '/../test_helper'
5
2
 
6
3
  module RSCM
7
4
  class DarcsTest < Test::Unit::TestCase
8
- include GenericSCMTests
5
+ compat(:rscm_engine)
9
6
 
10
- def create_scm(repository_root_dir, path)
11
- Darcs.new(repository_root_dir)
7
+ def test_dummy
8
+ # need 1 test in case darcs is not installed (compat will not add tests)
12
9
  end
13
10
  end
14
11
  end
@@ -1,7 +1,11 @@
1
- require 'rscm/test_helper'
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
2
 
3
3
  module RSCM
4
4
  class PerforceTest < Test::Unit::TestCase
5
- include Compatibility::DamageControlMinimal
5
+ compat(:rscm_engine)
6
+
7
+ def test_dummy
8
+ # need 1 test in case p4 is not installed (compat will not add tests)
9
+ end
6
10
  end
7
11
  end
@@ -0,0 +1,10 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ module RSCM
4
+ class StarTeamTest < Test::Unit::TestCase
5
+
6
+ def test_dummy
7
+ end
8
+
9
+ end
10
+ end
@@ -1,6 +1,5 @@
1
- require 'test/unit'
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
2
  require 'stringio'
3
- require 'rscm'
4
3
 
5
4
  module RSCM
6
5
  class SubversionLogParserTest < Test::Unit::TestCase
@@ -135,7 +134,7 @@ Updated website for 1.1.2 release.
135
134
  ------------------------------------------------------------------------
136
135
  EOF
137
136
 
138
- def test_should_filter_out_unwanted_entries
137
+ def OBSOLETE_SINCE_URL_ARG_WILL_FILTER_test_should_filter_out_unwanted_entries
139
138
  parser = SubversionLogParser.new(StringIO.new(SVN_XSTREAM_LOG), "svn://foo/trunk/xstream/")
140
139
  revisions = parser.parse_revisions
141
140
  assert_equal(593, revisions[0].identifier)
@@ -180,7 +179,8 @@ EOF
180
179
  assert_equal("build.xml", slep.relative_path(url, "trunk/xstream/build.xml"))
181
180
  assert_equal("build.xml", slep.relative_path(url, "scm/trunk/xstream/build.xml"))
182
181
  assert_equal("boo/build.xml", slep.relative_path(url, "trunk/xstream/boo/build.xml"))
183
- assert_equal(nil, slep.relative_path(url, "trunk/xstream-website/boo/build.xml"))
182
+ #obsolete since url arg will filter out
183
+ #assert_equal(nil, slep.relative_path(url, "trunk/xstream-website/boo/build.xml"))
184
184
  end
185
185
 
186
186
  # http://jira.codehaus.org/browse/DC-427
@@ -218,10 +218,43 @@ EOF
218
218
 
219
219
  # We support paths from root only if path is specified
220
220
  def test_no_prefix_log
221
- parser = SubversionLogParser.new(StringIO.new(NO_PREFIX_LOG), "svn://mooky/funny/", nil, "")
221
+ parser = SubversionLogParser.new(StringIO.new(NO_PREFIX_LOG), "svn://mooky/funny", nil, nil, "")
222
222
  revisions = parser.parse_revisions
223
223
  assert_equal("Rakefile", revisions[0][0].path)
224
224
  assert_equal("lib/foo.rb", revisions[0][1].path)
225
225
  end
226
+
227
+ NO_AUTHOR_LOG = <<-EOF
228
+ ------------------------------------------------------------------------
229
+ r407118 | (no author) | (no date) | 1 line
230
+
231
+
232
+ ------------------------------------------------------------------------
233
+ r407119 | sebor | 2006-05-16 20:27:28 -0500 (Tue, 16 May 2006) | 5 lines
234
+ Changed paths:
235
+ M /incubator/stdcxx/trunk/tests/containers/23.vector.modifiers.cpp
236
+
237
+ 2006-05-16 Martin Sebor <sebor@roguewave.com>
238
+
239
+ * vector_modifiers.cpp (test_insert): Corrected formatting.
240
+ (test_insert_range): Added test cases exercising STDCXX-179.
241
+
242
+ ------------------------------------------------------------------------
243
+ EOF
244
+
245
+ # sometimes svn logs have no authors or dates. this is probably because of
246
+ # migrating from a different scm such as cvs
247
+ def test_no_author_log
248
+ url = "http://svn.apache.org/repos/asf/incubator/stdcxx/trunk"
249
+ path = "incubator/stdcxx/trunk"
250
+ parser = SubversionLogParser.new(StringIO.new(NO_AUTHOR_LOG), url, nil, nil, path)
251
+ revisions = parser.parse_revisions
252
+ revisions.sort!
253
+ assert_equal(1, revisions.length)
254
+
255
+ assert_equal(1, revisions[0].length)
256
+ assert_equal("tests/containers/23.vector.modifiers.cpp", revisions[0][0].path)
257
+ end
258
+
226
259
  end
227
260
  end
@@ -1,9 +1,8 @@
1
- require 'rscm/test_helper'
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
2
 
3
3
  module RSCM
4
4
  class SubversionTest < Test::Unit::TestCase
5
- include Compatibility::DamageControlMinimal
6
- include Compatibility::Full
5
+ compat(:rscm_engine, :full)
7
6
 
8
7
  def create_scm(repository_root_dir, path)
9
8
  Subversion.new(PathConverter.filepath_to_nativeurl("#{repository_root_dir}/#{path}"), path)
@@ -1,9 +1,48 @@
1
1
  require 'test/unit'
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../lib')
3
+ $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../test')
4
+ $LOAD_PATH.uniq!
2
5
  require 'rscm'
3
6
  require 'rscm/tempdir'
4
7
  require 'rscm/compatibility/full'
5
- require 'rscm/compatibility/damage_control_minimal'
8
+ require 'rscm/compatibility/rscm_engine'
6
9
 
7
10
  module RSCM
8
- DEFAULT_OPTIONS = {:stdout => 'target/stdout.log', :stderr => 'target/stderr.log'}.freeze
11
+ class Base
12
+ DEFAULT_OPTIONS = {:stdout => 'target/stdout.log', :stderr => 'target/stderr.log'}.freeze unless defined? DEFAULT_OPTIONS
13
+
14
+ def default_options
15
+ DEFAULT_OPTIONS
16
+ end
17
+ end
18
+ end
19
+
20
+ module Test
21
+ module Unit
22
+ class TestCase
23
+ SUITES = {
24
+ :rscm_engine => RSCM::Compatibility::RscmEngine,
25
+ :full => RSCM::Compatibility::Full
26
+ } unless defined? SUITES
27
+
28
+ # Call from scm adapter tests to have compatibility test suites included.
29
+ def self.compat(*suite_keys)
30
+ scm_class_name = self.name.match(/(.*)Test/)[1]
31
+ scm_class = eval(scm_class_name)
32
+ scm = scm_class.new
33
+ if(scm.installed?)
34
+ suite_keys.each do |key|
35
+ suite = SUITES[key]
36
+ raise "The compat method arguments must be among #{SUITES.keys.join(', ')}" if suite.nil?
37
+
38
+ STDERR.puts "INFO: Running #{suite} suite for #{scm_class_name}."
39
+ include suite
40
+ end
41
+ else
42
+ STDERR.puts "WARNING: Skipping #{suite} suite for #{scm_class_name}. It's not available."
43
+ end
44
+ end
45
+
46
+ end
47
+ end
9
48
  end
@@ -1,155 +1,155 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
-
3
- <!--build.xml generated by maven from project.xml version 1.0
4
- on date October 26 2003, time 1700-->
5
-
6
- <project default="jar" name="damagecontrolled" basedir=".">
7
- <property name="defaulttargetdir" value="target">
8
- </property>
9
- <property name="libdir" value="target/lib">
10
- </property>
11
- <property name="classesdir" value="target/classes">
12
- </property>
13
- <property name="testclassesdir" value="target/test-classes">
14
- </property>
15
- <property name="testreportdir" value="target/test-reports">
16
- </property>
17
- <property name="distdir" value="dist">
18
- </property>
19
- <property name="javadocdir" value="dist/docs/api">
20
- </property>
21
- <property name="final.name" value="damagecontrolled-1.0">
22
- </property>
23
- <target name="init" description="o Initializes some properties">
24
- <mkdir dir="${libdir}">
25
- </mkdir>
26
- <condition property="noget">
27
- <equals arg2="only" arg1="${build.sysclasspath}">
28
- </equals>
29
- </condition>
30
- </target>
31
- <target name="compile" description="o Compile the code" depends="get-deps">
32
- <mkdir dir="${classesdir}">
33
- </mkdir>
34
- <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
35
- <src>
36
- <pathelement location="${basedir}/src/java">
37
- </pathelement>
38
- </src>
39
- <classpath>
40
- <fileset dir="${libdir}">
41
- <include name="*.jar">
42
- </include>
43
- </fileset>
44
- </classpath>
45
- </javac>
46
- </target>
47
- <target name="jar" description="o Create the jar" depends="compile,test">
48
- <jar jarfile="target/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
49
- </jar>
50
- </target>
51
- <target name="clean" description="o Clean up the generated directories">
52
- <delete dir="${defaulttargetdir}">
53
- </delete>
54
- <delete dir="${distdir}">
55
- </delete>
56
- </target>
57
- <target name="dist" description="o Create a distribution" depends="jar, javadoc">
58
- <mkdir dir="dist">
59
- </mkdir>
60
- <copy todir="dist">
61
- <fileset dir="${defaulttargetdir}" includes="*.jar">
62
- </fileset>
63
- <fileset dir="${basedir}" includes="LICENSE*, README*">
64
- </fileset>
65
- </copy>
66
- </target>
67
- <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
68
- <fail message="There were test failures.">
69
- </fail>
70
- </target>
71
- <target name="internal-test" depends="compile-tests">
72
- <mkdir dir="${testreportdir}">
73
- </mkdir>
74
- <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
75
- <sysproperty key="basedir" value=".">
76
- </sysproperty>
77
- <formatter type="xml">
78
- </formatter>
79
- <formatter usefile="false" type="plain">
80
- </formatter>
81
- <classpath>
82
- <fileset dir="${libdir}">
83
- <include name="*.jar">
84
- </include>
85
- </fileset>
86
- <pathelement path="${testclassesdir}">
87
- </pathelement>
88
- <pathelement path="${classesdir}">
89
- </pathelement>
90
- </classpath>
91
- <batchtest todir="${testreportdir}">
92
- <fileset dir="C:\scm\damagecontrol\testdata\damagecontrolled\src\test">
93
- <include name="**/*TestCase.java">
94
- </include>
95
- </fileset>
96
- </batchtest>
97
- </junit>
98
- </target>
99
- <target name="compile-tests" depends="compile">
100
- <mkdir dir="${testclassesdir}">
101
- </mkdir>
102
- <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
103
- <src>
104
- <pathelement location="C:\scm\damagecontrol\testdata\damagecontrolled\src\test">
105
- </pathelement>
106
- </src>
107
- <classpath>
108
- <fileset dir="${libdir}">
109
- <include name="*.jar">
110
- </include>
111
- </fileset>
112
- <pathelement path="${classesdir}">
113
- </pathelement>
114
- </classpath>
115
- </javac>
116
- </target>
117
- <target name="javadoc" description="o Generate javadoc" depends="jar">
118
- <mkdir dir="${javadocdir}">
119
- </mkdir>
120
- <tstamp>
121
- <format pattern="2003-yyyy" property="year">
122
- </format>
123
- </tstamp>
124
- <property name="copyright" value="Copyright &amp;copy; . All Rights Reserved.">
125
- </property>
126
- <property name="title" value="DamageControlled 1.0 API">
127
- </property>
128
- <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="C:\scm\damagecontrol\testdata\damagecontrolled\src\java" packagenames="com.thoughtworks.*">
129
- <classpath>
130
- <fileset dir="${libdir}">
131
- <include name="*.jar">
132
- </include>
133
- </fileset>
134
- <pathelement location="target/${final.name}.jar">
135
- </pathelement>
136
- </classpath>
137
- </javadoc>
138
- </target>
139
- <target name="get-deps" unless="noget" depends="init">
140
- <!--
141
- <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
142
- </get>
143
- <get dest="${libdir}/ant-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar">
144
- </get>
145
- <get dest="${libdir}/ant-optional-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar">
146
- </get>
147
- -->
148
- </target>
149
- <target name="install-maven">
150
- <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
151
- </get>
152
- <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
153
- </unjar>
154
- </target>
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+
3
+ <!--build.xml generated by maven from project.xml version 1.0
4
+ on date October 26 2003, time 1700-->
5
+
6
+ <project default="jar" name="damagecontrolled" basedir=".">
7
+ <property name="defaulttargetdir" value="target">
8
+ </property>
9
+ <property name="libdir" value="target/lib">
10
+ </property>
11
+ <property name="classesdir" value="target/classes">
12
+ </property>
13
+ <property name="testclassesdir" value="target/test-classes">
14
+ </property>
15
+ <property name="testreportdir" value="target/test-reports">
16
+ </property>
17
+ <property name="distdir" value="dist">
18
+ </property>
19
+ <property name="javadocdir" value="dist/docs/api">
20
+ </property>
21
+ <property name="final.name" value="damagecontrolled-1.0">
22
+ </property>
23
+ <target name="init" description="o Initializes some properties">
24
+ <mkdir dir="${libdir}">
25
+ </mkdir>
26
+ <condition property="noget">
27
+ <equals arg2="only" arg1="${build.sysclasspath}">
28
+ </equals>
29
+ </condition>
30
+ </target>
31
+ <target name="compile" description="o Compile the code" depends="get-deps">
32
+ <mkdir dir="${classesdir}">
33
+ </mkdir>
34
+ <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
35
+ <src>
36
+ <pathelement location="${basedir}/src/java">
37
+ </pathelement>
38
+ </src>
39
+ <classpath>
40
+ <fileset dir="${libdir}">
41
+ <include name="*.jar">
42
+ </include>
43
+ </fileset>
44
+ </classpath>
45
+ </javac>
46
+ </target>
47
+ <target name="jar" description="o Create the jar" depends="compile,test">
48
+ <jar jarfile="target/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
49
+ </jar>
50
+ </target>
51
+ <target name="clean" description="o Clean up the generated directories">
52
+ <delete dir="${defaulttargetdir}">
53
+ </delete>
54
+ <delete dir="${distdir}">
55
+ </delete>
56
+ </target>
57
+ <target name="dist" description="o Create a distribution" depends="jar, javadoc">
58
+ <mkdir dir="dist">
59
+ </mkdir>
60
+ <copy todir="dist">
61
+ <fileset dir="${defaulttargetdir}" includes="*.jar">
62
+ </fileset>
63
+ <fileset dir="${basedir}" includes="LICENSE*, README*">
64
+ </fileset>
65
+ </copy>
66
+ </target>
67
+ <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
68
+ <fail message="There were test failures.">
69
+ </fail>
70
+ </target>
71
+ <target name="internal-test" depends="compile-tests">
72
+ <mkdir dir="${testreportdir}">
73
+ </mkdir>
74
+ <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
75
+ <sysproperty key="basedir" value=".">
76
+ </sysproperty>
77
+ <formatter type="xml">
78
+ </formatter>
79
+ <formatter usefile="false" type="plain">
80
+ </formatter>
81
+ <classpath>
82
+ <fileset dir="${libdir}">
83
+ <include name="*.jar">
84
+ </include>
85
+ </fileset>
86
+ <pathelement path="${testclassesdir}">
87
+ </pathelement>
88
+ <pathelement path="${classesdir}">
89
+ </pathelement>
90
+ </classpath>
91
+ <batchtest todir="${testreportdir}">
92
+ <fileset dir="C:\scm\damagecontrol\testdata\damagecontrolled\src\test">
93
+ <include name="**/*TestCase.java">
94
+ </include>
95
+ </fileset>
96
+ </batchtest>
97
+ </junit>
98
+ </target>
99
+ <target name="compile-tests" depends="compile">
100
+ <mkdir dir="${testclassesdir}">
101
+ </mkdir>
102
+ <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
103
+ <src>
104
+ <pathelement location="C:\scm\damagecontrol\testdata\damagecontrolled\src\test">
105
+ </pathelement>
106
+ </src>
107
+ <classpath>
108
+ <fileset dir="${libdir}">
109
+ <include name="*.jar">
110
+ </include>
111
+ </fileset>
112
+ <pathelement path="${classesdir}">
113
+ </pathelement>
114
+ </classpath>
115
+ </javac>
116
+ </target>
117
+ <target name="javadoc" description="o Generate javadoc" depends="jar">
118
+ <mkdir dir="${javadocdir}">
119
+ </mkdir>
120
+ <tstamp>
121
+ <format pattern="2003-yyyy" property="year">
122
+ </format>
123
+ </tstamp>
124
+ <property name="copyright" value="Copyright &amp;copy; . All Rights Reserved.">
125
+ </property>
126
+ <property name="title" value="DamageControlled 1.0 API">
127
+ </property>
128
+ <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="C:\scm\damagecontrol\testdata\damagecontrolled\src\java" packagenames="com.thoughtworks.*">
129
+ <classpath>
130
+ <fileset dir="${libdir}">
131
+ <include name="*.jar">
132
+ </include>
133
+ </fileset>
134
+ <pathelement location="target/${final.name}.jar">
135
+ </pathelement>
136
+ </classpath>
137
+ </javadoc>
138
+ </target>
139
+ <target name="get-deps" unless="noget" depends="init">
140
+ <!--
141
+ <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
142
+ </get>
143
+ <get dest="${libdir}/ant-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar">
144
+ </get>
145
+ <get dest="${libdir}/ant-optional-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar">
146
+ </get>
147
+ -->
148
+ </target>
149
+ <target name="install-maven">
150
+ <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
151
+ </get>
152
+ <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
153
+ </unjar>
154
+ </target>
155
155
  </project>