1 package org.apache.maven.project.artifact;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.artifact.Artifact;
23 import org.apache.maven.artifact.DefaultArtifact;
24 import org.apache.maven.artifact.deployer.ArtifactDeploymentException;
25 import org.apache.maven.artifact.handler.DefaultArtifactHandler;
26 import org.apache.maven.artifact.installer.ArtifactInstallationException;
27 import org.apache.maven.artifact.repository.ArtifactRepository;
28 import org.apache.maven.artifact.repository.DefaultArtifactRepository;
29 import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
30 import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
31 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
32 import org.apache.maven.artifact.transform.ArtifactTransformation;
33 import org.apache.maven.artifact.versioning.VersionRange;
34 import org.apache.maven.model.Build;
35 import org.apache.maven.model.Dependency;
36 import org.apache.maven.model.DependencyManagement;
37 import org.apache.maven.model.Model;
38 import org.apache.maven.model.Plugin;
39 import org.apache.maven.model.PluginManagement;
40 import org.apache.maven.model.ReportPlugin;
41 import org.apache.maven.model.Reporting;
42 import org.apache.maven.model.Scm;
43 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
44 import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
45 import org.apache.maven.project.DefaultProjectBuilderConfiguration;
46 import org.apache.maven.project.MavenProject;
47 import org.apache.maven.project.ProjectBuilderConfiguration;
48 import org.apache.maven.project.interpolation.ModelInterpolationException;
49 import org.codehaus.plexus.PlexusTestCase;
50 import org.codehaus.plexus.util.FileUtils;
51 import org.codehaus.plexus.util.IOUtil;
52 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
53
54 import java.io.File;
55 import java.io.FileReader;
56 import java.io.FileWriter;
57 import java.io.IOException;
58 import java.io.Reader;
59 import java.io.StringReader;
60 import java.io.StringWriter;
61 import java.net.URI;
62 import java.net.URISyntaxException;
63 import java.net.URL;
64 import java.util.Collections;
65 import java.util.HashSet;
66 import java.util.Iterator;
67 import java.util.Properties;
68 import java.util.Set;
69
70 public class VersionExpressionTransformationTest
71 extends PlexusTestCase
72 {
73
74 private static final String VERSION = "blah";
75
76 private VersionExpressionTransformation transformation;
77
78 private Set toDelete = new HashSet();
79
80 public void setUp()
81 throws Exception
82 {
83 super.setUp();
84
85 transformation =
86 (VersionExpressionTransformation) lookup( ArtifactTransformation.class.getName(), "version-expression" );
87 }
88
89 public void tearDown()
90 throws Exception
91 {
92 super.tearDown();
93
94 if ( toDelete != null && !toDelete.isEmpty() )
95 {
96 for ( Iterator it = toDelete.iterator(); it.hasNext(); )
97 {
98 File f = (File) it.next();
99
100 try
101 {
102 FileUtils.forceDelete( f );
103 }
104 catch ( IOException e )
105 {
106 System.out.println( "Failed to delete temp file: '" + f.getAbsolutePath() + "'." );
107 e.printStackTrace();
108 }
109 }
110 }
111 }
112
113 public void testTransformForInstall_AbortOnInvalidPOM()
114 throws URISyntaxException, IOException, XmlPullParserException, ModelInterpolationException
115 {
116 String pomResource = "version-expressions/invalid-pom.xml";
117 File pomFile = getPom( pomResource );
118
119 File projectDir;
120 if ( pomFile != null )
121 {
122 projectDir = pomFile.getParentFile();
123 }
124 else
125 {
126 projectDir = File.createTempFile( "VersionExpressionTransformationTest.project.", ".tmp.dir" );
127 projectDir.delete();
128 projectDir.mkdirs();
129
130 toDelete.add( projectDir );
131
132 File newPomFile = new File( projectDir, "pom.xml" );
133 FileUtils.copyFile( pomFile, newPomFile );
134
135 pomFile = newPomFile;
136 }
137
138 File repoDir = File.createTempFile( "VersionExpressionTransformationTest.repo.", ".tmp.dir" );
139 repoDir.delete();
140 repoDir.mkdirs();
141
142 toDelete.add( repoDir );
143
144 Artifact a =
145 new DefaultArtifact( "groupId", "artifactId", VersionRange.createFromVersion( "1" ),
146 null, "jar", null, new DefaultArtifactHandler( "jar" ) );
147
148 ProjectArtifactMetadata pam = new ProjectArtifactMetadata( a, pomFile );
149 a.addMetadata( pam );
150
151 ArtifactRepository localRepository =
152 new DefaultArtifactRepository( "local", repoDir.getAbsolutePath(), new DefaultRepositoryLayout() );
153
154 transformation.transformVersions( pomFile, a, localRepository );
155
156 assertEquals( pomFile, pam.getFile() );
157 }
158
159 public void testTransformForInstall_PreserveComments()
160 throws URISyntaxException, IOException, XmlPullParserException, ModelInterpolationException
161 {
162 String pomResource = "version-expressions/pom-with-comments.xml";
163 File pomFile = getPom( pomResource );
164
165 Model model;
166 Reader reader = null;
167 try
168 {
169 reader = new FileReader( pomFile );
170
171 model = new MavenXpp3Reader().read( reader );
172 }
173 finally
174 {
175 IOUtil.close( reader );
176 }
177
178 File newPom = runTransformVersion_VanillaArtifact( model, pomFile );
179
180 StringWriter writer = new StringWriter();
181 reader = null;
182 try
183 {
184 reader = new FileReader( newPom );
185 IOUtil.copy( reader, writer );
186 }
187 finally
188 {
189 IOUtil.close( reader );
190 }
191
192 assertTrue( "XML comment not found.", writer.toString().indexOf( "This is a comment." ) > -1 );
193
194 reader = new StringReader( writer.toString() );
195 try
196 {
197 model = new MavenXpp3Reader().read( reader );
198 }
199 finally
200 {
201 IOUtil.close( reader );
202 }
203
204 assertEquals( "1.0", model.getVersion() );
205
206 assertNotNull( model.getProperties() );
207
208 assertNotNull( model.getProperties().getProperty( "other.version" ) );
209 assertEquals( "${testVersion}", model.getProperties().getProperty( "other.version" ) );
210
211 assertNotNull( model.getScm() );
212
213 assertNotNull( model.getScm().getConnection() );
214 assertEquals( "${testVersion}", model.getScm().getConnection() );
215
216 assertNotNull( model.getScm().getUrl() );
217 assertEquals( "${testVersion}", model.getScm().getUrl() );
218 }
219
220 private File getPom( String pom )
221 throws URISyntaxException, IOException
222 {
223 ClassLoader cloader = Thread.currentThread().getContextClassLoader();
224 URL resource = cloader.getResource( pom );
225
226 if ( resource == null )
227 {
228 fail( "POM classpath resource not found: '" + pom + "'." );
229 }
230
231 File tempDir = File.createTempFile( "VersionExpressionTransformationTest.", ".dir.tmp" );
232 tempDir.delete();
233 tempDir.mkdirs();
234
235 toDelete.add( tempDir );
236
237 File pomFile = new File( tempDir, "pom.xml" );
238 FileUtils.copyFile( new File( new URI( resource.toExternalForm() ).normalize() ), pomFile );
239
240 return pomFile;
241 }
242
243 public void testTransformForResolve_DoNothing()
244 throws IOException, XmlPullParserException, ArtifactResolutionException, ArtifactNotFoundException
245 {
246 Model model = buildTestModel();
247
248 File pomDir = File.createTempFile( "VersionExpressionTransformationTest.", ".tmp.dir" );
249 pomDir.delete();
250 pomDir.mkdirs();
251
252 toDelete.add( pomDir );
253
254 File pomFile = new File( pomDir, "pom.xml" );
255
256 FileWriter writer = null;
257 try
258 {
259 writer = new FileWriter( pomFile );
260 new MavenXpp3Writer().write( writer, model );
261 }
262 finally
263 {
264 IOUtil.close( writer );
265 }
266
267 Artifact a =
268 new DefaultArtifact( "group", "artifact", VersionRange.createFromVersion( "1" ), null, "jar", null,
269 new DefaultArtifactHandler( "jar" ), false );
270 ProjectArtifactMetadata pam = new ProjectArtifactMetadata( a, pomFile );
271
272 a.addMetadata( pam );
273
274 transformation.transformForResolve( a, Collections.EMPTY_LIST, null );
275
276 assertFalse( pam.isVersionExpressionsResolved() );
277 assertEquals( pomFile, pam.getFile() );
278
279 assertFalse( new File( pomDir, "target/pom-transformed.xml" ).exists() );
280
281 FileReader reader = null;
282 try
283 {
284 reader = new FileReader( pomFile );
285 model = new MavenXpp3Reader().read( reader );
286 }
287 finally
288 {
289 IOUtil.close( reader );
290 }
291
292 assertEquals( "${testVersion}", model.getVersion() );
293 }
294
295 public void testTransformForInstall_TransformBasedOnModelProperties()
296 throws IOException, ArtifactInstallationException, XmlPullParserException
297 {
298 Model model = buildTestModel();
299
300 File pomDir = File.createTempFile( "VersionExpressionTransformationTest.", ".tmp.dir" );
301 pomDir.delete();
302 pomDir.mkdirs();
303
304 toDelete.add( pomDir );
305
306 File pomFile = new File( pomDir, "pom.xml" );
307
308 FileWriter writer = null;
309 try
310 {
311 writer = new FileWriter( pomFile );
312 new MavenXpp3Writer().write( writer, model );
313 }
314 finally
315 {
316 IOUtil.close( writer );
317 }
318
319 Artifact a =
320 new DefaultArtifact( "group", "artifact", VersionRange.createFromVersion( "1" ), null, "jar", null,
321 new DefaultArtifactHandler( "jar" ), false );
322
323 ProjectArtifactMetadata pam = new ProjectArtifactMetadata( a, pomFile );
324
325 a.addMetadata( pam );
326
327 transformation.transformForInstall( a, null );
328
329 File transformedFile = new File( pomDir, "target/pom-transformed.xml" );
330
331 assertTrue( transformedFile.exists() );
332 assertEquals( transformedFile, pam.getFile() );
333
334 FileReader reader = null;
335 try
336 {
337 reader = new FileReader( pam.getFile() );
338 StringWriter swriter = new StringWriter();
339 IOUtil.copy( reader, swriter );
340
341
342
343
344 model = new MavenXpp3Reader().read( new StringReader( swriter.toString() ) );
345 }
346 finally
347 {
348 IOUtil.close( reader );
349 }
350
351 assertTransformedVersions( model );
352 }
353
354 public void testTransformForDeploy_TransformBasedOnModelProperties()
355 throws IOException, XmlPullParserException, ArtifactDeploymentException
356 {
357 Model model = buildTestModel();
358
359 File pomDir = File.createTempFile( "VersionExpressionTransformationTest.", ".tmp.dir" );
360 pomDir.delete();
361 pomDir.mkdirs();
362
363 toDelete.add( pomDir );
364
365 File pomFile = new File( pomDir, "pom.xml" );
366
367 FileWriter writer = null;
368 try
369 {
370 writer = new FileWriter( pomFile );
371 new MavenXpp3Writer().write( writer, model );
372 }
373 finally
374 {
375 IOUtil.close( writer );
376 }
377
378 Artifact a =
379 new DefaultArtifact( "group", "artifact", VersionRange.createFromVersion( "1" ), null, "jar", null,
380 new DefaultArtifactHandler( "jar" ), false );
381
382 ProjectArtifactMetadata pam = new ProjectArtifactMetadata( a, pomFile );
383
384 a.addMetadata( pam );
385
386 transformation.transformForDeployment( a, null, null );
387
388 File transformedFile = new File( pomDir, "target/pom-transformed.xml" );
389
390 assertTrue( transformedFile.exists() );
391 assertEquals( transformedFile, pam.getFile() );
392
393 FileReader reader = null;
394 try
395 {
396 reader = new FileReader( pam.getFile() );
397 model = new MavenXpp3Reader().read( reader );
398 }
399 finally
400 {
401 IOUtil.close( reader );
402 }
403
404 assertTransformedVersions( model );
405 }
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525 public void testTransformVersion_ShouldInterpolate_VanillaArtifact_ModelProperties()
526 throws IOException, XmlPullParserException, ModelInterpolationException
527 {
528 Model model = buildTestModel();
529
530 File newPom = runTransformVersion_VanillaArtifact( model, null );
531
532 FileReader reader = null;
533 try
534 {
535 reader = new FileReader( newPom );
536
537 model = new MavenXpp3Reader().read( reader );
538 }
539 finally
540 {
541 IOUtil.close( reader );
542 }
543
544 assertTransformedVersions( model );
545 }
546
547 public void testTransformVersion_ShouldInterpolate_ArtifactWithProject_ModelProperties()
548 throws IOException, XmlPullParserException, ModelInterpolationException
549 {
550 Model model = buildTestModel();
551
552 File newPom = runTransformVersion_ArtifactWithProject( model, new DefaultProjectBuilderConfiguration(), null );
553
554 FileReader reader = null;
555 try
556 {
557 reader = new FileReader( newPom );
558
559 model = new MavenXpp3Reader().read( reader );
560 }
561 finally
562 {
563 IOUtil.close( reader );
564 }
565
566 assertTransformedVersions( model );
567 }
568
569 public void testTransformVersion_ShouldInterpolate_ArtifactWithProject_CLIProperties()
570 throws IOException, XmlPullParserException, ModelInterpolationException
571 {
572 Model model = buildTestModel();
573
574 Properties props = model.getProperties();
575 model.setProperties( new Properties() );
576
577 File newPom =
578 runTransformVersion_ArtifactWithProject(
579 model,
580 new DefaultProjectBuilderConfiguration().setExecutionProperties( props ),
581 null );
582
583 FileReader reader = null;
584 try
585 {
586 reader = new FileReader( newPom );
587
588 model = new MavenXpp3Reader().read( reader );
589 }
590 finally
591 {
592 IOUtil.close( reader );
593 }
594
595 assertTransformedVersions( model );
596 }
597
598 private File runTransformVersion_VanillaArtifact( Model model, File pomFile )
599 throws IOException, XmlPullParserException, ModelInterpolationException
600 {
601 File projectDir;
602 if ( pomFile != null )
603 {
604 projectDir = pomFile.getParentFile();
605 }
606 else
607 {
608 projectDir = File.createTempFile( "VersionExpressionTransformationTest.project.", ".tmp.dir" );
609 projectDir.delete();
610 projectDir.mkdirs();
611
612 toDelete.add( projectDir );
613
614 pomFile = new File( projectDir, "pom.xml" );
615
616 FileWriter writer = null;
617 try
618 {
619 writer = new FileWriter( pomFile );
620 new MavenXpp3Writer().write( writer, model );
621 }
622 finally
623 {
624 IOUtil.close( writer );
625 }
626 }
627
628 File repoDir = File.createTempFile( "VersionExpressionTransformationTest.repo.", ".tmp.dir" );
629 repoDir.delete();
630 repoDir.mkdirs();
631
632 toDelete.add( repoDir );
633
634 File dir = new File( projectDir, "target" );
635 dir.mkdirs();
636
637 if ( model.getBuild() == null )
638 {
639 model.setBuild( new Build() );
640 }
641
642 model.getBuild().setDirectory( dir.getAbsolutePath() );
643
644 Artifact a =
645 new DefaultArtifact( model.getGroupId(), model.getArtifactId(), VersionRange.createFromVersion( "1" ),
646 null, "jar", null, new DefaultArtifactHandler( "jar" ) );
647
648 a.addMetadata( new ProjectArtifactMetadata( a, pomFile ) );
649
650 ArtifactRepository localRepository =
651 new DefaultArtifactRepository( "local", repoDir.getAbsolutePath(), new DefaultRepositoryLayout() );
652
653 transformation.transformVersions( pomFile, a, localRepository );
654
655 return new File( projectDir, "target/pom-transformed.xml" );
656 }
657
658 private File runTransformVersion_ArtifactWithProject( Model model, ProjectBuilderConfiguration pbConfig,
659 File pomFile )
660 throws IOException, XmlPullParserException, ModelInterpolationException
661 {
662 File projectDir;
663 if ( pomFile != null )
664 {
665 projectDir = pomFile.getParentFile();
666 }
667 else
668 {
669 projectDir = File.createTempFile( "VersionExpressionTransformationTest.project.", ".tmp.dir" );
670 projectDir.delete();
671 projectDir.mkdirs();
672
673 toDelete.add( projectDir );
674
675 pomFile = new File( projectDir, "pom.xml" );
676
677 FileWriter writer = null;
678 try
679 {
680 writer = new FileWriter( pomFile );
681 new MavenXpp3Writer().write( writer, model );
682 }
683 finally
684 {
685 IOUtil.close( writer );
686 }
687 }
688
689 File repoDir = File.createTempFile( "VersionExpressionTransformationTest.repo.", ".tmp.dir" );
690 repoDir.delete();
691 repoDir.mkdirs();
692
693 toDelete.add( repoDir );
694
695 File dir = new File( projectDir, "target" );
696 dir.mkdirs();
697
698 if ( model.getBuild() == null )
699 {
700 model.setBuild( new Build() );
701 }
702
703 model.getBuild().setDirectory( dir.getAbsolutePath() );
704
705 MavenProject project = new MavenProject( model );
706 project.setFile( pomFile );
707 project.setBasedir( projectDir );
708 project.setProjectBuilderConfiguration( pbConfig );
709
710 ArtifactWithProject a =
711 new ArtifactWithProject( project, "jar", null, new DefaultArtifactHandler( "jar" ), false );
712
713 a.addMetadata( new ProjectArtifactMetadata( a, pomFile ) );
714
715 ArtifactRepository localRepository =
716 new DefaultArtifactRepository( "local", repoDir.getAbsolutePath(), new DefaultRepositoryLayout() );
717
718 transformation.transformVersions( pomFile, a, localRepository );
719
720 return new File( project.getBuild().getDirectory(), "pom-transformed.xml" );
721 }
722
723 public void testInterpolate_ShouldNotInterpolateNonVersionFields()
724 throws ModelInterpolationException, IOException, XmlPullParserException
725 {
726 Model model = buildTestModel();
727
728 Scm scm = new Scm();
729 scm.setUrl( "http://${testVersion}" );
730
731 model.setScm( scm );
732
733 File pomDir = File.createTempFile( "VersionExpressionTransformationTest.", ".tmp.dir" );
734 pomDir.delete();
735 pomDir.mkdirs();
736
737 toDelete.add( pomDir );
738 File pomFile = new File( pomDir, "pom.xml" );
739
740 FileWriter writer = null;
741 try
742 {
743 writer = new FileWriter( pomFile );
744 new MavenXpp3Writer().write( writer, model );
745 }
746 finally
747 {
748 IOUtil.close( writer );
749 }
750
751 File output = new File( pomDir, "output.xml" );
752
753 transformation.interpolateVersions( pomFile, output, model, pomDir, new DefaultProjectBuilderConfiguration() );
754
755 FileReader reader = null;
756 try
757 {
758 reader = new FileReader( output );
759 model = new MavenXpp3Reader().read( reader );
760 }
761 finally
762 {
763 IOUtil.close( reader );
764 }
765
766
767 assertFalse( model.getScm().getUrl().indexOf( VERSION ) > -1 );
768 }
769
770 public void testInterpolate_ShouldInterpolateAllVersionsUsingPOMProperties()
771 throws ModelInterpolationException, IOException, XmlPullParserException
772 {
773 Model model = buildTestModel();
774 File pomDir = File.createTempFile( "VersionExpressionTransformationTest.", ".tmp.dir" );
775 pomDir.delete();
776 pomDir.mkdirs();
777
778 toDelete.add( pomDir );
779 File pomFile = new File( pomDir, "pom.xml" );
780
781 FileWriter writer = null;
782 try
783 {
784 writer = new FileWriter( pomFile );
785 new MavenXpp3Writer().write( writer, model );
786 }
787 finally
788 {
789 IOUtil.close( writer );
790 }
791
792 File output = new File( pomDir, "output.xml" );
793
794 transformation.interpolateVersions( pomFile, output, model, pomDir, new DefaultProjectBuilderConfiguration() );
795
796 FileReader reader = null;
797 try
798 {
799 reader = new FileReader( output );
800 model = new MavenXpp3Reader().read( reader );
801 }
802 finally
803 {
804 IOUtil.close( reader );
805 }
806
807 assertTransformedVersions( model );
808 }
809
810 private void assertTransformedVersions( Model model )
811 {
812
813 assertEquals( VERSION, model.getVersion() );
814
815
816 Dependency dep = (Dependency) model.getDependencies().get( 0 );
817 assertEquals( VERSION, dep.getVersion() );
818
819
820 dep = (Dependency) model.getDependencyManagement().getDependencies().get( 0 );
821 assertEquals( VERSION, dep.getVersion() );
822
823
824 Plugin plugin = (Plugin) model.getBuild().getPlugins().get( 0 );
825 assertEquals( VERSION, plugin.getVersion() );
826
827
828 dep = (Dependency) plugin.getDependencies().get( 0 );
829 assertEquals( VERSION, dep.getVersion() );
830
831
832 plugin = (Plugin) model.getBuild().getPluginManagement().getPlugins().get( 0 );
833 assertEquals( VERSION, plugin.getVersion() );
834
835
836 dep = (Dependency) plugin.getDependencies().get( 0 );
837 assertEquals( VERSION, dep.getVersion() );
838
839
840 ReportPlugin rplugin = (ReportPlugin) model.getReporting().getPlugins().get( 0 );
841 assertEquals( VERSION, rplugin.getVersion() );
842 }
843
844 public void testInterpolate_ShouldInterpolateAllVersionsUsingCLIProperties()
845 throws ModelInterpolationException, IOException, XmlPullParserException
846 {
847 Model model = buildTestModel();
848 File pomDir = File.createTempFile( "VersionExpressionTransformationTest.", ".tmp.dir" );
849 pomDir.delete();
850 pomDir.mkdirs();
851
852 toDelete.add( pomDir );
853
854 File pomFile = new File( pomDir, "pom.xml" );
855
856 FileWriter writer = null;
857 try
858 {
859 writer = new FileWriter( pomFile );
860 new MavenXpp3Writer().write( writer, model );
861 }
862 finally
863 {
864 IOUtil.close( writer );
865 }
866
867 Properties props = model.getProperties();
868 model.setProperties( new Properties() );
869
870 File output = new File( pomDir, "output.xml" );
871
872 transformation.interpolateVersions( pomFile, output, model, pomDir,
873 new DefaultProjectBuilderConfiguration().setExecutionProperties( props ) );
874
875 FileReader reader = null;
876 try
877 {
878 reader = new FileReader( output );
879 model = new MavenXpp3Reader().read( reader );
880 }
881 finally
882 {
883 IOUtil.close( reader );
884 }
885
886 assertTransformedVersions( model );
887 }
888
889 public Model buildTestModel()
890 {
891 Model model = new Model();
892
893 model.setGroupId( "group.id" );
894 model.setArtifactId( "artifact-id" );
895 model.setPackaging( "jar" );
896
897 String expression = "${testVersion}";
898
899 Properties props = new Properties();
900 props.setProperty( "testVersion", VERSION );
901
902 model.setProperties( props );
903
904 model.setVersion( expression );
905
906 Dependency dep = new Dependency();
907 dep.setGroupId( "group.id" );
908 dep.setArtifactId( "artifact-id" );
909 dep.setVersion( expression );
910
911 model.addDependency( dep );
912
913 dep = new Dependency();
914 dep.setGroupId( "managed.group.id" );
915 dep.setArtifactId( "managed-artifact-id" );
916 dep.setVersion( expression );
917
918 DependencyManagement dmgmt = new DependencyManagement();
919 dmgmt.addDependency( dep );
920
921 model.setDependencyManagement( dmgmt );
922
923 Build build = new Build();
924 model.setBuild( build );
925
926 Plugin plugin = new Plugin();
927 plugin.setGroupId( "plugin.group" );
928 plugin.setArtifactId( "plugin-artifact" );
929 plugin.setVersion( expression );
930
931 dep = new Dependency();
932 dep.setGroupId( "plugin.dep.group" );
933 dep.setArtifactId( "plugin-dep-artifact" );
934 dep.setVersion( expression );
935 plugin.addDependency( dep );
936
937 build.addPlugin( plugin );
938
939 plugin = new Plugin();
940 plugin.setGroupId( "plugin.other.group" );
941 plugin.setArtifactId( "plugin-other-artifact" );
942 plugin.setVersion( expression );
943
944 dep = new Dependency();
945 dep.setGroupId( "plugin.dep.other.group" );
946 dep.setArtifactId( "plugin-dep-other-artifact" );
947 dep.setVersion( expression );
948 plugin.addDependency( dep );
949
950 PluginManagement pmgmt = new PluginManagement();
951 pmgmt.addPlugin( plugin );
952
953 build.setPluginManagement( pmgmt );
954
955 ReportPlugin rplugin = new ReportPlugin();
956 rplugin.setGroupId( "report.group" );
957 rplugin.setArtifactId( "report-artifact" );
958 rplugin.setVersion( expression );
959
960 Reporting reporting = new Reporting();
961 reporting.addPlugin( rplugin );
962
963 model.setReporting( reporting );
964
965 return model;
966 }
967
968 }