1 package org.apache.maven.archetype.mojos;
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.archetype.catalog.ArchetypeCatalog;
23 import org.apache.maven.archetype.repositorycrawler.RepositoryCrawler;
24 import org.apache.maven.plugin.AbstractMojo;
25 import org.apache.maven.plugin.MojoExecutionException;
26 import org.apache.maven.plugin.MojoFailureException;
27 import org.apache.maven.plugins.annotations.Component;
28 import org.apache.maven.plugins.annotations.Mojo;
29 import org.apache.maven.plugins.annotations.Parameter;
30
31 import java.io.File;
32
33
34
35
36
37
38 @Mojo( name = "crawl", requiresProject = false )
39 public class CrawlRepositoryMojo
40 extends AbstractMojo
41 {
42
43
44
45 @Parameter( property = "catalog" )
46 private File catalogFile;
47
48 @Component
49 private RepositoryCrawler crawler;
50
51
52
53
54 @Parameter( property = "repository", defaultValue = "${settings.localRepository}" )
55 private File repository;
56
57 public void execute()
58 throws MojoExecutionException, MojoFailureException
59 {
60 getLog().debug( "repository " + repository + ", catalogFile " + catalogFile );
61
62 if ( repository == null )
63 {
64 throw new MojoFailureException( "The repository is not defined. Use -Drepository=/path/to/repository" );
65 }
66
67 ArchetypeCatalog catalog = crawler.crawl( repository );
68
69 if ( catalogFile == null )
70 {
71 catalogFile = new File( repository, "archetype-catalog.xml" );
72 }
73
74 crawler.writeCatalog( catalog, catalogFile );
75 }
76 }