From 77d3e6c5f54577fd83833a3b4ec266875e9e0cda Mon Sep 17 00:00:00 2001 From: John Dennis Casey Date: Tue, 8 Mar 2005 06:06:22 +0000 Subject: [PATCH] o Added (pom|project)? to the eval pattern in the regex param extractor, to trim ${project.artifactid} to mean the same as ${artifactId} within the pom. git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@163490 13f79535-47bb-0310-9956-ffa450edef68 --- .cvsignore | 1 + maven-core/pom.xml | 5 + .../java/org/apache/maven/DefaultMaven.java | 1 + .../java/org/apache/maven/cli/MavenCli.java | 10 +- .../AbstractMavenExecutionRequest.java | 13 +- .../execution/MavenExecutionRequest.java | 3 + .../MavenInitializingExecutionRequest.java | 5 +- .../MavenProjectExecutionRequest.java | 4 +- .../MavenReactorExecutionRequest.java | 7 +- .../apache/maven/execution/MavenSession.java | 14 +- .../RegexBasedModelInterpolator.java | 4 +- .../org/apache/maven/util/UserModelUtils.java | 193 ++++++++++++++++++ ...luginParameterExpressionEvaluatorTest.java | 7 +- maven-mboot2/src/main/java/MBoot.java | 17 +- maven-user-model/maven-user.mdo | 165 +++++++++++++++ maven-user-model/pom.xml | 10 + 16 files changed, 440 insertions(+), 19 deletions(-) create mode 100644 maven-core/src/main/java/org/apache/maven/util/UserModelUtils.java create mode 100644 maven-user-model/maven-user.mdo create mode 100644 maven-user-model/pom.xml diff --git a/.cvsignore b/.cvsignore index dd3848e6f9..4e333b5b47 100644 --- a/.cvsignore +++ b/.cvsignore @@ -7,3 +7,4 @@ maven-component.i* .settings mboot.jar dummy +build.ajproperties diff --git a/maven-core/pom.xml b/maven-core/pom.xml index ddb5aa2b40..f42c6f2b93 100644 --- a/maven-core/pom.xml +++ b/maven-core/pom.xml @@ -31,6 +31,11 @@ maven-model 2.0-SNAPSHOT + + maven + maven-user-model + 2.0-SNAPSHOT + maven maven-artifact diff --git a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java index 55d1554cef..9489da0bb9 100644 --- a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java +++ b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java @@ -267,6 +267,7 @@ public class DefaultMaven { return new MavenSession( container, pluginManager, + request.getUserModel(), request.getLocalRepository(), request.getEventDispatcher(), request.getLog(), diff --git a/maven-core/src/main/java/org/apache/maven/cli/MavenCli.java b/maven-core/src/main/java/org/apache/maven/cli/MavenCli.java index 76a3f4bcd9..300baee7a0 100644 --- a/maven-core/src/main/java/org/apache/maven/cli/MavenCli.java +++ b/maven-core/src/main/java/org/apache/maven/cli/MavenCli.java @@ -33,11 +33,13 @@ import org.apache.maven.execution.MavenExecutionResponse; import org.apache.maven.execution.MavenInitializingExecutionRequest; import org.apache.maven.execution.MavenProjectExecutionRequest; import org.apache.maven.execution.MavenReactorExecutionRequest; +import org.apache.maven.model.user.UserModel; import org.apache.maven.monitor.event.DefaultEventDispatcher; import org.apache.maven.monitor.event.DefaultEventMonitor; import org.apache.maven.monitor.event.EventDispatcher; import org.apache.maven.monitor.logging.DefaultLog; import org.apache.maven.plugin.Plugin; +import org.apache.maven.util.UserModelUtils; import org.codehaus.classworlds.ClassWorld; import org.codehaus.plexus.embed.ArtifactEnabledEmbedder; import org.codehaus.plexus.logging.Logger; @@ -117,7 +119,9 @@ public class MavenCli File projectFile = new File( userDir, POMv4 ); EventDispatcher eventDispatcher = new DefaultEventDispatcher(); - + + UserModel userModel = UserModelUtils.getUserModel(); + if ( projectFile.exists() ) { if ( commandLine.hasOption( CLIManager.REACTOR ) ) @@ -127,6 +131,7 @@ public class MavenCli String excludes = System.getProperty( "maven.reactor.excludes", POMv4 ); request = new MavenReactorExecutionRequest( localRepository, + userModel, eventDispatcher, mavenProperties, commandLine.getArgList(), @@ -137,6 +142,7 @@ public class MavenCli else { request = new MavenProjectExecutionRequest( localRepository, + userModel, eventDispatcher, mavenProperties, commandLine.getArgList(), @@ -145,7 +151,7 @@ public class MavenCli } else { - request = new MavenInitializingExecutionRequest( localRepository, eventDispatcher, mavenProperties, commandLine.getArgList() ); + request = new MavenInitializingExecutionRequest( localRepository, userModel, eventDispatcher, mavenProperties, commandLine.getArgList() ); } // ---------------------------------------------------------------------- diff --git a/maven-core/src/main/java/org/apache/maven/execution/AbstractMavenExecutionRequest.java b/maven-core/src/main/java/org/apache/maven/execution/AbstractMavenExecutionRequest.java index eab0430925..6e6a5153a7 100644 --- a/maven-core/src/main/java/org/apache/maven/execution/AbstractMavenExecutionRequest.java +++ b/maven-core/src/main/java/org/apache/maven/execution/AbstractMavenExecutionRequest.java @@ -18,7 +18,7 @@ package org.apache.maven.execution; */ import org.apache.maven.artifact.repository.ArtifactRepository; -import org.apache.maven.monitor.event.DefaultEventDispatcher; +import org.apache.maven.model.user.UserModel; import org.apache.maven.monitor.event.EventDispatcher; import org.apache.maven.monitor.event.EventMonitor; import org.apache.maven.monitor.logging.Log; @@ -48,9 +48,13 @@ implements MavenExecutionRequest private EventDispatcher eventDispatcher; - public AbstractMavenExecutionRequest( ArtifactRepository localRepository, EventDispatcher eventDispatcher, Properties parameters, List goals ) + private final UserModel userModel; + + public AbstractMavenExecutionRequest( ArtifactRepository localRepository, UserModel userModel, EventDispatcher eventDispatcher, Properties parameters, List goals ) { this.localRepository = localRepository; + + this.userModel = userModel; this.parameters = parameters; @@ -58,6 +62,11 @@ implements MavenExecutionRequest this.eventDispatcher = eventDispatcher; } + + public UserModel getUserModel() + { + return userModel; + } public ArtifactRepository getLocalRepository() { diff --git a/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java b/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java index 3516ada668..14eb734090 100644 --- a/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java +++ b/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java @@ -18,6 +18,7 @@ package org.apache.maven.execution; */ import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.model.user.UserModel; import org.apache.maven.monitor.event.EventDispatcher; import org.apache.maven.monitor.event.EventMonitor; import org.apache.maven.monitor.logging.Log; @@ -52,4 +53,6 @@ public interface MavenExecutionRequest void addEventMonitor( EventMonitor monitor ); EventDispatcher getEventDispatcher(); + + UserModel getUserModel(); } diff --git a/maven-core/src/main/java/org/apache/maven/execution/MavenInitializingExecutionRequest.java b/maven-core/src/main/java/org/apache/maven/execution/MavenInitializingExecutionRequest.java index 557ea9db19..e3ee1ad154 100644 --- a/maven-core/src/main/java/org/apache/maven/execution/MavenInitializingExecutionRequest.java +++ b/maven-core/src/main/java/org/apache/maven/execution/MavenInitializingExecutionRequest.java @@ -18,6 +18,7 @@ package org.apache.maven.execution; */ import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.model.user.UserModel; import org.apache.maven.monitor.event.EventDispatcher; import java.util.List; @@ -30,9 +31,9 @@ import java.util.Properties; public class MavenInitializingExecutionRequest extends AbstractMavenExecutionRequest { - public MavenInitializingExecutionRequest( ArtifactRepository localRepository, EventDispatcher eventDispatcher, Properties properties, List goals ) + public MavenInitializingExecutionRequest( ArtifactRepository localRepository, UserModel userModel, EventDispatcher eventDispatcher, Properties properties, List goals ) { - super( localRepository, eventDispatcher, properties, goals ); + super( localRepository, userModel, eventDispatcher, properties, goals ); type = "initializing"; } diff --git a/maven-core/src/main/java/org/apache/maven/execution/MavenProjectExecutionRequest.java b/maven-core/src/main/java/org/apache/maven/execution/MavenProjectExecutionRequest.java index 97f442e380..e1c443a15c 100644 --- a/maven-core/src/main/java/org/apache/maven/execution/MavenProjectExecutionRequest.java +++ b/maven-core/src/main/java/org/apache/maven/execution/MavenProjectExecutionRequest.java @@ -18,6 +18,7 @@ package org.apache.maven.execution; */ import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.model.user.UserModel; import org.apache.maven.monitor.event.EventDispatcher; import java.io.File; @@ -35,12 +36,13 @@ extends AbstractMavenExecutionRequest private File pom; public MavenProjectExecutionRequest( ArtifactRepository localRepository, + UserModel userModel, EventDispatcher eventDispatcher, Properties properties, List goals, File pom ) { - super( localRepository, eventDispatcher, properties, goals ); + super( localRepository, userModel, eventDispatcher, properties, goals ); this.pom = pom; diff --git a/maven-core/src/main/java/org/apache/maven/execution/MavenReactorExecutionRequest.java b/maven-core/src/main/java/org/apache/maven/execution/MavenReactorExecutionRequest.java index e2a57bcd47..df9db0117d 100644 --- a/maven-core/src/main/java/org/apache/maven/execution/MavenReactorExecutionRequest.java +++ b/maven-core/src/main/java/org/apache/maven/execution/MavenReactorExecutionRequest.java @@ -18,6 +18,7 @@ package org.apache.maven.execution; */ import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.model.user.UserModel; import org.apache.maven.monitor.event.EventDispatcher; import org.apache.maven.project.MavenProject; import org.codehaus.plexus.util.FileUtils; @@ -40,11 +41,11 @@ extends AbstractMavenExecutionRequest private File baseDirectory; - public MavenReactorExecutionRequest( ArtifactRepository localRepository, EventDispatcher eventDispatcher, + public MavenReactorExecutionRequest( ArtifactRepository localRepository, UserModel userModel, EventDispatcher eventDispatcher, Properties properties, List goals, String includes, String excludes, File baseDirectory ) { - super( localRepository, eventDispatcher, properties, goals ); + super( localRepository, userModel, eventDispatcher, properties, goals ); this.includes = includes; @@ -78,6 +79,6 @@ extends AbstractMavenExecutionRequest public MavenProjectExecutionRequest createProjectExecutionRequest( MavenProject project ) { - return new MavenProjectExecutionRequest( localRepository, getEventDispatcher(), parameters, goals, project.getFile() ); + return new MavenProjectExecutionRequest( localRepository, getUserModel(), getEventDispatcher(), parameters, goals, project.getFile() ); } } diff --git a/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java b/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java index f4e0a004ec..d646b7c865 100644 --- a/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java +++ b/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java @@ -18,6 +18,7 @@ package org.apache.maven.execution; */ import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.model.user.UserModel; import org.apache.maven.monitor.event.EventDispatcher; import org.apache.maven.monitor.logging.Log; import org.apache.maven.plugin.PluginManager; @@ -62,12 +63,16 @@ public class MavenSession private Log log; - public MavenSession( PlexusContainer container, PluginManager pluginManager, ArtifactRepository localRepository, + private final UserModel userModel; + + public MavenSession( PlexusContainer container, PluginManager pluginManager, UserModel userModel, ArtifactRepository localRepository, EventDispatcher eventDispatcher, Log log, List goals ) { this.container = container; this.pluginManager = pluginManager; + + this.userModel = userModel; this.localRepository = localRepository; @@ -79,7 +84,7 @@ public class MavenSession this.goals = goals; } - + public PlexusContainer getContainer() { return container; @@ -143,6 +148,11 @@ public class MavenSession { return log; } + + public UserModel getUserModel() + { + return userModel; + } public void addImpliedExecution( String goal, String implied ) throws CycleDetectedException { diff --git a/maven-core/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java b/maven-core/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java index e8d3a4c8d4..3087afcb0c 100644 --- a/maven-core/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java +++ b/maven-core/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java @@ -38,7 +38,7 @@ public class RegexBasedModelInterpolator implements ModelInterpolator { - private static final Pattern EXPRESSION_PATTERN = Pattern.compile( "\\$\\{([^}]+)\\}" ); + private static final Pattern EXPRESSION_PATTERN = Pattern.compile( "\\$\\{(pom|project\\.)?([^}]+)\\}" ); /** * Added: Feb 3, 2005 by jdcasey @@ -87,7 +87,7 @@ public class RegexBasedModelInterpolator while ( matcher.find() ) { String wholeExpr = matcher.group( 0 ); - String realExpr = matcher.group( 1 ); + String realExpr = matcher.group( 2 ); String value = null; try diff --git a/maven-core/src/main/java/org/apache/maven/util/UserModelUtils.java b/maven-core/src/main/java/org/apache/maven/util/UserModelUtils.java new file mode 100644 index 0000000000..c1facf021e --- /dev/null +++ b/maven-core/src/main/java/org/apache/maven/util/UserModelUtils.java @@ -0,0 +1,193 @@ +package org.apache.maven.util; + +import org.apache.maven.model.user.JdkProfile; +import org.apache.maven.model.user.MavenProfile; +import org.apache.maven.model.user.ServerProfile; +import org.apache.maven.model.user.UserModel; +import org.apache.maven.model.user.io.xpp3.MavenUserModelXpp3Reader; +import org.apache.maven.model.user.io.xpp3.MavenUserModelXpp3Writer; + +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.util.Iterator; +import java.util.List; + +/** + * @author jdcasey + */ +public final class UserModelUtils +{ + + public static final String JDK_PROFILE_ENVAR = "maven.jdkVersion"; + + public static final String MAVEN_PROFILE_ENVAR = "maven.mavenProfileId"; + + public static final String SERVER_PROFILE_ENVAR = "maven.serverProfileId"; + + private static final String USER_MODEL_LOCATION = "/.m2/user.xml"; + + private UserModelUtils() + { + } + + public static ServerProfile getActiveServer( UserModel userModel ) + { + List servers = userModel.getServerProfiles(); + + String serverId = System.getProperty( SERVER_PROFILE_ENVAR ); + if ( serverId == null || serverId.trim().length() < 1 ) + { + serverId = userModel.getDefaultProfiles().getServerProfileId(); + } + + ServerProfile active = null; + for ( Iterator it = servers.iterator(); it.hasNext(); ) + { + ServerProfile server = (ServerProfile) it.next(); + if ( serverId.equals( server.getId() ) ) + { + active = server; + break; + } + } + + return active; + } + + public static JdkProfile getActiveJdk( UserModel userModel ) + { + List jdks = userModel.getJdkProfiles(); + + String jdkId = System.getProperty( JDK_PROFILE_ENVAR ); + if ( jdkId == null || jdkId.trim().length() < 1 ) + { + jdkId = userModel.getDefaultProfiles().getJdkVersion(); + } + + JdkProfile active = null; + for ( Iterator it = jdks.iterator(); it.hasNext(); ) + { + JdkProfile jdk = (JdkProfile) it.next(); + if ( jdkId.equals( jdk.getVersion() ) ) + { + active = jdk; + break; + } + } + + return active; + } + + public static MavenProfile getActiveRuntimeProfile( UserModel userModel ) + { + List mavenProfiles = userModel.getMavenProfiles(); + + String mavenProfileId = System.getProperty( MAVEN_PROFILE_ENVAR ); + if ( mavenProfileId == null || mavenProfileId.trim().length() < 1 ) + { + mavenProfileId = userModel.getDefaultProfiles().getMavenProfileId(); + } + + MavenProfile active = null; + for ( Iterator it = mavenProfiles.iterator(); it.hasNext(); ) + { + MavenProfile mavenProfile = (MavenProfile) it.next(); + if ( mavenProfileId.equals( mavenProfile.getId() ) ) + { + active = mavenProfile; + break; + } + } + + return active; + } + + // TODO: don't throw Exception. + public static UserModel getUserModel() throws Exception + { + UserModel model = null; + + File modelFile = getUserModelFile(); + if ( modelFile.exists() && modelFile.isFile() ) + { + MavenUserModelXpp3Reader modelReader = new MavenUserModelXpp3Reader(); + FileReader reader = null; + try + { + reader = new FileReader( modelFile ); + + model = modelReader.read( reader ); + } + finally + { + if ( reader != null ) + { + try + { + reader.close(); + } + catch ( IOException e ) + { + } + } + } + } + + return model; + } + + // TODO: don't throw Exception. + public static void setUserModel( UserModel userModel ) throws Exception + { + File modelFile = getUserModelFile(); + + File modelDir = modelFile.getParentFile(); + if ( !modelDir.exists() ) + { + modelDir.mkdirs(); + } + + MavenUserModelXpp3Writer modelWriter = new MavenUserModelXpp3Writer(); + + FileWriter writer = null; + try + { + writer = new FileWriter( modelFile ); + + modelWriter.write( writer, userModel ); + + writer.flush(); + } + finally + { + if ( writer != null ) + { + try + { + writer.close(); + } + catch ( IOException e ) + { + } + } + } + + } + + private static File getUserModelFile() + { + String userDir = System.getProperty( "user.home" ); + + String modelPath = userDir + USER_MODEL_LOCATION; + + modelPath = modelPath.replaceAll( "\\\\", "/" ); + modelPath = modelPath.replaceAll( "//", "/" ); + + File userModelFile = new File( modelPath ); + + return userModelFile; + } + +} \ No newline at end of file diff --git a/maven-core/src/test/java/org/apache/maven/plugin/PluginParameterExpressionEvaluatorTest.java b/maven-core/src/test/java/org/apache/maven/plugin/PluginParameterExpressionEvaluatorTest.java index b060a9219f..b68da12089 100644 --- a/maven-core/src/test/java/org/apache/maven/plugin/PluginParameterExpressionEvaluatorTest.java +++ b/maven-core/src/test/java/org/apache/maven/plugin/PluginParameterExpressionEvaluatorTest.java @@ -5,6 +5,7 @@ import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.execution.MavenSession; import org.apache.maven.model.Build; import org.apache.maven.model.Model; +import org.apache.maven.model.user.UserModel; import org.apache.maven.monitor.event.DefaultEventDispatcher; import org.apache.maven.monitor.logging.DefaultLog; import org.apache.maven.project.MavenProject; @@ -41,7 +42,7 @@ public class PluginParameterExpressionEvaluatorTest PluginManager mgr = (PluginManager)lookup(PluginManager.ROLE); PlexusContainer container = getContainer(); - MavenSession session = new MavenSession(container, mgr, repo, new DefaultEventDispatcher(), new DefaultLog(container.getLogger()), Collections.EMPTY_LIST); + MavenSession session = new MavenSession(container, mgr, new UserModel(), repo, new DefaultEventDispatcher(), new DefaultLog(container.getLogger()), Collections.EMPTY_LIST); Build build = new Build(); build.setDirectory(expected.substring(0, expected.length() - "/classes".length())); @@ -73,7 +74,7 @@ public class PluginParameterExpressionEvaluatorTest PluginManager mgr = (PluginManager)lookup(PluginManager.ROLE); PlexusContainer container = getContainer(); - MavenSession session = new MavenSession(container, mgr, repo, new DefaultEventDispatcher(), new DefaultLog(container.getLogger()), Collections.EMPTY_LIST); + MavenSession session = new MavenSession(container, mgr, new UserModel(), repo, new DefaultEventDispatcher(), new DefaultLog(container.getLogger()), Collections.EMPTY_LIST); Object value = PluginParameterExpressionEvaluator.evaluate( role, session ); assertNotNull( value ); @@ -86,7 +87,7 @@ public class PluginParameterExpressionEvaluatorTest PluginManager mgr = (PluginManager)lookup(PluginManager.ROLE); PlexusContainer container = getContainer(); - MavenSession session = new MavenSession(container, mgr, repo, new DefaultEventDispatcher(), new DefaultLog(container.getLogger()), Collections.EMPTY_LIST); + MavenSession session = new MavenSession(container, mgr, new UserModel(), repo, new DefaultEventDispatcher(), new DefaultLog(container.getLogger()), Collections.EMPTY_LIST); Object value = PluginParameterExpressionEvaluator.evaluate( "#localRepository", session ); diff --git a/maven-mboot2/src/main/java/MBoot.java b/maven-mboot2/src/main/java/MBoot.java index 1906745426..f0e53b8bda 100644 --- a/maven-mboot2/src/main/java/MBoot.java +++ b/maven-mboot2/src/main/java/MBoot.java @@ -79,6 +79,7 @@ public class MBoot String[] builds = new String[] { "maven-model", + "maven-user-model", "maven-monitor", "maven-plugin", "maven-artifact", @@ -477,9 +478,21 @@ public class MBoot // Generating sources // ---------------------------------------------------------------------- - File model = new File( basedir, "maven.mdo" ); + File base = new File(basedir); + + String[] basedirFiles = base.list(); + + File model = null; + for ( int i = 0; i < basedirFiles.length; i++ ) + { + if(basedirFiles[i].endsWith(".mdo")) + { + model = new File(base, basedirFiles[i]); + break; + } + } - if ( model.exists() ) + if ( model != null && model.exists() ) { System.out.println( "Model exists!" ); diff --git a/maven-user-model/maven-user.mdo b/maven-user-model/maven-user.mdo new file mode 100644 index 0000000000..8b0c1d2d2d --- /dev/null +++ b/maven-user-model/maven-user.mdo @@ -0,0 +1,165 @@ + + mavenUserModel + MavenUserModel + + + + package + org.apache.maven.model.user + + + + + UserModel + 4.0.0 + + + jdkProfiles + 4.0.0 + + + JdkProfile + * + + + + serverProfiles + 4.0.0 + + + ServerProfile + * + + + + mavenProfiles + 4.0.0 + + + MavenProfile + * + + + + defaultProfiles + 4.0.0 + + DefaultProfiles + + + + + + + + JdkProfile + 4.0.0 + + + + version + 4.0.0 + true + + String + + + javaHome + 4.0.0 + true + + String + + + + + ServerProfile + 4.0.0 + + + id + 4.0.0 + true + + String + + + host + 4.0.0 + true + + String + + + username + 4.0.0 + + String + + + passphrase + 4.0.0 + + String + + + privateKey + 4.0.0 + + String + + + + + MavenProfile + 4.0.0 + + + id + 4.0.0 + true + + String + + + localRepository + 4.0.0 + true + + String + + + passwordStore + 4.0.0 + true + + String + + + + + DefaultProfiles + 4.0.0 + + + serverProfileId + 4.0.0 + false + String + + + mavenProfileId + 4.0.0 + true + String + + + jdkVersion + 4.0.0 + false + String + + + + + \ No newline at end of file diff --git a/maven-user-model/pom.xml b/maven-user-model/pom.xml new file mode 100644 index 0000000000..4672679562 --- /dev/null +++ b/maven-user-model/pom.xml @@ -0,0 +1,10 @@ + + 4.0.0 + + maven + maven-component + 2.0-SNAPSHOT + + + maven-user-model + \ No newline at end of file