X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc.repo%2Fsrc%2Forg%2Fargeo%2Fslc%2Frepo%2Fmaven%2FMavenConventionsUtils.java;h=f3e359fc9eae761046b3de4019c91f3d05158a0f;hb=d64292c93f4a3532576e98f651344d89e883e2aa;hp=4e8d3fb832f54ac6c6f24d905e4c8850682f3209;hpb=b9505fef5ba8186433e903e9de3c73c17bdf6562;p=gpl%2Fargeo-slc.git
diff --git a/org.argeo.slc.repo/src/org/argeo/slc/repo/maven/MavenConventionsUtils.java b/org.argeo.slc.repo/src/org/argeo/slc/repo/maven/MavenConventionsUtils.java
index 4e8d3fb83..f3e359fc9 100644
--- a/org.argeo.slc.repo/src/org/argeo/slc/repo/maven/MavenConventionsUtils.java
+++ b/org.argeo.slc.repo/src/org/argeo/slc/repo/maven/MavenConventionsUtils.java
@@ -1,44 +1,17 @@
-/*
- * Copyright (C) 2007-2012 Argeo GmbH
- *
- * 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.argeo.slc.repo.maven;
import java.io.File;
-import java.util.Properties;
import java.util.Set;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.SlcException;
-import org.argeo.slc.aether.AetherTemplate;
-import org.sonatype.aether.artifact.Artifact;
-import org.sonatype.aether.util.artifact.DefaultArtifact;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
+import org.argeo.api.cms.CmsLog;
+import org.eclipse.aether.artifact.Artifact;
/**
* Static utilities around Maven which are NOT using the Maven APIs (conventions
* based).
*/
public class MavenConventionsUtils {
- private final static Log log = LogFactory
- .getLog(MavenConventionsUtils.class);
+ private final static CmsLog log = CmsLog.getLog(MavenConventionsUtils.class);
/**
* Path to the file identified by this artifact without using Maven
@@ -48,8 +21,8 @@ public class MavenConventionsUtils {
* @see MavenConventionsUtils#artifactToFile(String, Artifact)
*/
public static File artifactToFile(Artifact artifact) {
- return artifactToFile(System.getProperty("user.home") + File.separator
- + ".m2" + File.separator + "repository", artifact);
+ return artifactToFile(System.getProperty("user.home") + File.separator + ".m2" + File.separator + "repository",
+ artifact);
}
/**
@@ -62,81 +35,74 @@ public class MavenConventionsUtils {
* the artifact
*/
public static File artifactToFile(String repositoryPath, Artifact artifact) {
- return new File(repositoryPath + File.separator
- + artifact.getGroupId().replace('.', File.separatorChar)
- + File.separator + artifact.getArtifactId() + File.separator
- + artifact.getVersion() + File.separator
+ return new File(repositoryPath + File.separator + artifact.getGroupId().replace('.', File.separatorChar)
+ + File.separator + artifact.getArtifactId() + File.separator + artifact.getVersion() + File.separator
+ artifactFileName(artifact)).getAbsoluteFile();
}
/** The file name of this artifact when stored */
public static String artifactFileName(Artifact artifact) {
- return artifact.getArtifactId()
- + '-'
- + artifact.getVersion()
- + (artifact.getClassifier().equals("") ? "" : '-' + artifact
- .getClassifier()) + '.' + artifact.getExtension();
+ return artifact.getArtifactId() + '-' + artifact.getVersion()
+ + (artifact.getClassifier().equals("") ? "" : '-' + artifact.getClassifier()) + '.'
+ + artifact.getExtension();
}
/** Absolute path to the file */
public static String artifactPath(String artifactBasePath, Artifact artifact) {
- return artifactParentPath(artifactBasePath, artifact) + '/'
- + artifactFileName(artifact);
+ return artifactParentPath(artifactBasePath, artifact) + '/' + artifactFileName(artifact);
+ }
+
+ /** Absolute path to the file */
+ public static String artifactUrl(String repoUrl, Artifact artifact) {
+ if (repoUrl.endsWith("/"))
+ return repoUrl + artifactPath("/", artifact).substring(1);
+ else
+ return repoUrl + artifactPath("/", artifact);
}
/** Absolute path to the directories where the files will be stored */
- public static String artifactParentPath(String artifactBasePath,
- Artifact artifact) {
- return artifactBasePath + (artifactBasePath.endsWith("/") ? "" : "/")
- + artifactParentPath(artifact);
+ public static String artifactParentPath(String artifactBasePath, Artifact artifact) {
+ return artifactBasePath + (artifactBasePath.endsWith("/") ? "" : "/") + artifactParentPath(artifact);
}
/** Absolute path to the directory of this group */
public static String groupPath(String artifactBasePath, String groupId) {
- return artifactBasePath + (artifactBasePath.endsWith("/") ? "" : "/")
- + groupId.replace('.', '/');
+ return artifactBasePath + (artifactBasePath.endsWith("/") ? "" : "/") + groupId.replace('.', '/');
}
/** Relative path to the directories where the files will be stored */
public static String artifactParentPath(Artifact artifact) {
- return artifact.getGroupId().replace('.', '/') + '/'
- + artifact.getArtifactId() + '/' + artifact.getBaseVersion();
+ return artifact.getGroupId().replace('.', '/') + '/' + artifact.getArtifactId() + '/'
+ + artifact.getBaseVersion();
}
- public static String artifactsAsDependencyPom(Artifact pomArtifact,
- Set artifacts, Artifact parent) {
+ public static String artifactsAsDependencyPom(Artifact pomArtifact, Set artifacts, Artifact parent) {
StringBuffer p = new StringBuffer();
// XML header
p.append("\n");
- p.append("\n");
+ p.append(
+ "\n");
p.append("4.0.0\n");
// Artifact
if (parent != null) {
p.append("\n");
- p.append("").append(parent.getGroupId())
- .append("\n");
- p.append("").append(parent.getArtifactId())
- .append("\n");
- p.append("").append(parent.getVersion())
- .append("\n");
+ p.append("").append(parent.getGroupId()).append("\n");
+ p.append("").append(parent.getArtifactId()).append("\n");
+ p.append("").append(parent.getVersion()).append("\n");
p.append("\n");
}
- p.append("").append(pomArtifact.getGroupId())
- .append("\n");
- p.append("").append(pomArtifact.getArtifactId())
- .append("\n");
- p.append("").append(pomArtifact.getVersion())
- .append("\n");
+ p.append("").append(pomArtifact.getGroupId()).append("\n");
+ p.append("").append(pomArtifact.getArtifactId()).append("\n");
+ p.append("").append(pomArtifact.getVersion()).append("\n");
p.append("pom\n");
// Dependencies
p.append("\n");
for (Artifact a : artifacts) {
p.append("\t");
- p.append("").append(a.getArtifactId())
- .append("");
+ p.append("").append(a.getArtifactId()).append("");
p.append("").append(a.getGroupId()).append("");
if (!a.getExtension().equals("jar"))
p.append("").append(a.getExtension()).append("");
@@ -149,8 +115,7 @@ public class MavenConventionsUtils {
p.append("\n");
for (Artifact a : artifacts) {
p.append("\t");
- p.append("").append(a.getArtifactId())
- .append("");
+ p.append("").append(a.getArtifactId()).append("");
p.append("").append(a.getVersion()).append("");
p.append("").append(a.getGroupId()).append("");
if (a.getExtension().equals("pom")) {
@@ -171,77 +136,66 @@ public class MavenConventionsUtils {
return p.toString();
}
- /**
- * Directly parses Maven POM XML format in order to find all artifacts
- * references under the dependency and dependencyManagement tags. This is
- * meant to migrate existing pom registering a lot of artifacts, not to
- * replace Maven resolving.
- */
- public static void gatherPomDependencies(AetherTemplate aetherTemplate,
- Set artifacts, Artifact pomArtifact) {
- if (log.isDebugEnabled())
- log.debug("Gather dependencies for " + pomArtifact);
-
- try {
- File file = aetherTemplate.getResolvedFile(pomArtifact);
- DocumentBuilder documentBuilder = DocumentBuilderFactory
- .newInstance().newDocumentBuilder();
- Document doc = documentBuilder.parse(file);
-
- // properties
- Properties props = new Properties();
- props.setProperty("project.version", pomArtifact.getBaseVersion());
- NodeList properties = doc.getElementsByTagName("properties");
- if (properties.getLength() > 0) {
- NodeList propertiesElems = properties.item(0).getChildNodes();
- for (int i = 0; i < propertiesElems.getLength(); i++) {
- if (propertiesElems.item(i) instanceof Element) {
- Element property = (Element) propertiesElems.item(i);
- props.put(property.getNodeName(),
- property.getTextContent());
- }
- }
- }
-
- // dependencies (direct and dependencyManagement)
- NodeList dependencies = doc.getElementsByTagName("dependency");
- for (int i = 0; i < dependencies.getLength(); i++) {
- Element dependency = (Element) dependencies.item(i);
- String groupId = dependency.getElementsByTagName("groupId")
- .item(0).getTextContent().trim();
- String artifactId = dependency
- .getElementsByTagName("artifactId").item(0)
- .getTextContent().trim();
- String version = dependency.getElementsByTagName("version")
- .item(0).getTextContent().trim();
- if (version.startsWith("${")) {
- String versionKey = version.substring(0,
- version.length() - 1).substring(2);
- if (!props.containsKey(versionKey))
- throw new SlcException("Cannot interpret version "
- + version);
- version = props.getProperty(versionKey);
- }
- NodeList scopes = dependency.getElementsByTagName("scope");
- if (scopes.getLength() > 0
- && scopes.item(0).getTextContent().equals("import")) {
- // recurse
- gatherPomDependencies(aetherTemplate, artifacts,
- new DefaultArtifact(groupId, artifactId, "pom",
- version));
- } else {
- // TODO: deal with scope?
- // TODO: deal with type
- String type = "jar";
- Artifact artifact = new DefaultArtifact(groupId,
- artifactId, type, version);
- artifacts.add(artifact);
- }
- }
- } catch (Exception e) {
- throw new SlcException("Cannot process " + pomArtifact, e);
- }
- }
+// /**
+// * Directly parses Maven POM XML format in order to find all artifacts
+// * references under the dependency and dependencyManagement tags. This is
+// * meant to migrate existing pom registering a lot of artifacts, not to
+// * replace Maven resolving.
+// */
+// public static void gatherPomDependencies(AetherTemplate aetherTemplate, Set artifacts,
+// Artifact pomArtifact) {
+// if (log.isDebugEnabled())
+// log.debug("Gather dependencies for " + pomArtifact);
+//
+// try {
+// File file = aetherTemplate.getResolvedFile(pomArtifact);
+// DocumentBuilder documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+// Document doc = documentBuilder.parse(file);
+//
+// // properties
+// Properties props = new Properties();
+// props.setProperty("project.version", pomArtifact.getBaseVersion());
+// NodeList properties = doc.getElementsByTagName("properties");
+// if (properties.getLength() > 0) {
+// NodeList propertiesElems = properties.item(0).getChildNodes();
+// for (int i = 0; i < propertiesElems.getLength(); i++) {
+// if (propertiesElems.item(i) instanceof Element) {
+// Element property = (Element) propertiesElems.item(i);
+// props.put(property.getNodeName(), property.getTextContent());
+// }
+// }
+// }
+//
+// // dependencies (direct and dependencyManagement)
+// NodeList dependencies = doc.getElementsByTagName("dependency");
+// for (int i = 0; i < dependencies.getLength(); i++) {
+// Element dependency = (Element) dependencies.item(i);
+// String groupId = dependency.getElementsByTagName("groupId").item(0).getTextContent().trim();
+// String artifactId = dependency.getElementsByTagName("artifactId").item(0).getTextContent().trim();
+// String version = dependency.getElementsByTagName("version").item(0).getTextContent().trim();
+// if (version.startsWith("${")) {
+// String versionKey = version.substring(0, version.length() - 1).substring(2);
+// if (!props.containsKey(versionKey))
+// throw new SlcException("Cannot interpret version " + version);
+// version = props.getProperty(versionKey);
+// }
+// NodeList scopes = dependency.getElementsByTagName("scope");
+// if (scopes.getLength() > 0 && scopes.item(0).getTextContent().equals("import")) {
+// // recurse
+// gatherPomDependencies(aetherTemplate, artifacts,
+// new DefaultArtifact(groupId, artifactId, "pom", version));
+// } else {
+// // TODO: deal with scope?
+// // TODO: deal with type
+// String type = "jar";
+// Artifact artifact = new DefaultArtifact(groupId, artifactId, type, version);
+// artifacts.add(artifact);
+// }
+// }
+// } catch (Exception e) {
+// throw new SlcException("Cannot process " + pomArtifact, e);
+// }
+// }
/** Prevent instantiation */
private MavenConventionsUtils() {