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 @Override
58 public void execute()
59 throws MojoExecutionException, MojoFailureException
60 {
61 getLog().debug( "repository " + repository + ", catalogFile " + catalogFile );
62
63 if ( repository == null )
64 {
65 throw new MojoFailureException( "The repository is not defined. Use -Drepository=/path/to/repository" );
66 }
67
68 ArchetypeCatalog catalog = crawler.crawl( repository );
69
70 if ( catalogFile == null )
71 {
72 catalogFile = new File( repository, "archetype-catalog.xml" );
73 }
74
75 crawler.writeCatalog( catalog, catalogFile );
76 }
77 }