From c0ab7c418bdbd0e787f7c3ab44ac1fd408482f79 Mon Sep 17 00:00:00 2001 From: Konrad Windszus Date: Wed, 21 Sep 2022 19:22:04 +0200 Subject: [PATCH] Expose ArchetypeGenerator This closes #921 --- org.eclipse.m2e.core.ui/META-INF/MANIFEST.MF | 2 +- .../core/ui/archetype/ArchetypeGenerator.java | 53 +++++++++++++++++++ .../m2e/core/ui/archetype/package-info.java | 17 ++++++ ...rator.java => ArchetypeGeneratorImpl.java} | 18 ++----- .../internal/archetype/ArchetypePlugin.java | 1 + 5 files changed, 77 insertions(+), 14 deletions(-) create mode 100644 org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/archetype/ArchetypeGenerator.java create mode 100644 org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/archetype/package-info.java rename org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/archetype/{ArchetypeGenerator.java => ArchetypeGeneratorImpl.java} (91%) diff --git a/org.eclipse.m2e.core.ui/META-INF/MANIFEST.MF b/org.eclipse.m2e.core.ui/META-INF/MANIFEST.MF index d8f059ec14..67a6ff66f2 100644 --- a/org.eclipse.m2e.core.ui/META-INF/MANIFEST.MF +++ b/org.eclipse.m2e.core.ui/META-INF/MANIFEST.MF @@ -46,6 +46,6 @@ Import-Package: org.eclipse.compare.rangedifferencer, org.eclipse.ltk.core.refactoring, org.slf4j;version="[1.6.2,2.0.0)" Service-Component: OSGI-INF/component.xml, - OSGI-INF/org.eclipse.m2e.core.ui.internal.archetype.ArchetypeGenerator.xml, + OSGI-INF/org.eclipse.m2e.core.ui.internal.archetype.ArchetypeGeneratorImpl.xml, OSGI-INF/org.eclipse.m2e.core.ui.internal.archetype.ArchetypePlugin.xml Automatic-Module-Name: org.eclipse.m2e.core.ui diff --git a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/archetype/ArchetypeGenerator.java b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/archetype/ArchetypeGenerator.java new file mode 100644 index 0000000000..b2cd5deca7 --- /dev/null +++ b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/archetype/ArchetypeGenerator.java @@ -0,0 +1,53 @@ +/******************************************************************************* + * Copyright (c) 2022 Konrad Windszus + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Konrad Windszus + *******************************************************************************/ +package org.eclipse.m2e.core.ui.archetype; + +import java.util.Collection; +import java.util.Properties; + +import org.osgi.annotation.versioning.ProviderType; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IProgressMonitor; + +import org.eclipse.m2e.core.project.IArchetype; +import org.eclipse.m2e.core.project.MavenProjectInfo; + + +/** + * Implementations of this OSGi service interface allow to create new projects based on Maven archetypes. + */ +@ProviderType +public interface ArchetypeGenerator { + + /** + * Creates project structure using the given archetype and then imports created project(s) + * + * @return a list of created projects. + * @since 2.0.1 (package version 1.0.0) + */ + default Collection createArchetypeProjects(IPath location, IArchetype archetype, String groupId, + String artifactId, String version, String javaPackage, Properties properties, IProgressMonitor monitor) + throws CoreException + { + return createArchetypeProjects(location, archetype, groupId, artifactId, version, javaPackage, properties, false, + monitor); + } + + Collection createArchetypeProjects(IPath location, IArchetype archetype, String groupId, + String artifactId, String version, String javaPackage, Properties properties, boolean interactive, + IProgressMonitor monitor) throws CoreException; + +} diff --git a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/archetype/package-info.java b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/archetype/package-info.java new file mode 100644 index 0000000000..0cdc3dde39 --- /dev/null +++ b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/archetype/package-info.java @@ -0,0 +1,17 @@ +/******************************************************************************* + * Copyright (c) 2022 Konrad Windszus + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Konrad Windszus + *******************************************************************************/ +@Version("1.0.0") +package org.eclipse.m2e.core.ui.archetype; + +import org.osgi.annotation.versioning.Version; diff --git a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/archetype/ArchetypeGenerator.java b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/archetype/ArchetypeGeneratorImpl.java similarity index 91% rename from org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/archetype/ArchetypeGenerator.java rename to org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/archetype/ArchetypeGeneratorImpl.java index 30ab35c078..90ff5c7eeb 100644 --- a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/archetype/ArchetypeGenerator.java +++ b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/archetype/ArchetypeGeneratorImpl.java @@ -49,11 +49,12 @@ import org.eclipse.m2e.core.project.IProjectConfigurationManager; import org.eclipse.m2e.core.project.LocalProjectScanner; import org.eclipse.m2e.core.project.MavenProjectInfo; +import org.eclipse.m2e.core.ui.archetype.ArchetypeGenerator; @Component(service = {ArchetypeGenerator.class}) @SuppressWarnings("restriction") -public class ArchetypeGenerator { +public class ArchetypeGeneratorImpl implements ArchetypeGenerator { @Reference IProjectConfigurationManager projectConfigurationManager; @@ -64,19 +65,10 @@ public class ArchetypeGenerator { @Reference IMavenLauncher mavenLauncher; - /** - * Creates project structure using Archetype and then imports created project(s) - * - * @return a list of created projects. - * @since 1.8 + /* (non-Javadoc) + * @see org.eclipse.m2e.core.ui.internal.archetype.ArchetypeGeneratorInterface#createArchetypeProjects(org.eclipse.core.runtime.IPath, org.eclipse.m2e.core.project.IArchetype, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.util.Properties, boolean, org.eclipse.core.runtime.IProgressMonitor) */ - public Collection createArchetypeProjects(IPath location, IArchetype archetype, String groupId, - String artifactId, String version, String javaPackage, Properties properties, IProgressMonitor monitor) - throws CoreException { - return createArchetypeProjects(location, archetype, groupId, artifactId, version, javaPackage, properties, false, - monitor); - } - + @Override public Collection createArchetypeProjects(IPath location, IArchetype archetype, String groupId, String artifactId, String version, String javaPackage, Properties properties, boolean interactive, IProgressMonitor monitor) throws CoreException { diff --git a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/archetype/ArchetypePlugin.java b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/archetype/ArchetypePlugin.java index 14fd80d5e5..e8c027b492 100644 --- a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/archetype/ArchetypePlugin.java +++ b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/archetype/ArchetypePlugin.java @@ -64,6 +64,7 @@ import org.eclipse.m2e.core.embedder.IMaven; import org.eclipse.m2e.core.internal.MavenPluginActivator; import org.eclipse.m2e.core.project.IArchetype; +import org.eclipse.m2e.core.ui.archetype.ArchetypeGenerator; import org.eclipse.m2e.core.ui.internal.M2EUIPluginActivator; import org.eclipse.m2e.core.ui.internal.archetype.ArchetypeCatalogFactory.LocalCatalogFactory; import org.eclipse.m2e.core.ui.internal.archetype.ArchetypeCatalogFactory.RemoteCatalogFactory;