1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 *
19 * Author: Siamak Haschemi
20 * Contact: haschemi@informatik.hu-berlin.de
21 */
22 package net.sourceforge.osgi.deployment.maven;
23
24 import java.io.File;
25 import java.util.List;
26
27 import net.sourceforge.osgi.deployment.maven.container.DeploymentPackageInfo;
28
29 import org.apache.maven.artifact.factory.ArtifactFactory;
30 import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
31 import org.apache.maven.artifact.repository.ArtifactRepository;
32 import org.apache.maven.artifact.resolver.ArtifactResolver;
33 import org.apache.maven.plugin.logging.Log;
34 import org.apache.maven.project.MavenProject;
35 import org.codehaus.plexus.archiver.manager.ArchiverManager;
36
37
38 /**
39 * The deployment context provides all relevant data to the deployment plugin. Currently it depends on maven classes and interfaces, but the idea is to abstract
40 * from maven in order to use the deployment plugin with other technologies.
41 *
42 * @author Siamak Haschemi, haschemi@informatik.hu-berlin.de
43 *
44 */
45 public interface IDeploymentPluginContext {
46
47 /**
48 * @return the Maven logger
49 */
50 Log getLogger();
51
52 /**
53 * @return the outputDirectory
54 */
55 File getOutputDirectory();
56
57 /**
58 * @return the baseDir
59 */
60 File getBaseDir();
61
62 /**
63 * @return the manifestLocation
64 */
65 File getManifestLocation();
66
67 /**
68 * @return the project
69 */
70 MavenProject getProject();
71
72 /**
73 * @return the buildDirectory
74 */
75 String getBuildDirectory();
76
77 /**
78 * @return the supportedProjectTypes
79 */
80 List< String > getSupportedProjectTypes();
81
82 /**
83 * @return the localRepository
84 */
85 ArtifactRepository getLocalRepository();
86
87 /**
88 * @return the remoteRepositories
89 */
90 List< ArtifactRepository > getRemoteRepositories();
91
92 /**
93 * @return the artifactFactory
94 */
95 ArtifactFactory getArtifactFactory();
96
97 /**
98 * @return the artifactResolver
99 */
100 ArtifactResolver getArtifactResolver();
101
102 /**
103 * @return the artifactHandlerManager
104 */
105 ArtifactHandlerManager getArtifactHandlerManager();
106
107 /**
108 * @return the archiverManager
109 */
110 ArchiverManager getArchiverManager();
111
112 /**
113 * @return the deploymentPackage
114 */
115 DeploymentPackageInfo getDeploymentPackageInfo();
116
117 /**
118 * @return the writeExtraData
119 */
120 boolean isWriteExtraData();
121
122 /**
123 * Returns the name of the plugin.
124 *
125 * @return the name of the plugin
126 */
127 String getPluginName();
128
129 /**
130 * Returns the plugin version.
131 *
132 * @return the plugin version
133 */
134 String getPluginVersion();
135
136 /**
137 * This method resolves an artifact on all available repositories and returns the file handle to that artifact.
138 *
139 * @param p_groupId
140 * the groupId of the artifact to resolve
141 * @param p_artifactId
142 * the artifactId of the artifact to resolve
143 * @param p_version
144 * the version of the artifact to resolve
145 * @return the resolved file handle of the artifact
146 */
147 File resolveResource(final String p_groupId, final String p_artifactId, final String p_version);
148
149 }