jvanzyl 2002/07/16 01:01:34
Modified: src/java/org/apache/maven/app Maven.java PluginManager.java
Log:
o Updating the plugin manager so that it now works with completely
self-contained JARs.
The checkstyle plugin is the first to work all from the JAR. The JARs
are pushed into the various classloaders using the meta info attached
to the dependency entries in the plugin's project.xml.
The rest of the plugins can be converted but the mechanism is working.
Revision Changes Path
1.69 +48 -14 jakarta-turbine-maven/src/java/org/apache/maven/app/Maven.java
Index: Maven.java
===================================================================
RCS file: /home/cvs/jakarta-turbine-maven/src/java/org/apache/maven/app/Maven.java,v
retrieving revision 1.68
retrieving revision 1.69
diff -u -r1.68 -r1.69
--- Maven.java 16 Jul 2002 00:11:27 -0000 1.68
+++ Maven.java 16 Jul 2002 08:01:34 -0000 1.69
@@ -205,6 +205,9 @@
/** Plugin Manager */
private PluginManager pluginManager;
+ /** Project verifier */
+ private ProjectVerifier projectVerifier;
+
// ------------------------------------------------------------
// Constructors
// ------------------------------------------------------------
@@ -426,6 +429,22 @@
return this.output;
}
+ /**
+ * Set the project verifier.
+ */
+ public void setProjectVerifier(ProjectVerifier projectVerifier)
+ {
+ this.projectVerifier = projectVerifier;
+ }
+
+ /**
+ * Get the project verifier.
+ */
+ public ProjectVerifier getProjectVerifier()
+ {
+ return projectVerifier;
+ }
+
/** Retrieve a property.
*
* @param name the property name to retrieve
@@ -637,7 +656,7 @@
private void runtimeInitialization() throws Exception
{
initializeDriver();
-
+ createProjectVerifier();
initializePlugins();
loadProjectBuildFile();
}
@@ -679,6 +698,7 @@
pluginManager.setAntProject(getAntProject());
pluginManager.setJellyContext(getJellyContext());
pluginManager.setXMLOutput(getXMLOutput());
+ pluginManager.setProjectVerifier(getProjectVerifier());
pluginManager.initializePlugins();
}
@@ -1282,8 +1302,12 @@
}
}
}
-
- public void verifyProject() throws Exception
+
+ /**
+ * Create project verifier
+ */
+ private ProjectVerifier createProjectVerifier()
+ throws Exception
{
String localRepoProp = getProperty("maven.repo.local");
@@ -1355,21 +1379,32 @@
throw new RepoConfigException(localRepo + " is not writable.");
}
- ProjectVerifier verifier = new ProjectVerifier();
+ projectVerifier = new ProjectVerifier();
- verifier.setMavenRemoteRepo(remoteRepoProp);
- verifier.setMavenLocalRepo(localRepoProp);
- verifier.setMavenProject(getProjectDescriptor().getProject());
- verifier.setProject(getAntProject());
+ projectVerifier.setMavenRemoteRepo(remoteRepoProp);
+ projectVerifier.setMavenLocalRepo(localRepoProp);
+ projectVerifier.setMavenProject(getProjectDescriptor().getProject());
+ projectVerifier.setProject(getAntProject());
String proxyHost = getProperty("maven.proxy.host");
if (proxyHost != null)
{
- verifier.setProxyHost(proxyHost);
- verifier.setProxyPort(getProperty("maven.proxy.port"));
- verifier.setProxyUserName(getProperty("maven.proxy.username"));
- verifier.setProxyPassword(getProperty("maven.proxy.password"));
+ projectVerifier.setProxyHost(proxyHost);
+ projectVerifier.setProxyPort(getProperty("maven.proxy.port"));
+ projectVerifier.setProxyUserName(getProperty("maven.proxy.username"));
+ projectVerifier.setProxyPassword(getProperty("maven.proxy.password"));
}
- verifier.doExecute();
+
+ return projectVerifier;
+ }
+
+ /**
+ * Verify a project. Basically make sure the dependencies are
+ * present and do a basic sanity check.
+ */
+ public void verifyProject() throws Exception
+ {
+ getProjectVerifier().setMavenProject(getProjectDescriptor().getProject());
+ getProjectVerifier().doExecute();
}
/**
@@ -1635,6 +1670,5 @@
maven.doMain(args);
}
-
}
1.12 +58 -8
jakarta-turbine-maven/src/java/org/apache/maven/app/PluginManager.java
Index: PluginManager.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-maven/src/java/org/apache/maven/app/PluginManager.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- PluginManager.java 16 Jul 2002 02:40:03 -0000 1.11
+++ PluginManager.java 16 Jul 2002 08:01:34 -0000 1.12
@@ -82,9 +82,13 @@
import com.werken.forehead.Forehead;
import org.apache.maven.MavenUtils;
+import org.apache.maven.ProjectVerifier;
import org.apache.maven.project.Dependency;
import org.apache.maven.project.Project;
+// Tmp
+import org.apache.maven.repository.DefaultJarArtifact;
+
/**
* Plugin manager for Maven. <p>
*
@@ -141,6 +145,11 @@
private File mavenHome;
/**
+ * Project verifier
+ */
+ private ProjectVerifier projectVerifier;
+
+ /**
* Initialize all plugins.
*
* @throws Exception If an error occurs while initializing any plugin.
@@ -223,19 +232,44 @@
log.debug("plugin: " + name + " -> " + getPluginDir(name));
Forehead.getInstance().getClassLoader("root.maven").addURL(getPluginDir(name).toURL());
- /*
- Project pluginProject = MavenUtils.getProject(p);
+ // Retrieve the dependencies that this plugin requires.
+ Project pluginProject = MavenUtils.getProject(new
File(getPluginDir(name),"project.xml"));
+ getProjectVerifier().setMavenProject(pluginProject);
+ getProjectVerifier().doExecute();
+ log.debug("Loading plugin dependencies:");
for (Iterator i = pluginProject.getDependencies().iterator(); i.hasNext();)
{
- Dependency d = (Dependency) i.next();
- String classloader = d.getMetaEntry("classloader");
- // Retrieve the dependency if necessary
+ Dependency dependency = (Dependency) i.next();
+ log.debug("dependency: " + dependency);
+
+ String classloader = dependency.getMetaEntry("classloader");
+ log.debug("classloader: " + classloader);
- // Add the dependency to the specified classloader
- // if it isn't present already.
+ if (classloader != null)
+ {
+ DefaultJarArtifact dfa = new DefaultJarArtifact();
+
+ File jarFile = new File(getProjectVerifier().getMavenLocalRepo(),
+ dfa.getPath(dependency.getId(),
+ dependency.getVersion(),
+ dependency.getJar()));
+
+ log.debug("jarFile: " + jarFile);
+
+ // We have the jar and the classloader to push it into so
+ // lets do it!
+ if (jarFile.exists())
+ {
+ // Make sure the stated classloader actually exists.
+ if (Forehead.getInstance().getClassLoader(classloader) != null)
+ {
+ log.debug("Adding " + jarFile + " to " + classloader);
+
Forehead.getInstance().getClassLoader(classloader).addURL(jarFile.toURL());
+ }
+ }
+ }
}
- */
// For each plugin we create a new MavenJellyContext so that we
// can push in commonly named elements like ${plugin.dir} without
@@ -470,4 +504,20 @@
{
return this.pluginsDir;
}
+
+ /**
+ * Set the project verifier.
+ */
+ public void setProjectVerifier(ProjectVerifier projectVerifier)
+ {
+ this.projectVerifier = projectVerifier;
+ }
+
+ /**
+ * Get the project verifier.
+ */
+ public ProjectVerifier getProjectVerifier()
+ {
+ return projectVerifier;
+ }
}
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>