001: package org.apache.maven.embedder;
002:
003: /*
004: * Licensed to the Apache Software Foundation (ASF) under one
005: * or more contributor license agreements. See the NOTICE file
006: * distributed with this work for additional information
007: * regarding copyright ownership. The ASF licenses this file
008: * to you under the Apache License, Version 2.0 (the
009: * "License"); you may not use this file except in compliance
010: * with the License. You may obtain a copy of the License at
011: *
012: * http://www.apache.org/licenses/LICENSE-2.0
013: *
014: * Unless required by applicable law or agreed to in writing,
015: * software distributed under the License is distributed on an
016: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017: * KIND, either express or implied. See the License for the
018: * specific language governing permissions and limitations
019: * under the License.
020: */
021:
022: import org.apache.maven.execution.DefaultMavenExecutionRequest;
023: import org.apache.maven.execution.MavenExecutionRequest;
024: import org.apache.maven.execution.MavenExecutionResult;
025: import org.apache.maven.project.MavenProject;
026: import org.codehaus.plexus.PlexusTestCase;
027: import org.codehaus.plexus.PlexusContainer;
028:
029: import java.io.File;
030: import java.util.Arrays;
031:
032: public class MavenEmbedderExampleTest extends PlexusTestCase {
033: public void testEmbedderExample() throws Exception {
034: // START SNIPPET: simple-embedder-example
035:
036: File projectDirectory = new File(getBasedir(),
037: "src/examples/simple-project");
038:
039: File user = new File(projectDirectory, "settings.xml");
040:
041: Configuration configuration = new DefaultConfiguration()
042: .setUserSettingsFile(user).setClassLoader(
043: Thread.currentThread().getContextClassLoader());
044:
045: ConfigurationValidationResult validationResult = MavenEmbedder
046: .validateConfiguration(configuration);
047:
048: if (validationResult.isValid()) {
049: MavenEmbedder embedder = new MavenEmbedder(configuration);
050:
051: MavenExecutionRequest request = new DefaultMavenExecutionRequest()
052: .setBaseDirectory(projectDirectory).setGoals(
053: Arrays.asList(new String[] { "clean",
054: "install" }));
055:
056: MavenExecutionResult result = embedder.execute(request);
057:
058: if (result.hasExceptions()) {
059: fail(((Exception) result.getExceptions().get(0))
060: .getMessage());
061: }
062:
063: // ----------------------------------------------------------------------------
064: // You may want to inspect the project after the execution.
065: // ----------------------------------------------------------------------------
066:
067: MavenProject project = result.getProject();
068:
069: // Do something with the project
070:
071: String groupId = project.getGroupId();
072:
073: String artifactId = project.getArtifactId();
074:
075: String version = project.getVersion();
076:
077: String name = project.getName();
078:
079: String environment = project.getProperties().getProperty(
080: "environment");
081:
082: assertEquals("development", environment);
083:
084: System.out.println("You are working in the '" + environment
085: + "' environment!");
086: } else {
087: if (!validationResult.isUserSettingsFilePresent()) {
088: System.out.println("The specific user settings file '"
089: + user + "' is not present.");
090: } else if (!validationResult.isUserSettingsFileParses()) {
091: System.out
092: .println("Please check your settings file, it is not well formed XML.");
093: }
094: }
095:
096: // END SNIPPET: simple-embedder-example
097: }
098:
099: public void testEmbedderExampleThatShowsHowToMimicTheMavenCLI()
100: throws Exception {
101:
102: // START SNIPPET: mimic-cli
103: Configuration configuration = new DefaultConfiguration()
104: .setUserSettingsFile(
105: MavenEmbedder.DEFAULT_USER_SETTINGS_FILE)
106: .setGlobalSettingsFile(
107: MavenEmbedder.DEFAULT_GLOBAL_SETTINGS_FILE)
108: .setClassLoader(
109: Thread.currentThread().getContextClassLoader());
110:
111: ConfigurationValidationResult validationResult = MavenEmbedder
112: .validateConfiguration(configuration);
113:
114: if (validationResult.isValid()) {
115: // If the configuration is valid then do your thang ...
116: }
117: // END SNIPPET: mimic-cli
118: }
119:
120: public void testEmbedderExampleThatShowsAccessingThePlexusContainer()
121: throws Exception {
122:
123: // START SNIPPET: plexus-container
124: Configuration configuration = new DefaultConfiguration()
125: .setUserSettingsFile(
126: MavenEmbedder.DEFAULT_USER_SETTINGS_FILE)
127: .setGlobalSettingsFile(
128: MavenEmbedder.DEFAULT_GLOBAL_SETTINGS_FILE)
129: .setClassLoader(
130: Thread.currentThread().getContextClassLoader());
131:
132: ConfigurationValidationResult validationResult = MavenEmbedder
133: .validateConfiguration(configuration);
134:
135: if (validationResult.isValid()) {
136: // If the configuration is valid then do your thang ...
137: }
138:
139: MavenEmbedder embedder = new MavenEmbedder(configuration);
140:
141: PlexusContainer container = embedder.getPlexusContainer();
142:
143: // Do what you like with the container ...
144:
145: // END SNIPPET: plexus-container
146: }
147:
148: }
|