Skip to content

Commit

Permalink
Expose ArchetypeGenerator
Browse files Browse the repository at this point in the history
This closes #921
  • Loading branch information
kwin committed Sep 21, 2022
1 parent 1e913de commit c0ab7c4
Show file tree
Hide file tree
Showing 5 changed files with 77 additions and 14 deletions.
2 changes: 1 addition & 1 deletion org.eclipse.m2e.core.ui/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
Expand Up @@ -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
Original file line number Diff line number Diff line change
@@ -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<MavenProjectInfo> 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<MavenProjectInfo> createArchetypeProjects(IPath location, IArchetype archetype, String groupId,
String artifactId, String version, String javaPackage, Properties properties, boolean interactive,
IProgressMonitor monitor) throws CoreException;

}
Original file line number Diff line number Diff line change
@@ -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;
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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<MavenProjectInfo> 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<MavenProjectInfo> createArchetypeProjects(IPath location, IArchetype archetype, String groupId,
String artifactId, String version, String javaPackage, Properties properties, boolean interactive,
IProgressMonitor monitor) throws CoreException {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit c0ab7c4

Please sign in to comment.