@Override public boolean accept(Dependency dependency) { // We are only interested in 1.x Final versions higher than the current version // TODO: Consider the version string for 2.x and higher releases when porting. String version = dependency.getVersion(); return version.compareTo(runtimeVersion) > 0 && version.startsWith("1.") && version.endsWith(".Final"); } }
private DirectoryResource getOrCreatePluginModuleDirectory(final Dependency dep) { DirectoryResource pluginDir = environment.getPluginDirectory(); List<String> groupId = Arrays.asList(dep.getGroupId().split("\\.")); List<String> artifactId = Arrays.asList(dep.getArtifactId().split("\\.")); DirectoryResource dir = pluginDir; for (String segment : groupId) { dir = dir.getOrCreateChildDirectory(segment); } for (String segment : artifactId) { dir = dir.getOrCreateChildDirectory(segment); } dir = dir.getOrCreateChildDirectory(dep.getVersion()); return dir; }
/** * Convenience method which should be used to convert a {@link Dependency} object into its id representation, for * example: "groupId:artifactId:::version", "groupId:artifactId:packaging::version" or * "groupId:artifactId:packaging:classifier:version" * * @see {@link Dependency#toCoordinates()} */ public static String toId(final Dependency dep) { String gav = (dep.getGroupId() + ":" + dep.getArtifactId()); gav += ":" + (dep.getPackagingType() == null ? "" : dep.getPackagingType()); gav += ":" + (dep.getClassifier() == null ? "" : dep.getClassifier()); gav += ":" + (dep.getVersion() == null ? "" : dep.getVersion()); return gav; }
private DirectoryResource getOrCreatePluginDependenciesModuleDirectory(final Dependency dep) { DirectoryResource pluginDir = environment.getPluginDirectory(); List<String> groupId = Arrays.asList(dep.getGroupId().split("\\.")); List<String> artifactId = Arrays.asList(dep.getArtifactId().split("\\.")); DirectoryResource dir = pluginDir; for (String segment : groupId) { dir = dir.getOrCreateChildDirectory(segment); } for (String segment : artifactId) { dir = dir.getOrCreateChildDirectory(segment); } dir = dir.getOrCreateChildDirectory("dependencies"); dir = dir.getOrCreateChildDirectory(dep.getVersion()); return dir; }
@Override public Dependency installManaged(Project project, Dependency dependency, DependencyFilter filter) { DependencyFacet deps = project.getFacet(DependencyFacet.class); if (Strings.isNullOrEmpty(dependency.getVersion())) // we didn't request a specific version return promptAndUpdateManaged(deps, dependency, filter); else // we requested a specific version updateManagedDependency(deps, dependency); return dependency; }
@Command(value = "find-dependency", help = "Search for dependencies in all configured project repositories.") public void searchDep( @Option(required = true, help = "dependency identifier, ex: \"org.jboss.forge:forge-api:1.0.0\"", description = "[ groupId:artifactId {:version:scope:packaging} ]", type = PromptType.DEPENDENCY_ID ) Dependency gav, final PipeOut out ) { DependencyFacet deps = project.getFacet(DependencyFacet.class); if ((gav.getVersion() == null) || gav.getVersion().trim().isEmpty()) { gav = DependencyBuilder.create(gav).setVersion("[0,)"); } List<Dependency> versions = deps.resolveAvailableVersions(gav); for (Dependency dep : versions) { out.println(DependencyBuilder.toString(dep)); } if (versions.isEmpty()) { out.println("No artifacts found for the query [" + gav + "]"); } }
@Command(value = "find-managed-dependency", help = "Search for managed dependencies in all configured project repositories.") public void searchManDep( @Option(required = true, help = "managed dependency identifier, ex: \"org.jboss.forge:forge-api:1.0.0\"", description = "[ groupId:artifactId {:version:scope:packaging} ]", type = PromptType.DEPENDENCY_ID ) Dependency gav, @Option(required = false, flagOnly = true, help = "Perform a search only within the locally configured repository", name = "offlineSearch" ) final boolean offline, final PipeOut out ) { DependencyFacet manDeps = project.getFacet(DependencyFacet.class); if ((gav.getVersion() == null) || gav.getVersion().trim().isEmpty()) { gav = DependencyBuilder.create(gav).setVersion("[0,)"); } List<Dependency> versions = manDeps.resolveAvailableVersions(gav); for (Dependency manDep : versions) { out.println(DependencyBuilder.toString(manDep)); } if (versions.isEmpty()) { out.println("No artifacts found for the query [" + gav + "]"); } }
private List<DependencyResource> resolveArtifacts(final Project project, final Dependency dep) { Dependency d = dep; List<DependencyResource> artifacts = new ArrayList<DependencyResource>(); DependencyFacet deps = project.getFacet(DependencyFacet.class); for (Dependency d2 : deps.getDependencies()) { if (DependencyBuilder.areEquivalent(d, d2) && (d2.getVersion() != null)) { d = d2; break; } } if (artifacts.size() != 1) { artifacts = resolver.resolveArtifacts(d, deps.getRepositories()); } if (artifacts.size() != 1) { ShellMessages.warn(shell, "Could not resolve dependency [" + d.toCoordinates() + "]"); } return artifacts; }
.getPackagingType() == null; boolean scopeTypeEquals = scopeType != null ? scopeType.equals(that.getScopeType()) : that.getScopeType() == null; boolean versionEquals = version != null ? version.equals(that.getVersion()) : that.getVersion() == null; boolean classifierEquals = classifier != null ? classifier.equals(that.getClassifier()) : that.getClassifier() == null;
@Override public Dependency installManaged(Project project, Dependency dependency, ScopeType type, DependencyFilter filter) { DependencyFacet deps = project.getFacet(DependencyFacet.class); DependencyBuilder withScopeType = getWithScopeType(dependency, type); if (Strings.isNullOrEmpty(dependency.getVersion())) // we didn't request a specific version return promptAndUpdateManaged(deps, withScopeType, filter); else // we requested a specific version updateManagedDependency(deps, withScopeType); return withScopeType; }
private DependencyBuilder getWithScopeType(final Dependency dependency, final ScopeType type) { return DependencyBuilder.create(dependency).setVersion(dependency.getVersion()) .setScopeType(type == null ? dependency.getScopeType() : type.toString()) .setPackagingType(dependency.getPackagingType()); }
@Override public boolean install() { DependencyFacet deps = project.getFacet(DependencyFacet.class); List<Dependency> versions = deps.resolveAvailableVersions("org.jboss.forge:forge-shell-api:[,]"); Dependency version = shell.promptChoiceTyped("Install which version of the Forge API?", versions, versions.get(versions.size() - 1)); deps.setProperty("forge.api.version", version.getVersion()); DependencyBuilder apiDep = DependencyBuilder.create("org.jboss.forge:forge-shell-api:${forge.api.version}") .setScopeType(ScopeType.PROVIDED); DependencyBuilder testDep = DependencyBuilder.create("org.jboss.forge:forge-test-harness:${forge.api.version}") .setScopeType(ScopeType.TEST); DependencyBuilder testShellDep = DependencyBuilder.create("org.jboss.forge:forge-shell:${forge.api.version}") .setScopeType(ScopeType.TEST); installer.install(project, apiDep); installer.install(project, testDep); installer.install(project, testShellDep); project.getFacet(ResourceFacet.class).createResource("<forge/>".toCharArray(), "META-INF/forge.xml"); return true; }
private void install() throws XmlPullParserException, IOException { MavenCoreFacet mvn = project.getFacet(MavenCoreFacet.class); Model pom = mvn.getPOM(); org.apache.maven.model.Plugin plugin = new org.apache.maven.model.Plugin(); plugin.setArtifactId(dep.getArtifactId()); plugin.setGroupId(dep.getGroupId()); plugin.setVersion(dep.getVersion()); Xpp3Dom dom = Xpp3DomBuilder.build(new ByteArrayInputStream("<configuration></configuration>".getBytes()), "UTF-8"); List<PluginExecution> executions = plugin.getExecutions(); PluginExecution execution = new PluginExecution(); execution.setPhase("package"); execution.addGoal("shade"); execution.setConfiguration(dom); executions.add(execution); pom.getBuild().getPlugins().add(plugin); mvn.setPOM(pom); }
/** * Unpacks the dependency info a specific folder * * @param dependency */ private void updateForge(final Dependency dependency) throws IOException { wait.start("Update in progress. Please wait"); List<DependencyResource> resolvedArtifacts = resolver.resolveArtifacts(dependency); Assert.isTrue(resolvedArtifacts.size() == 1, "Artifact was not found"); DependencyResource resource = resolvedArtifacts.get(0); DirectoryResource forgeHome = environment.getForgeHome(); Files.unzip(resource.getUnderlyingResourceObject(), forgeHome.getUnderlyingResourceObject()); DirectoryResource childDirectory = forgeHome.getChildDirectory(dependency.getArtifactId() + "-" + dependency.getVersion()); DirectoryResource updateDirectory = forgeHome.getChildDirectory(".update"); if (updateDirectory.exists()) { updateDirectory.delete(true); } childDirectory.renameTo(updateDirectory); wait.stop(); ShellMessages.success(shell, "Forge will now restart to complete the update..."); System.exit(0); } }
existingDep.getGroupId(), existingDep.getArtifactId(), existingDep.getVersion()), true)) if (Strings.isNullOrEmpty(gavCopy.getVersion()))
private void createDependenciesModule(final Project project, final Dependency dep) { DirectoryResource dependencyDir = getOrCreatePluginDependenciesModuleDirectory(dep); String pluginName = dep.getGroupId() + "." + dep.getArtifactId(); String pluginSlot = dep.getVersion(); FileResource<?> moduleXml = (FileResource<?>) dependencyDir.getChild("module.xml"); moduleXml.delete(); moduleXml.createNewFile(); // <resource-root path="maven-dependency.jar" /> Node module = XMLParser.parse(getClass().getResourceAsStream(MODULE_TEMPLATE_XML)); module.attribute("name", pluginName + ".dependencies"); module.attribute("slot", pluginSlot); Node resources = module.getSingle("resources"); // <module name="org.jboss.forge:main" /> Node dependencies = module.getSingle("dependencies"); dependencies.createChild("module").attribute("name", "javax.api"); dependencies.createChild("module").attribute("name", "org.jboss.forge.shell.api"); writeResourceRoots(project, module, dependencyDir, resources); // Write out the module XML file. moduleXml.setContents(XMLParser.toXMLString(module)); }
public static DependencyBuilder create(final Dependency dep) { DependencyBuilder builder = new DependencyBuilder(); builder.setGroupId(dep.getGroupId()); builder.setArtifactId(dep.getArtifactId()); builder.setVersion(dep.getVersion()); builder.setPackagingType(dep.getPackagingType()); builder.setScopeType(dep.getScopeType()); builder.setClassifier(dep.getClassifier()); builder.setSystemPath(dep.getSystemPath()); return builder; }
shell.println(ShellColor.BOLD, forgeDistribution.getVersion()); if (prompt.promptBoolean("Is that ok ?", true))
if (Strings.isNullOrEmpty(aptDependency.getVersion()))
String pluginSlot = dep.getVersion();