Author: jbonofre
Date: Sat Mar 3 10:12:26 2012
New Revision: 1296591
URL: http://svn.apache.org/viewvc?rev=1296591&view=rev
Log:
[KARAF-1247] Generate the maven-metadata-local.xml for local bundles
Modified:
karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/InstallKarsMojo.java
karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/MavenUtil.java
Modified:
karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/InstallKarsMojo.java
URL:
http://svn.apache.org/viewvc/karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/InstallKarsMojo.java?rev=1296591&r1=1296590&r2=1296591&view=diff
==============================================================================
---
karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/InstallKarsMojo.java
(original)
+++
karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/InstallKarsMojo.java
Sat Mar 3 10:12:26 2012
@@ -271,6 +271,25 @@ public class InstallKarsMojo extends Moj
File target = new File(system.resolve(path));
if (!target.exists()) {
install(buffer, key, target);
+ Artifact artifact = MavenUtil.mvnToArtifact(key);
+ if (artifact.isSnapshot()) {
+ // generate maven-metadata-local.xml for the
artifact
+ File metadataSource = new
File(resolve(key).getParentFile(), "maven-metadata-local.xml");
+ File metadataTarget = new
File(target.getParentFile(), "maven-metadata-local.xml");
+ metadataTarget.getParentFile().mkdirs();
+ try {
+ if (!metadataSource.exists()) {
+ // the maven-metadata-local.xml
doesn't exist in the local repo, generate one
+
MavenUtil.generateMavenMetadata(artifact, metadataTarget);
+ } else {
+ // copy the metadata to the target
+ copy(buffer, metadataSource,
metadataTarget);
+ }
+ } catch (IOException ioException) {
+ getLog().warn(ioException);
+ getLog().warn("Unable to copy the
maven-metadata-local.xml, it means that this SNAPSHOT will be overwritten by a
remote one (if exist)");
+ }
+ }
}
}
}
@@ -296,23 +315,27 @@ public class InstallKarsMojo extends Moj
File source = resolve(key);
target.getParentFile().mkdirs();
try {
- InputStream is = new FileInputStream(source);
- BufferedOutputStream bos = new BufferedOutputStream(new
FileOutputStream(target));
- int count = 0;
- while ((count = is.read(buffer)) > 0) {
- bos.write(buffer, 0, count);
- }
- bos.close();
+ copy(buffer, source, target);
} catch (IOException e) {
getLog().error("Could not copy bundle " + key, e);
}
}
+
+ private void copy(byte[] buffer, File source, File target) throws
IOException {
+ target.getParentFile().mkdirs();
+ InputStream is = new FileInputStream(source);
+ BufferedOutputStream bos = new BufferedOutputStream(new
FileOutputStream(target));
+ int count = 0;
+ while ((count = is.read(buffer)) > 0) {
+ bos.write(buffer, 0, count);
+ }
+ bos.close();
+ }
private boolean acceptScope(Artifact artifact) {
return "compile".equals(artifact.getScope()) ||
"runtime".equals(artifact.getScope());
}
-
public File resolve(String id) {
id = MavenUtil.mvnToAether(id);
ArtifactRequest request = new ArtifactRequest();
Modified:
karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/MavenUtil.java
URL:
http://svn.apache.org/viewvc/karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/MavenUtil.java?rev=1296591&r1=1296590&r2=1296591&view=diff
==============================================================================
---
karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/MavenUtil.java
(original)
+++
karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/MavenUtil.java
Sat Mar 3 10:12:26 2012
@@ -28,6 +28,8 @@ import java.util.regex.Pattern;
import org.apache.maven.RepositoryUtils;
import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.factory.DefaultArtifactFactory;
import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
import org.apache.maven.artifact.repository.metadata.Metadata;
import org.apache.maven.artifact.repository.metadata.Snapshot;
@@ -175,6 +177,13 @@ public class MavenUtil {
private static boolean isEmpty(String classifier) {
return classifier == null || classifier.length() == 0;
}
+
+ static Artifact mvnToArtifact(String name) {
+ name = mvnToAether(name);
+ DefaultArtifact artifact = new DefaultArtifact(name);
+ Artifact mavenArtifact = RepositoryUtils.toArtifact(artifact);
+ return mavenArtifact;
+ }
/**
* Generate the maven-metadata-local.xml for the given Maven
<code>Artifact</code>.