⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 runtimedependencyresolver.java

📁 jetty SERVER連接資料庫用的軟體
💻 JAVA
字号:
//========================================================================//$Id: RuntimeDependencyResolver.java 397 2006-03-23 18:44:41Z janb $//Copyright 2000-2004 Mort Bay Consulting Pty. Ltd.//------------------------------------------------------------------------//Licensed under the Apache License, Version 2.0 (the "License");//you may not use this file except in compliance with the License.//You may obtain a copy of the License at //http://www.apache.org/licenses/LICENSE-2.0//Unless required by applicable law or agreed to in writing, software//distributed under the License is distributed on an "AS IS" BASIS,//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.//See the License for the specific language governing permissions and//limitations under the License.//========================================================================package org.mortbay.jetty.plugin;import java.net.MalformedURLException;import java.util.ArrayList;import java.util.Collections;import java.util.Iterator;import java.util.List;import java.util.Set;import org.apache.maven.artifact.Artifact;import org.apache.maven.artifact.factory.ArtifactFactory;import org.apache.maven.artifact.metadata.ArtifactMetadataSource;import org.apache.maven.artifact.repository.ArtifactRepository;import org.apache.maven.artifact.resolver.ArtifactNotFoundException;import org.apache.maven.artifact.resolver.ArtifactResolutionException;import org.apache.maven.artifact.resolver.ArtifactResolutionResult;import org.apache.maven.artifact.resolver.ArtifactResolver;import org.apache.maven.artifact.resolver.ResolutionListener;import org.apache.maven.artifact.versioning.VersionRange;import org.apache.maven.project.MavenProject;import org.apache.maven.project.MavenProjectBuilder;import org.apache.maven.project.ProjectBuildingException;import org.apache.maven.project.artifact.InvalidDependencyVersionException;import org.apache.maven.project.artifact.MavenMetadataSource;import org.mortbay.jetty.plugin.util.PluginLog;/** * RuntimeDependencyResolver *  * This class is able to pull down a remote pom, find all of it's * dependencies and transitively resolve them. *  * */public class RuntimeDependencyResolver {    private ArtifactFactory artifactFactory;    private ArtifactResolver artifactResolver;    private ArtifactMetadataSource metadataSource;    private ArtifactRepository localRepository;    private List remoteRepositories;            /**     * RuntimeResolutionListener     *      * Just for debug printing of transitive resolution steps     *     */    class RuntimeResolutionListener implements ResolutionListener    {        public void testArtifact(Artifact arg0) { PluginLog.getLog().debug ("TESTING ARTIFACT "+arg0);}              public void startProcessChildren(Artifact arg0) {PluginLog.getLog().debug("STARTING CHILDREN "+arg0);}                      public void endProcessChildren(Artifact arg0) {PluginLog.getLog().debug("ENDING CHILDREN "+arg0);}        public void includeArtifact(Artifact arg0) {PluginLog.getLog().debug("INCLUDE ARTIFACT "+arg0);}        public void omitForNearer(Artifact arg0, Artifact arg1) {PluginLog.getLog().debug("OMITTING "+arg0+" for NEARER "+arg1);}                       public void updateScope(Artifact arg0, String arg1) {PluginLog.getLog().debug("UPDATE of SCOPE "+arg0+ "="+arg1);}                      public void manageArtifact(Artifact arg0, Artifact arg1) {PluginLog.getLog().debug("MANAGE ARTIFACT "+arg0+" and "+arg1); }                 public void omitForCycle(Artifact arg0) {PluginLog.getLog().debug("OMIT FOR CYCLE "+arg0);}                 public void updateScopeCurrentPom(Artifact arg0, String arg1) {PluginLog.getLog().debug("UPDATE SCOPE CURRENT POM "+arg0+"="+arg1);}        public void selectVersionFromRange(Artifact arg0) {PluginLog.getLog().debug("SELECT VERSION FROM RANGE "+arg0);}        public void restrictRange(Artifact arg0, Artifact arg1, VersionRange arg2) {PluginLog.getLog().debug("RESTRICT RANGE "+arg0+" "+arg1+" range="+arg2);}            }            public RuntimeDependencyResolver (ArtifactFactory artifactFactory, ArtifactResolver artifactResolver,             ArtifactMetadataSource metadataSource, ArtifactRepository localRepository, List remoteRepositories)    {        this.artifactFactory = artifactFactory;        this.artifactResolver = artifactResolver;        this.metadataSource = metadataSource;        this.localRepository = localRepository;        this.remoteRepositories = new ArrayList(remoteRepositories);    }            /**     * Download (if necessary) a pom, and load it as a MavenProject, transitively resolving any     * dependencies therein.     *      * @param projectBuilder     * @param groupId     * @param artifactId     * @param versionId     * @return a Set of Artifacts representing the transitively resolved dependencies.     *      * @throws MalformedURLException     * @throws ProjectBuildingException     * @throws InvalidDependencyVersionException     * @throws ArtifactResolutionException     * @throws ArtifactNotFoundException     */    public Set transitivelyResolvePomDependencies (MavenProjectBuilder projectBuilder, String groupId, String artifactId, String versionId, boolean resolveProjectArtifact)     throws MalformedURLException, ProjectBuildingException, InvalidDependencyVersionException, ArtifactResolutionException, ArtifactNotFoundException    {                Artifact pomArtifact = getPomArtifact(groupId, artifactId, versionId);        MavenProject project = loadPomAsProject(projectBuilder, pomArtifact);        List dependencies = project.getDependencies();                        Set dependencyArtifacts = MavenMetadataSource.createArtifacts( artifactFactory, dependencies, null, null, null );        dependencyArtifacts.add(project.getArtifact());                List listeners = Collections.EMPTY_LIST;                if (PluginLog.getLog().isDebugEnabled())        {            listeners = new ArrayList();            listeners.add(new RuntimeResolutionListener());        }                ArtifactResolutionResult result = artifactResolver.resolveTransitively(dependencyArtifacts, pomArtifact,                 Collections.EMPTY_MAP, localRepository, remoteRepositories, metadataSource, null, listeners);                Set artifacts = result.getArtifacts();                if (PluginLog.getLog().isDebugEnabled())        {            PluginLog.getLog().debug("RESOLVED "+artifacts.size()+" ARTIFACTS");            Iterator itor = artifacts.iterator();            while (itor.hasNext())            {                Artifact a = (Artifact)itor.next();                PluginLog.getLog().debug(a.getFile().toURL().toString());            }        }        return artifacts;    }            public MavenProject loadPomAsProject (MavenProjectBuilder projectBuilder, Artifact pomArtifact)     throws ProjectBuildingException    {        return projectBuilder.buildFromRepository(pomArtifact, remoteRepositories,localRepository);    }        public Artifact getArtifact (String groupId, String artifactId, String versionId, String type)    {        return this.artifactFactory.createBuildArtifact(groupId, artifactId, versionId, type);    }            public Artifact getPomArtifact (String groupId, String artifactId, String versionId)    {        return this.artifactFactory.createBuildArtifact(groupId, artifactId, versionId, "pom");    }        public void removeDependency (Set artifacts, String groupId, String artifactId, String versionId, String type)    {        if ((artifacts == null) || artifacts.isEmpty())            return;                Iterator itor = artifacts.iterator();        while (itor.hasNext())        {            Artifact a = (Artifact)itor.next();            if (a.getGroupId().equals(groupId) && a.getArtifactId().equals(artifactId) && a.getType().equals(type))            {                //remove if the versions match, or there was no version specified                if (versionId == null)                    itor.remove();                else if (a.getVersion().equals(versionId))                    itor.remove();                  }        }    }        public void addDependency (Set artifacts, String groupId, String artifactId, String versionId, String type)     throws ArtifactResolutionException, ArtifactNotFoundException    {        Artifact a = getArtifact(groupId, artifactId, versionId, type);        artifactResolver.resolve(a, remoteRepositories, localRepository);        artifacts.add(a);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -