1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.archetype.mojos;
20
21 import javax.inject.Inject;
22
23 import java.io.File;
24
25 import org.apache.maven.archetype.catalog.ArchetypeCatalog;
26 import org.apache.maven.archetype.repositorycrawler.RepositoryCrawler;
27 import org.apache.maven.plugin.AbstractMojo;
28 import org.apache.maven.plugin.MojoExecutionException;
29 import org.apache.maven.plugins.annotations.Mojo;
30 import org.apache.maven.plugins.annotations.Parameter;
31
32
33
34
35
36
37 @Mojo(name = "crawl", requiresProject = false)
38 public class CrawlRepositoryMojo extends AbstractMojo {
39
40
41
42 @Parameter(property = "catalog")
43 private File catalogFile;
44
45 private RepositoryCrawler crawler;
46
47 @Inject
48 public CrawlRepositoryMojo(RepositoryCrawler crawler) {
49 this.crawler = crawler;
50 }
51
52
53
54
55 @Parameter(property = "repository", defaultValue = "${settings.localRepository}")
56 private File repository;
57
58 @Override
59 public void execute() throws MojoExecutionException {
60 getLog().debug("repository " + repository + ", catalogFile " + catalogFile);
61
62 if (repository == null) {
63 throw new MojoExecutionException("The repository is not defined. Use -Drepository=/path/to/repository");
64 }
65
66 ArchetypeCatalog catalog = crawler.crawl(repository);
67
68 if (catalogFile == null) {
69 catalogFile = new File(repository, "archetype-catalog.xml");
70 }
71
72 crawler.writeCatalog(catalog, catalogFile);
73 }
74 }