Java源码示例:org.apache.maven.archetype.catalog.Archetype
示例1
@Override
protected void setArchetypeArtifactId(String archetypeArtifactId) {
super.setArchetypeArtifactId(archetypeArtifactId);
if (Strings.isNotBlank(archetypeArtifactId)) {
if (Strings.isNullOrBlank(getArchetypeVersion())) {
String version = null;
if (catalogFactory != null) {
List<Archetype> archetypes = catalogFactory.getArchetypeCatalog().getArchetypes();
for (Archetype archetype : archetypes) {
if (Objects.equal(archetype.getArtifactId(), archetypeArtifactId)) {
version = archetype.getVersion();
}
}
}
if (Strings.isNullOrBlank(version)) {
version = VersionHelper.fabric8ArchetypesVersion();
}
if (version != null) {
setArchetypeVersion(version);
} else {
throw new IllegalArgumentException("Could not find an archetype for id " + archetypeArtifactId
+ " in the archetype catalog " + catalogFactory + " or find version for environment variable " + VersionHelper.ENV_FABRIC8_ARCHETYPES_VERSION);
}
}
}
}
示例2
@Test
public void testRun_propagatesCoreException()
throws OperationCanceledException, InterruptedException, CoreException {
IProjectConfigurationManager manager = mock(IProjectConfigurationManager.class);
CoreException exception = new CoreException(StatusUtil.error(this, "test error message"));
doThrow(exception).when(manager).createArchetypeProjects(
any(IPath.class), any(Archetype.class), anyString(), anyString(), anyString(), anyString(),
any(Properties.class), any(ProjectImportConfiguration.class), any(IProgressMonitor.class));
DataflowProjectCreator creator = new DataflowProjectCreator(manager);
creator.setMavenGroupId("com.example");
creator.setMavenArtifactId("some-artifact-id");
creator.setPackage("com.example");
creator.setArchetypeVersion("123.456.789");
try {
creator.run(new NullProgressMonitor());
fail();
} catch (InvocationTargetException ex) {
assertEquals(exception, ex.getCause());
}
}
示例3
@TransactionalStoreBlob
protected int doRebuildArchetypeCatalog() throws IOException {
final Path path = Files.createTempFile("hosted-archetype-catalog", "xml");
int count = 0;
try {
StorageTx tx = UnitOfWork.currentTx();
Iterable<Archetype> archetypes = getArchetypes(tx);
ArchetypeCatalog hostedCatalog = new ArchetypeCatalog();
Iterables.addAll(hostedCatalog.getArchetypes(), archetypes);
count = hostedCatalog.getArchetypes().size();
try (Content content = MavenFacetUtils.createTempContent(
path,
ContentTypes.APPLICATION_XML,
(OutputStream outputStream) -> MavenModels.writeArchetypeCatalog(outputStream, hostedCatalog))) {
MavenFacetUtils.putWithHashes(mavenFacet, archetypeCatalogMavenPath, content);
log.trace("Rebuilt hosted archetype catalog for {} with {} archetype", getRepository().getName(), count);
}
}
finally {
Files.delete(path);
}
return count;
}
示例4
/**
* Returns the archetypes to publish for a hosted repository, the SELECT result count will be in parity with
* published records count!
*/
protected Iterable<Archetype> getArchetypes(final StorageTx tx) throws IOException {
Map<String, Object> sqlParams = new HashMap<>();
sqlParams.put("bucket", AttachedEntityHelper.id(tx.findBucket(getRepository())));
sqlParams.put("packaging", MAVEN_ARCHETYPE_PACKAGING);
return transform(
tx.browse(SELECT_HOSTED_ARCHETYPES, sqlParams),
(ODocument document) -> {
Archetype archetype = new Archetype();
archetype.setGroupId(document.field("groupId", String.class));
archetype.setArtifactId(document.field("artifactId", String.class));
archetype.setVersion(document.field("version", String.class));
archetype.setDescription(document.field("description", String.class));
return archetype;
}
);
}
示例5
@Override
public boolean apply(final Archetype input) {
String g = input.getGroupId();
String a = input.getArtifactId();
String v = input.getVersion();
// G
Map<String, Set<String>> aMap = gav.get(g);
if (aMap == null) {
aMap = new HashMap<>();
gav.put(g, aMap);
}
// A
Set<String> vSet = aMap.get(a);
if (vSet == null) {
vSet = new HashSet<>();
aMap.put(a, vSet);
}
// V
return vSet.add(v);
}
示例6
@Override
public Result execute(UIExecutionContext context) throws Exception {
UIContext uiContext = context.getUIContext();
Project project = (Project) uiContext.getAttributeMap().get(Project.class);
Archetype chosenArchetype = archetype.getValue();
String coordinate = chosenArchetype.getGroupId() + ":" + chosenArchetype.getArtifactId() + ":"
+ chosenArchetype.getVersion();
DependencyQueryBuilder depQuery = DependencyQueryBuilder.create(coordinate);
String repository = chosenArchetype.getRepository();
if (!Strings.isNullOrEmpty(repository)) {
if (repository.endsWith(".xml")) {
int lastRepositoryPath = repository.lastIndexOf('/');
if (lastRepositoryPath > -1)
repository = repository.substring(0, lastRepositoryPath);
}
if (!repository.isEmpty()) {
depQuery.setRepositories(new DependencyRepository("archetype", repository));
}
}
Dependency resolvedArtifact = dependencyResolver.resolveArtifact(depQuery);
FileResource<?> artifact = resolvedArtifact.getArtifact();
MetadataFacet metadataFacet = project.getFacet(MetadataFacet.class);
File fileRoot = project.getRoot().reify(DirectoryResource.class).getUnderlyingResourceObject();
ArchetypeHelper archetypeHelper = new ArchetypeHelper(artifact.getResourceInputStream(), fileRoot,
metadataFacet.getProjectGroupName(), metadataFacet.getProjectName(), metadataFacet.getProjectVersion());
JavaSourceFacet facet = project.getFacet(JavaSourceFacet.class);
archetypeHelper.setPackageName(facet.getBasePackage());
archetypeHelper.execute();
return Results.success();
}
示例7
/**
* Merges the contents of passed in catalogs
*/
public void merge(final OutputStream outputStream,
final MavenPath mavenPath,
final Map<Repository, Content> contents)
{
log.debug("Merge archetype catalog for {}", mavenPath.getPath());
ArchetypeCatalog mergedCatalog = new ArchetypeCatalog();
UniqueFilter uniqueFilter = new UniqueFilter();
try {
for (Map.Entry<Repository, Content> entry : contents.entrySet()) {
String origin = entry.getKey().getName() + " @ " + mavenPath.getPath();
ArchetypeCatalog catalog = MavenModels.readArchetypeCatalog(entry.getValue().openInputStream());
if (catalog == null) {
log.debug("Corrupted archetype catalog: {}", origin);
continue;
}
for (Archetype archetype : catalog.getArchetypes()) {
if (uniqueFilter.apply(archetype)) {
archetype.setRepository(null);
mergedCatalog.addArchetype(archetype);
}
}
}
// sort the archetypes
sortArchetypes(mergedCatalog);
MavenModels.writeArchetypeCatalog(outputStream, mergedCatalog);
}
catch (IOException e) {
log.error("Unable to merge {}", mavenPath, e);
}
}
示例8
private void sortArchetypes(final ArchetypeCatalog mergedCatalog) {
Collections.sort(mergedCatalog.getArchetypes(),
(Archetype o1, Archetype o2) ->
{
int gc = o1.getGroupId().compareTo(o2.getGroupId());
if (gc != 0) {
return gc;
}
int ac = o1.getArtifactId().compareTo(o2.getArtifactId());
if (ac != 0) {
return ac;
}
return version(o1.getVersion()).compareTo(version(o2.getVersion()));
});
}
示例9
private Iterable<Archetype> getArchetypes() {
List<Archetype> archetypes = new ArrayList<>();
Continuation<FluentComponent> components =
mavenContentFacet.components().browse(MAVEN_ARCHETYPE_KIND, componentPageSize, null);
while (!components.isEmpty()) {
archetypes.addAll(components.stream().map(this::toArchetype).collect(toList()));
components = mavenContentFacet.
components().browse(MAVEN_ARCHETYPE_KIND, componentPageSize, components.nextContinuationToken());
}
return archetypes;
}
示例10
private Archetype toArchetype(final FluentComponent component) {
Archetype archetype = new Archetype();
archetype.setGroupId(component.namespace());
archetype.setArtifactId(component.name());
archetype.setVersion(component.version());
return archetype;
}
示例11
@SuppressWarnings("restriction")
void initialize() {
if (propertiesTable == null) {
return;
}
Archetype archetype = wizardPage.getChosenArchetype();
if (archetype == null) {
return;
}
try {
ArchetypeManager archetypeManager = MavenPluginActivator
.getDefault().getArchetypeManager();
ArtifactRepository remoteArchetypeRepository = archetypeManager
.getArchetypeRepository(archetype);
properties.clear();
for (RequiredProperty prop : (List<RequiredProperty>) archetypeManager
.getRequiredProperties(archetype,
remoteArchetypeRepository, null)) {
properties.put(prop.getKey(), new RequiredPropertyWrapper(prop));
}
updateTable();
} catch (Exception e) {
throw new RuntimeException("Could not process archetype: "
+ e.getMessage(), e);
}
}
示例12
protected boolean isValidArchetype(Archetype archetype) {
String artifactId = archetype.getArtifactId();
return artifactId != null && artifactId.contains("funktion");
}
示例13
public Archetype getChosenArchetype() {
return chooseArchetypePage.getSelectedArchetype();
}
示例14
@Override
public boolean acceptsArchetype(Archetype archetype2) {
return (archetype2.getGroupId().startsWith("com.adobe.granite.archetypes"));
}